All Projects → hjwdzh → MeshODE

hjwdzh / MeshODE

Licence: other
MeshODE: A Robust and Scalable Framework for Mesh Deformation

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
CMake
9771 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to MeshODE

StickMan-3D
StickMan 3D: First Round | indie fighting game | C++ OpenGL
Stars: ✭ 60 (-22.08%)
Mutual labels:  3d-models
voxelizer
👾 Voxelization of 3D models
Stars: ✭ 32 (-58.44%)
Mutual labels:  3d-models
pyprt
Python bindings for the "Procedural Runtime" (PRT) of CityEngine by Esri.
Stars: ✭ 36 (-53.25%)
Mutual labels:  geometry-processing
awesome-citygml
The ultimate list of open data semantic city models
Stars: ✭ 57 (-25.97%)
Mutual labels:  3d-models
ecad-models
Random 3D models and such for CAD/ECAD
Stars: ✭ 18 (-76.62%)
Mutual labels:  3d-models
mcut
A simple and fast library for mesh booleans and more.
Stars: ✭ 57 (-25.97%)
Mutual labels:  geometry-processing
PolyDraw
✳️ PTSource PolyDraw is a free 3D polygonal modeller for Windows x86 and x64, for creating or modifying 3D objects using a mesh of 3D points and parametric NURBS Curves .Exports and imports to over 40 formats including WebVR and 3D Printing.
Stars: ✭ 17 (-77.92%)
Mutual labels:  3d-models
stl-fortran
Fortran STL File I/O
Stars: ✭ 16 (-79.22%)
Mutual labels:  3d-models
BodyParts3D
Clone of the BodyParts3D/Anatomography 3D model files
Stars: ✭ 32 (-58.44%)
Mutual labels:  geometry-processing
blender-ply-import
A Python module for faster import of PLY models in Blender
Stars: ✭ 19 (-75.32%)
Mutual labels:  3d-models
floor3d-card
Your Home Digital Twin: aka floor3d-card. Visualize Home Assistant state and perform actions using objects in a 3D home model based on Three.js.
Stars: ✭ 237 (+207.79%)
Mutual labels:  3d-models
3-D-Scene-Graph
3D scene graph generator implemented in Pytorch.
Stars: ✭ 52 (-32.47%)
Mutual labels:  3d-models
Voice2Mesh
CVPR 2022: Cross-Modal Perceptionist: Can Face Geometry be Gleaned from Voices?
Stars: ✭ 67 (-12.99%)
Mutual labels:  3d-models
StlVault
3D object viewer and organizer
Stars: ✭ 104 (+35.06%)
Mutual labels:  3d-models
KiBot
KiCad automation utility
Stars: ✭ 203 (+163.64%)
Mutual labels:  3d-models
building-editor
3D model editor for building/architecture
Stars: ✭ 24 (-68.83%)
Mutual labels:  3d-models
Syn2Real
Repository for Transfer Learning using Deep CNNs trained with synthetic images
Stars: ✭ 16 (-79.22%)
Mutual labels:  3d-models
deep cage
code for "Neural Cages for Detail-Preserving 3D Deformations"
Stars: ✭ 115 (+49.35%)
Mutual labels:  shape-deformation
geometry-processing-package
Geometry Processing Package
Stars: ✭ 38 (-50.65%)
Mutual labels:  geometry-processing
dometyl-keyboard
A parametric generator for designing split, concave, ergonomic keyboards written in ocaml.
Stars: ✭ 84 (+9.09%)
Mutual labels:  3d-models

MeshODE: A Robust and Scalable Framework for Mesh Deformation

Pairwise shape deformation.

Plane Fitting Results

Dependencies

  1. libIGL
  2. CGAL
  3. Ceres
  4. pytorch

Installing prerequisites

# recursively clone all 3rd party submodules
bash get_submodules.sh

# install python requirements
pip install -r requirements.txt

# install CERES (For Ubuntu)
sudo apt-get install cmake
sudo apt-get install libgoogle-glog-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libsuitesparse-dev
sudo add-apt-repository ppa:bzindovic/suitesparse-bugfix-1319687
sudo apt-get update
sudo apt-get install libsuitesparse-dev
mkdir 3rd_party/ceres-solver/ceres-bin
cd 3rd_party/ceres-solver/ceres-bin
cmake -DEXPORT_BUILD_DIR=ON ..
make -j4
make test
sudo make install

# install CERES (for Mac, Homebrew)
brew install ceres-solver --HEAD

Build

mkdir build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j8

Note that when torch must be imported before the pyDeform package in Python. i.e.,

import torch
import pyDeform

Download data

We already provide some demo shapes in the data folder. For playing with more shapes, try

cd data
wget -i filelist.txt

You will get 3625 pairs of shapes.

Run

We provide different binaries for shape deformation with different assumptions.

  1. rigid_deform. Deform well-connected and uniform triangle meshes A to general shape B so that regions in A are close to B.
  2. rigid_rot_deform. Similar to rigid_deform. Preserving edge length instead of 3D offset, which fits better but potentially more distortion.
  3. cad_deform. Deform a CAD model without preassumption of connectivity or uniformness, using rigid_deform.
  4. coverage_deform. (experimental) Deform A to B in order to cover most regions in B without distorting A too much.
  5. inverse_deform. (experimental) Deform A to B so that regions in B are close to A.

The way to run them is by

./rigid_deform ../data/source.obj ../data/target.obj output.obj [GRID_RESOLUTION=64] [MESH_RESOLUTION=5000] [lambda=1] [symmetry=0].
./cad_deform ../data/cad.obj ../data/target.obj output.obj [GRID_RESOLUTION=64] [MESH_RESOLUTION=5000] [lambda=1] [symmetry=0].

Run Pytorch optimizer

cd build
export PYTHONPATH=$PYTHONPATH:$(pwd)
  1. For watertight mesh deformation, try
python ../src/python/rigid_deform.py --source ../data/source.obj --target ../data/target.obj --output ./rigid_output.obj
  1. For general CAD model deformation using traditional method
python ../src/python/cad_deform2.py --source ../data/cad-source.obj --target ../data/cad-target.obj --output ./cad_output.obj --rigidity 1
  1. For NeuarlODE-based deformation, try
python ../src/python/cad_neural_deform2.py --source ../data/cad-source.obj --target ../data/cad-target.obj --output ./cad_output.obj --save_path ./cad_output.ckpt --rigidity 0.1 --device cpu [cuda if possible for faster optimization]
  1. To generate intermediate steps during deformation with NeuralODE (assuming you have previous script done), try
python ../src/python/cad_neural_animate.py --source ../data/cad-source.obj --target ../data/cad-target.obj --output_folder ./animation --rigidity 0.1 --resume_path ./cad_output.ckpt --device cpu [cuda if possible for faster optimization]

Author

© 2020 Jingwei Huang All Rights Reserved

IMPORTANT: If you use this code please cite the following (to provide) in any resulting publication:

@article{huang2020meshode,
  title={MeshODE: A Robust and Scalable Framework for Mesh Deformation},
  author={Huang, Jingwei and Jiang, Chiyu Max and Leng, Baiqiang and Wang, Bin and Guibas, Leonidas},
  journal={arXiv preprint arXiv:2005.11617},
  year={2020}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].