/OcMesher

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

OcMesher: View-Dependent Octree-based Mesh Extraction in Unbounded Scenes for Procedural Synthetic Data

Implementation source-code for OcMesher, which extracts a mesh for an unbounded scene represented by signed distance functions (SDFs). Even though the scene is unbounded, the mesh is memory-efficient, and highly detailed from a given set of camera views. OcMesher is used by default in Infinigen to speed up video generation, improve rendering quality, and export terrain meshes to external simulators.

If you use OcMesher in your work, please cite our academic paper:

Zeyu Ma, Alexander Raistrick, Lahav Lipson, Jia Deng

@article{ocmesher2023view,
  title={View-Dependent Octree-based Mesh Extraction in Unbounded Scenes for Procedural Synthetic Data},
  author={Ma, Zeyu and Raistrick, Alexander and Lipson, Lahav and Deng, Jia},
  year={2023}
}

Please view the video here for more qualitative results

Getting Started

💡 Note: OcMesher is installed by default in Infinigen as of v1.2.0 - if you wish to use OcMesher with Infinigen please follow the Installation instructions on the infinigen repo. Use the instructions below only if you want a standalone installation & demo.

Standalone Installation

git clone https://github.com/princeton-vl/OcMesher.git
cd OcMesher
bash install.sh
conda create --name ocmesher python=3.10
conda activate ocmesher
pip install -r requirements.txt

Demo

python demo.py

This example uses one camera and the Perlin Noise from the Python library vnoise and outputs the resulting mesh in results/demo.obj.