HiTOPS is geometry-only — it fits superquadrics to a mesh and assigns mesh faces to them. There are no trained weights; everything is optimization / geometry processing at run time.
The pipeline expects watertight triangle meshes, normalized internally to
[-0.5, 0.5]^3. The SDF stage (hitops/sdf/build_adaptive_sdf.py) requires a
watertight (manifold, hole-free) mesh to produce a correct TSDF.
Batch runners expect this on-disk layout:
<mesh_root>/<shard>/<uid>/full.ply # run_batch_sqfit.py
<mesh_dir>/<uid>/full.ply # run_batch_mapper.py
hitops/preprocess/to_watertight_mesh.py converts raw meshes to watertight
ones via diffusable marching cubes. It needs the optional GPU stack:
pip install -e ".[preprocess]"
# cubvh is installed from source:
pip install git+https://github.com/ashawkey/cubvhRequires torch, diso, point-cloud-utils, cubvh.
| Dataset | Use | Source |
|---|---|---|
| HY3D-Bench (part) | main mesh-mapping eval (mIoU / RI / VoI / SC) | (fill in) |
| PartObjaverse-Tiny | cross-dataset eval | https://github.com/Pointcept/SAMPart3D (PartObjaverse-Tiny) |
| PartNet | cross-dataset eval | https://partnet.cs.stanford.edu |
| 3DCompat | cross-dataset eval | https://3dcompat-dataset.org |
Ground-truth part labels are supplied per-dataset (instance / semantic), to be compared against the predicted per-face labels (
face_labels_v8.npy). Metric scripts are not part of this release yet and will be added in a follow-up.
For each <uid>, the batch pipeline writes:
<output_root>/<uid>/
adaptive_map_v4/<uid>_adaptive_map_v4.npz # octree multi-res block map
sdf_vol/<uid>_sdf_vol.npz # TSDF volume (reusable)
sq_fit_v20/{post_sq_*.ply, final_sq_model.ply, ...} # fitted superquadrics
curv_seg_v4/face_labels.npy # curvature atoms (mapper input)
mesh_mapping_v8/{face_labels_v8.npy, mesh_mapped_v8.ply, report.json}
full.ply # copy of input mesh
summary.json
The
adaptive_map_v4/andsdf_vol/artifacts depend only on the input mesh and can be reused across fitter configurations.
Note: on-disk subdirectory names keep their original version suffixes (
sq_fit_v20,mesh_mapping_v8, …) so existing outputs and the resume logic stay compatible; the Python modules themselves are version-suffix free.