ApprenticeFoundryBlazorThreeJS 22.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package ApprenticeFoundryBlazorThreeJS --version 22.0.0
                    
NuGet\Install-Package ApprenticeFoundryBlazorThreeJS -Version 22.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ApprenticeFoundryBlazorThreeJS" Version="22.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ApprenticeFoundryBlazorThreeJS" Version="22.0.0" />
                    
Directory.Packages.props
<PackageReference Include="ApprenticeFoundryBlazorThreeJS" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ApprenticeFoundryBlazorThreeJS --version 22.0.0
                    
#r "nuget: ApprenticeFoundryBlazorThreeJS, 22.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ApprenticeFoundryBlazorThreeJS@22.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ApprenticeFoundryBlazorThreeJS&version=22.0.0
                    
Install as a Cake Addin
#tool nuget:?package=ApprenticeFoundryBlazorThreeJS&version=22.0.0
                    
Install as a Cake Tool

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

  1. Setup: Add the BlazorThreeJS package to your Blazor project.
  2. Import: Import the necessary namespaces in your Blazor components.
  3. 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

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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