This repository does not propose any new methods, but provides easy-to-use code that leverages advanced tools for efficiently preparing large-scale, high-quality 3D mesh assets.
- Generate simplified 2-manifold meshes using OpenVDB and ACVD.
- Perform convex decomposition with CoACD.
- Render single-view point clouds using Warp.
- Fast: Processes each mesh in seconds, with parallel processing support for multiple meshes.
- Robust: Achieves over 95% success rate for processing messy mesh data, including datasets like Objaverse.
- Easy to Use: Customizable processing tasks that can be executed with a single command.
- BODex: Scalable and Efficient Robotic Dexterous Grasp Synthesis Using Bilevel Optimization, by Jiayi Chen*, Yubin Ke*, and He Wang. ICRA 2025.
- Clone the third-party dependencies.
cd MeshProcess
git submodule update --init --recursive --progress
- Create and set up the Python environment using Conda.
conda create -n meshproc python=3.10
conda activate meshproc
pip install mujoco
pip install trimesh
pip install hydra-core
pip install lxml
# For partial point cloud rendering
pip install warp-lang
pip install opencv-python
pip install pyglet
- Build the third-party package ACVD following their installation guide. To install the VTK dependencies of ACVD,
sudo apt-get update
sudo apt install -y build-essential cmake git unzip qt5-default libqt5opengl5-dev libqt5x11extras5-dev libeigen3-dev libboost-all-dev libglew-dev libglvnd-dev
git clone https://gitlab.kitware.com/vtk/vtk.git
cd vtk
git checkout v9.2.0
mkdir build
cd build
cmake ..
make -j12
sudo make install
export VTK_DIR=/usr/local/include/vtk-9.2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
- Build our customized CoACD by following the compiling instructions. Please note that we do not support CoACD installed via
pip
. OpenVDB will be automatically included after compiling CoACD.
For a quick start, we provide example mesh data in the assets/object/example_obj/raw_mesh
directory, which can be processed by our all-in-one script.
bash script/example.sh
-
Downloading datasets: Please see the guides for downloading and processing object assets from DexGraspNet and Objaverse. You can prepare your raw mesh data similarly.
-
Processing meshes: Results will be saved in
assets/object/DGN_obj/processed_data
.
python src/main.py func=proc data=DGN
- (Optional) Getting statistics: This can be used to monitor the progress during processing meshes.
python src/main.py func=stat data=DGN
- Recording and spliting valid data: Results will be saved in
assets/object/DGN_obj/valid_split
.
python src/main.py func=split data=DGN
- Rendering partial point cloud and (optional) images: Results will be saved in
assets/object/DGN_obj/vision_data
. This is not needed for grasp pose synthesis, but necessary for network learning.
python src/main.py func=render data=DGN
If you found this repository useful, please consider to cite the following works:
- Our paper:
@article{chen2024bodex,
title={BODex: Scalable and Efficient Robotic Dexterous Grasp Synthesis Using Bilevel Optimization},
author={Chen, Jiayi and Ke, Yubin and Wang, He},
journal={arXiv preprint arXiv:2412.16490},
year={2024}
}
- CoACD for convex decomposition:
@article{wei2022coacd,
title={Approximate convex decomposition for 3d meshes with collision-aware concavity and tree search},
author={Wei, Xinyue and Liu, Minghua and Ling, Zhan and Su, Hao},
journal={ACM Transactions on Graphics (TOG)},
volume={41},
number={4},
pages={1--18},
year={2022},
publisher={ACM New York, NY, USA}
}
- ACVD for mesh simplification:
@article{valette2008generic,
title={Generic remeshing of 3D triangular meshes with metric-dependent discrete Voronoi diagrams},
author={Valette, S{\'e}bastien and Chassery, Jean Marc and Prost, R{\'e}my},
journal={IEEE Transactions on Visualization and Computer Graphics},
volume={14},
number={2},
pages={369--381},
year={2008},
publisher={IEEE}
}