Features
-
Differentiable Dual Marching Cubes (
conquer3d.ops.dual_marching_cubes / dmc): High-throughput GPU dual meshing algorithm decomposing voxel cells into variable dual vertices (1 to 4) per independent Marching Cubes polygon contour, guaranteeing strictly 2-manifold surfaces without topological pinch points.
-
Extreme Extraction Speed (~1.0 Billion faces/s): Highly optimized CUDA pipeline achieving $3.44\text{ ms}$ for $3.43\text{M}$ faces at $1024^3$ resolution on NVIDIA RTX 4090 ($4.3\times$ faster than DC and $4.8\times$ faster than MCA).
-
Newton-Raphson Level-Set Projection: Refines contour centroids directly onto implicit zero-crossings via vectorized trilinear gradient iterations.
-
Pure Quad & Triangle Output: Generates pure $(Q, 4)$ quadrilateral meshes with
quad_split=False or $(F, 3)$ Delaunay max-min angle triangulations with quad_split=True.
-
PyTorch Autograd Differentiability: Analytical backward pass in
DiffDualMarchingCubes propagating gradients directly into sdf and colors.
Refactors & Build
- Modular Data Constants (
dmc_data.h): Dedicated header containing polygon contour definitions (dmc_r_pattern), asymptotic ambiguity table (dmc_ambig_table), and topological quadrant mappings.
- Deterministic Sort-and-Gather Pipeline: Replaced dynamic GPU hash tables with 64-bit integer edge keys
(g_min << 32) | g_max and Thrust radix sort.
- Documentation & PyPI Release: Bumped version to
0.5.8, updated README.md, resolved GitHub Issue #3, and published package conquer3d-0.5.8.tar.gz to PyPI.
Examples
import torch
from conquer3d.data_structure import create_voxel_grid
from conquer3d.ops import dual_marching_cubes, dmc
# 1. Create 3D Voxel Grid
grid_vertices, voxels, _ = create_voxel_grid(
grid_min=[-1.0, -1.0, -1.0],
grid_max=[1.0, 1.0, 1.0],
res=[64, 64, 64],
device="cuda"
)
# 2. Evaluate scalar SDF and optional colors
sdf = (torch.norm(grid_vertices, dim=-1) - 0.6).requires_grad_(True)
colors = torch.rand((grid_vertices.shape[0], 3), device="cuda", requires_grad=True)
# 3. Extract Triangle Mesh with Newton-Raphson level-set projection
verts_tri, faces_tri, out_colors = dmc(
grid_vertices, voxels, sdf, colors=colors, iso=0.0, quad_split=True, project_iters=5
)
print(f"DMC Triangles: {verts_tri.shape[0]:,} vertices, {faces_tri.shape[0]:,} faces")
# 4. Extract Pure Quadrilateral Mesh
verts_quad, faces_quad = dmc(
grid_vertices, voxels, sdf, iso=0.0, quad_split=False
)
print(f"DMC Quads: {verts_quad.shape[0]:,} vertices, {faces_quad.shape[0]:,} quads")
# 5. Differentiable Autograd Backward Pass
loss = verts_tri.sum() + out_colors.sum()
loss.backward()
print(f"SDF Gradient Norm: {sdf.grad.norm().item():.4f}")