Skip to content

Release v0.7.9

Choose a tag to compare

@KhoiDOO KhoiDOO released this 10 Sep 13:36
· 78 commits to main since this release
31f36f9

Features

  • Differentiable Chamfer Distance (conquer3d.ops):

    • Implemented analytical CUDA backward kernel one_sided_chamfer_distance_backward_kernel and host dispatcher one_sided_chamfer_distance_backward.
    • Direct coalesced writes for query gradients $\nabla_{\mathbf{x}_i} = 2 g_i (\mathbf{x}i - \mathbf{y}{j^*(i)})$ with zero atomic contention.
    • Hardware-accelerated atomicAdd for reference point reaction gradients $\nabla_{\mathbf{y}k} = -\sum{i: j^*(i)=k} \nabla_{\mathbf{x}_i}$.
    • Support for both squared Euclidean ($L_2^2$) and true Euclidean ($L_2$) distance metrics with division-by-zero clamping.
    • Python autograd integration via _OneSidedChamferFunction(torch.autograd.Function) with dynamic conditional gradient checks (ctx.needs_input_grad) that bypass reference point atomic operations when targets are non-trainable ground truth.
    • Full bidirectional autograd propagation for chamfer_distance(x, y).
  • Learnable SuperQuadrics Primitive Sets (conquer3d.primitive):

    • Added SuperQuadrics, compute_sq_sdf, and compute_sq_union in conquer3d/primitive/sq.py with inside-outside functions, radial SDF distance approximations, and differentiable softmin multi-primitive assembly.
  • Binary Occupancy Queries (conquer3d.data_structure):

    • Added optional return_occ parameter to TriangleMesh.query_points and MeshBVH.query_point to return binary inside/outside occupancy masks (signed_distance < 0) alongside closest triangles and signed distances.
  • Documentation & Showcase Additions:

    • Added nearest-neighbour and orientation repair interactive showcases.
    • Reorganized bibliography cards and gallery layouts.

Refactors & Build

  • Build System: Bumped package version to 0.7.9 in pyproject.toml.
  • PyBind11 Extension: Added one_sided_chamfer_distance_backward wrapper with CHECK_INPUT validation in conquer3d/csrc/binds/ops/chamfer.cpp.
  • Version Manifest: Stabilized documentation version manifest and archived previous API reference releases.

Examples

  • Differentiable Point Cloud Fitting (examples/differentiable_fitting/chamfer.py):
    • Added an end-to-end differentiable fitting example deforming an initial 3D random solid ball (create_random_points_ball) onto the Stanford Armadillo mesh surface (Armadillo) using Adam and Conquer3D's differentiable Chamfer distance.
    • Achieved 99.72% loss reduction in 0.65 seconds on GPU (~464 steps/sec) across 10,000 points.