Skip to content

Release v0.4.9

Choose a tag to compare

@KhoiDOO KhoiDOO released this 26 Jul 00:02
· 531 commits to main since this release

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}")