ZeroScan3D.Core 1.0.0

dotnet add package ZeroScan3D.Core --version 1.0.0
                    
NuGet\Install-Package ZeroScan3D.Core -Version 1.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="ZeroScan3D.Core" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ZeroScan3D.Core" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="ZeroScan3D.Core" />
                    
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 ZeroScan3D.Core --version 1.0.0
                    
#r "nuget: ZeroScan3D.Core, 1.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 ZeroScan3D.Core@1.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=ZeroScan3D.Core&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=ZeroScan3D.Core&version=1.0.0
                    
Install as a Cake Tool

ZeroScan3D

Build & Test License: MIT ZeroPlatform Tier

ZeroScan3D is a sovereign, high-performance, pure C# 3D spatial scanning, Visual SLAM (Simultaneous Localization and Mapping), and continuous surface reconstruction library for modern .NET environments.

Part of the ZeroPlatform sovereign ecosystem (Tier 3: Perception & Intelligence), ZeroScan3D enables cameras (Intel RealSense, Microsoft Azure Kinect, Orbbec, synthetic sensors) to scan physical environments in real time, estimate 6-DOF camera trajectories, incrementally fuse 3D point clouds into sparse voxel grids, and reconstruct continuous triangle meshes via Truncated Signed Distance Fields (TSDF) and Marching Cubes.


Key Features

  • Sovereign Pure C#: Zero native C++ binaries, zero P/Invoke dependencies, zero wrappers. Runs cross-platform on Windows, Linux, macOS, and embedded runtimes.
  • Pinhole Camera Intrinsics: Configurable focal lengths ($f_x, f_y$), principal points ($c_x, c_y$), and depth scaling with bidirectional 2D $\leftrightarrow$ 3D projection. Presets for RealSense D435 and Azure Kinect.
  • Fast Depth Unprojector: Parallel unprojection of raw 16-bit or floating-point depth maps into 3D Euclidean points with optional synchronized RGB color channels.
  • 6-DOF Visual Odometry (VO): Scan-to-scan rigid pose tracking using Iterative Closest Point (ICP) registration backed by ZeroGeometry spatial Kd-Trees.
  • Sparse Voxel Grid Mapping: Spatial hash grid fusing incoming 3D observations into running-average centroid positions and RGB color values with statistical noise filtering.
  • TSDF Volumetric Field: Projective Truncated Signed Distance Field grid representing continuous surfaces with sub-voxel precision.
  • Marching Cubes Surface Meshing: Pure C# implementation of Lorensen & Cline (1987) with 256-case edge tables, producing indexed triangular meshes with vertex normals.
  • Wavefront OBJ & Stanford PLY Exporters: Export reconstructed 3D point clouds and meshes directly to standard formats for Blender, MeshLab, CloudCompare, or Three.js.
  • Multi-Targeting: Targets netstandard2.0, net462, and net8.0.

Architecture (Tier 3 Placement)

+-------------------------------------------------------------------+
|                        ZeroScan3D.Core                            |
+--------------------+---------------------+------------------------+
| Camera & Projection| Tracking & SLAM     | Mapping & Meshing      |
| - CameraIntrinsics | - CameraPose (6-DOF)| - SpatialVoxel         |
| - RgbdFrame        | - VisualOdometry    | - VoxelGridMap         |
| - DepthUnprojector | - ICP Registration  | - TsdfVolume           |
| - RgbColor         | - OdometryTelemetry | - MarchingCubes        |
| - ColoredPoint3D   |                     | - Mesh3D (OBJ/PLY)     |
+--------------------+---------------------+------------------------+
| Orchestration: SpatialScanner (Frame -> Track -> Fuse -> Reconstruct)|
+-------------------------------------------------------------------+
            |                                   |
            v                                   v
+-----------------------+           +-----------------------+
|  ZeroGeometry.Core    |           |  ZeroPrimitives.Core  |
|  (Tier 2: Math/Geo)   |           |  (Tier 0: Primitives) |
+-----------------------+           +-----------------------+

Quick Start

1. Ingest Depth Frame & Unproject to 3D Point Cloud

using ZeroScan3D.Core.Camera;

// Initialize camera intrinsics (e.g. RealSense D435 640x480)
var intrinsics = CameraIntrinsics.RealSenseD435_640x480();

// Load or stream depth buffer (in millimeters or meters)
float[] rawDepth = GetSensorDepthBuffer();
byte[] rgbBytes = GetSensorRgbBuffer();

var frame = new RgbdFrame(640, 480, rawDepth, rgbBytes);

// Fast unprojection to 3D point cloud
var pointCloud = DepthUnprojector.Unproject(frame, intrinsics, minDepthMeters: 0.2, maxDepthMeters: 4.0);
Console.WriteLine($"Extracted {pointCloud.Count} 3D points from camera frame.");

2. Real-Time Spatial Scanner Pipeline

using ZeroScan3D.Core.Camera;
using ZeroScan3D.Core.Reconstruction;

var intrinsics = CameraIntrinsics.RealSenseD435_640x480();
var options = new ScannerOptions
{
    VoxelSize = 0.02, // 2cm map resolution
    TrackingVoxelLeaf = 0.04, // 4cm VO downsampling
    EnableTsdf = true, // Continuous surface reconstruction
    TsdfDimX = 128,
    TsdfDimY = 128,
    TsdfDimZ = 128,
    TsdfVoxelSize = 0.02
};

var scanner = new SpatialScanner(intrinsics, options);

// Ingest consecutive camera frames from camera stream
while (cameraStream.ReadNext(out var frame))
{
    var result = scanner.ProcessFrame(frame);
    if (result.Success)
    {
        Console.WriteLine($"Pose: {result.Pose.Translation} | Voxels: {scanner.VoxelMap.VoxelCount}");
    }
}

// Export fused map as point cloud or 3D mesh
var mapCloud = scanner.GetMapPointCloud(minVoxelWeight: 2);
var mesh = scanner.ExtractMesh(isoLevel: 0.0f);

mesh.ExportObj("scanned_room.obj");
mesh.ExportPly("scanned_room.ply");

Verification & Tests

ZeroScan3D comes with a comprehensive test suite (ZeroScan3D.Tests) covering:

  • Pinhole camera inversion cycles ($2D \leftrightarrow 3D$).
  • 6-DOF camera pose compositions and rigid body algebra.
  • Scan-to-scan visual odometry translation estimation.
  • Incremental sparse voxel grid integration and centroid running averages.
  • Continuous TSDF volume projective integration.
  • Analytical sphere Marching Cubes isosurface extraction with normal generation.
  • Wavefront OBJ and Stanford PLY export file integrity.

Run tests:

dotnet test ZeroScan3D.slnx -c Release

License

MIT License. Copyright (c) 2026 Phong Võ & ZeroPlatform Contributors.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 is compatible.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 50 10/7/2026