ZeroScan3D.Core
1.0.0
dotnet add package ZeroScan3D.Core --version 1.0.0
NuGet\Install-Package ZeroScan3D.Core -Version 1.0.0
<PackageReference Include="ZeroScan3D.Core" Version="1.0.0" />
<PackageVersion Include="ZeroScan3D.Core" Version="1.0.0" />
<PackageReference Include="ZeroScan3D.Core" />
paket add ZeroScan3D.Core --version 1.0.0
#r "nuget: ZeroScan3D.Core, 1.0.0"
#:package ZeroScan3D.Core@1.0.0
#addin nuget:?package=ZeroScan3D.Core&version=1.0.0
#tool nuget:?package=ZeroScan3D.Core&version=1.0.0
ZeroScan3D
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
ZeroGeometryspatial 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, andnet8.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 | Versions 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. |
-
.NETFramework 4.6.2
- System.Buffers (>= 4.5.1)
- System.Memory (>= 4.5.5)
- System.Numerics.Vectors (>= 4.5.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
- System.Threading.Tasks.Extensions (>= 4.5.4)
- System.ValueTuple (>= 4.5.0)
- ZeroGeometry.Core (>= 1.2.0)
- ZeroPrimitives.Core (>= 1.7.0)
-
.NETStandard 2.0
- System.Buffers (>= 4.5.1)
- System.Memory (>= 4.5.5)
- System.Numerics.Vectors (>= 4.5.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
- System.Threading.Tasks.Extensions (>= 4.5.4)
- System.ValueTuple (>= 4.5.0)
- ZeroGeometry.Core (>= 1.2.0)
- ZeroPrimitives.Core (>= 1.7.0)
-
net8.0
- ZeroGeometry.Core (>= 1.2.0)
- ZeroPrimitives.Core (>= 1.7.0)
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 |