Features
- Implemented
MeshDataset for recursive mesh collection across subdirectories with type filtering.
- Implemented
MeshFolderDataset for classification-ready loading where subfolders map to class labels.
- Implemented
ToyMeshDataset using dynamic introspection to discover and load benchmark test 3D models (excluding woody, alligator, and iphigenia).
- Added
return_hash_id across mesh datasets to provide deterministic MD5 string IDs or asset model names alongside geometries.
- Added
watertight_only option with multi-processing to parallelize surface evaluation and filter out non-watertight models during dataset initialization.
- Exported all new dataset classes directly through the top-level
conquer3d.data namespace and added optional verbosity to Common3D asset downloads.
Refactors & Build
- Transitioned core geometry loading in
Digit3D and package IO from meshlib to trimesh for cross-platform stability.
- Enhanced
write_obj IO export to seamlessly support both PyTorch Tensors and NumPy ndarrays.
- Streamlined
tmesh2sparse conversion routines and cleaned up top-level module import structures.
- Bumped package release version to
v0.4.9 and updated distribution dependency requirements in pyproject.toml.
Examples
import conquer3d as c3d
# Discover and load toy benchmark models with asset names as IDs
toy_ds = c3d.data.ToyMeshDataset(return_hash_id=True, cached=True)
vertices, faces, asset_name = toy_ds[0]
print(f"Loaded {asset_name}: {vertices.shape} vertices")
# Query folder datasets using multiprocessing to keep exclusively watertight meshes
folder_ds = c3d.data.MeshFolderDataset(root="/path/to/classes", watertight_only=True, return_hash_id=True)
v, f, label, hash_id = folder_ds[0]
print(f"Sample MD5 Hash ID: {hash_id}, Class: {label}")