ApprenticeFoundryBlazorThreeJS 22.0.0
See the version list below for details.
dotnet add package ApprenticeFoundryBlazorThreeJS --version 22.0.0
NuGet\Install-Package ApprenticeFoundryBlazorThreeJS -Version 22.0.0
<PackageReference Include="ApprenticeFoundryBlazorThreeJS" Version="22.0.0" />
<PackageVersion Include="ApprenticeFoundryBlazorThreeJS" Version="22.0.0" />
<PackageReference Include="ApprenticeFoundryBlazorThreeJS" />
paket add ApprenticeFoundryBlazorThreeJS --version 22.0.0
#r "nuget: ApprenticeFoundryBlazorThreeJS, 22.0.0"
#:package ApprenticeFoundryBlazorThreeJS@22.0.0
#addin nuget:?package=ApprenticeFoundryBlazorThreeJS&version=22.0.0
#tool nuget:?package=ApprenticeFoundryBlazorThreeJS&version=22.0.0
BlazorThreeJS
BlazorThreeJS is a NuGet package that provides seamless integration of the Three.js library with Blazor applications. This package allows developers to create rich 3D graphics and animations using the power of Three.js within a Blazor project.
Features
- Easy integration of Three.js with Blazor
- Create and manipulate 3D objects and scenes
- 🆕 Custom Pivot Points: Rotate objects around any point (e.g., bottom face on floor)
- Full C# API with strong typing and intellisense
- Advanced transform system with position, rotation, scale, and pivot support
- Support for animations with customizable update callbacks
- Hierarchical scene management with parent-child relationships
- Performance optimized with matrix caching and dirty-flag system
- Comprehensive documentation and examples
Installation
To install BlazorThreeJS, run the following command in the NuGet Package Manager Console:
Install-Package BlazorThreeJS
Alternatively, you can add the package reference directly to your .csproj
file:
<PackageReference Include="BlazorThreeJS" Version="17.1.0" />
Getting Started
- Setup: Add the BlazorThreeJS package to your Blazor project.
- Import: Import the necessary namespaces in your Blazor components.
- Create: Use the provided components and services to create and manipulate 3D scenes.
Basic Example
@page "/3d-scene"
@using BlazorThreeJS.Viewers
@using BlazorThreeJS.Core
@using BlazorThreeJS.Maths
<Canvas3DComponent SceneName="MyScene" @ref="CanvasRef"
CanvasWidth="800" CanvasHeight="600" />
@code {
private Canvas3DComponent? CanvasRef;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender && CanvasRef != null)
{
await CreateScene();
}
}
private async Task CreateScene()
{
// Create a box that rotates around its bottom face
var box = new Mesh3D("FloorBox")
{
Transform = new Transform3("FloorBox")
{
Position = new Vector3(0, 0, 0), // Position on floor
Pivot = new Vector3(0, -1, 0), // Rotate around bottom
Rotation = new Euler(0, 45 * Math.PI/180, 0), // 45° rotation
Scale = Vector3.One
},
// Add geometry and material...
};
await CanvasRef.AddObjectToScene(box);
}
}
Custom Pivot Points (New Feature!)
One of the most powerful new features is the ability to set custom pivot points for object rotation:
Bottom Face on Floor
// Perfect for placing objects on the ground
var box = new Mesh3D("FloorBox")
{
Transform = new Transform3("FloorBox")
{
Position = new Vector3(0, 0, 0), // Floor position
Pivot = new Vector3(0, -1, 0), // Rotate around bottom face
// Now rotations happen around the bottom edge, not center
}
};
Rotate Around Corner
// Rotate around bottom-left-front corner
var box = new Mesh3D("CornerBox")
{
Transform = new Transform3("CornerBox")
{
Position = new Vector3(0, 0, 0),
Pivot = new Vector3(-1, -2, -3), // Corner offset
Rotation = new Euler(0, 90 * Math.PI/180, 0) // 90° Y rotation
}
};
Custom Rotation Center
// Rotate around a point above the object
var mesh = new Mesh3D("HighPivot")
{
Transform = new Transform3("HighPivot")
{
Position = new Vector3(0, 5, 0), // Pivot point location
Pivot = new Vector3(0, -5, 0), // Object offset from pivot
// Object appears at (0,0,0) but rotates around (0,5,0)
}
};
Backward Compatibility
Objects with pivot (0,0,0)
work exactly as before - no changes needed to existing code!
Architecture & Performance
BlazorThreeJS features a sophisticated architecture:
- C# Layer: Strongly-typed object model with
Object3D
,Transform3
,Mesh3D
, etc. - TypeScript Layer: Efficient Three.js integration with automatic object lifecycle management
- Smart Caching: Transformation matrices are cached and only recalculated when needed
- Automatic Interop: Changes in C# automatically sync to the Three.js scene
Transform System
The Transform3
class provides robust transformation capabilities:
public class Transform3
{
public Vector3 Position { get; set; } // World position
public Vector3 Pivot { get; set; } // Custom rotation center (NEW!)
public Euler Rotation { get; set; } // Euler angle rotation
public Quaternion QuaternionRotation { get; set; } // Alternative rotation
public Vector3 Scale { get; set; } // Scale factors
// Automatic matrix caching with dirty flag optimization
public Matrix3 ToMatrix3() { /* Cached calculation */ }
}
Documentation
- Pivot Implementation Analysis: Technical details of the pivot system
- Pivot Usage Examples: Comprehensive examples and use cases
- Sample Scene: Complete scene example with various objects
- Official Documentation: Full API reference and guides
License
This project is licensed under the MIT License. See the LICENSE file for more details.
Contact
For any questions or feedback, please open an issue on the GitHub repository.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- ApprenticeFoundryRulesAndUnits (>= 8.1.0)
- Blazor.Extensions.Canvas (>= 1.1.1)
- BlazorComponentBus (>= 2.2.0)
- Microsoft.AspNetCore.Components.Web (>= 9.0.7)
- System.Text.Json (>= 9.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ApprenticeFoundryBlazorThreeJS:
Package | Downloads |
---|---|
ApprenticeFoundryBlazor
A comprehensive C# / Blazor diagramming library that combines 2D and 3D visualization capabilities. Supports .NET 9, includes advanced layout algorithms, glued connections, multi-page diagrams, and seamless 2D/3D integration. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
23.1.0 | 39 | 9/24/2025 |
23.0.0 | 42 | 9/23/2025 |
22.0.0 | 64 | 9/22/2025 |
21.0.0 | 175 | 9/10/2025 |
20.3.0 | 176 | 8/11/2025 |
20.2.0 | 93 | 8/10/2025 |
20.0.1 | 105 | 8/9/2025 |
20.0.0 | 120 | 8/9/2025 |
19.0.0 | 112 | 7/28/2025 |
18.3.0 | 209 | 4/6/2025 |
18.2.0 | 331 | 3/2/2025 |
18.1.0 | 158 | 3/2/2025 |
18.0.0 | 178 | 2/23/2025 |
17.4.1 | 158 | 2/11/2025 |
17.4.0 | 140 | 2/9/2025 |
17.3.0 | 151 | 1/30/2025 |
17.2.2 | 140 | 1/28/2025 |
17.1.2 | 181 | 1/28/2025 |
17.1.1 | 127 | 1/27/2025 |
17.1.0 | 123 | 1/27/2025 |
16.2.0 | 141 | 11/17/2024 |
16.1.0 | 236 | 11/16/2024 |
16.0.0 | 158 | 11/10/2024 |
15.4.0 | 138 | 11/4/2024 |
15.3.0 | 148 | 10/30/2024 |
15.2.0 | 339 | 9/12/2024 |
15.1.0 | 139 | 9/12/2024 |
15.0.0 | 139 | 9/12/2024 |
14.2.0 | 248 | 8/28/2024 |
14.1.0 | 251 | 8/21/2024 |
14.0.0 | 167 | 8/21/2024 |
4.4.0 | 157 | 8/20/2024 |
4.3.0 | 170 | 8/10/2024 |
4.2.0 | 538 | 7/19/2024 |
4.1.0 | 278 | 5/6/2024 |
4.0.0 | 283 | 3/12/2024 |
3.1.0 | 239 | 2/14/2024 |
3.0.1 | 447 | 12/11/2023 |
3.0.0 | 232 | 11/26/2023 |
2.2.3 | 271 | 11/18/2023 |
2.2.2 | 195 | 11/16/2023 |
2.2.1 | 173 | 11/14/2023 |
2.2.0 | 161 | 11/14/2023 |
2.1.5 | 1,137 | 10/2/2023 |
2.0.5 | 226 | 10/1/2023 |