This repository contains the official implementation of the paper
Fast and Globally Consistent Normal Orientation based on the Winding Number Normal Consistency
ACM ToG 2024, SIGGRAPH Asia 2024 Journal Track
Siyou Lin, Zuoqiang Shi, Yebin Liu
- A PyTorch extension for accelerating winding numbers in
ext/wn_treecode
- A fast iterative method for normal estimation:
main_wnnc.py
- As a by-product, we provide unofficial CPU and CUDA implementations for Gauss surface reconstruction in
ext/gaussrecon_src
, which is faster than PoissonRecon with better smoothness control, but never officially open-sourced.
- For WNNC normal estimation:
cd ext
pip install -e .
cd ..
# width is important for normal quality, we provide a few presets through --width_config
# for clean uniform samples, use l0
python main_wnnc.py data/Armadillo_40000.xyz --width_config l0 --tqdm
# for noisy or non-uniform points, use configs l1 (small noise) ~ l5 (large noise) depending on the noise level
# a higher level gives smoother normals and better resilience to noise
python main_wnnc.py data/bunny_noised.xyz --width_config l1 --tqdm
...
python main_wnnc.py data/bunny_noised.xyz --width_config l5 --tqdm
# the user can also use custom widths:
python main_wnnc.py data/bunny_noised.xyz --width_config custom --wsmin 0.03 --wsmax 0.12 --tqdm
# to see a complete list of options:
python main_wnnc.py -h
- For Gauss surface reconstruction:
First download ANN 1.1.2 and unpack to
ext/gaussrecon_src/ANN
. Runmake
there. Then go back to the main repository directory, and:
sh build_GR_cpu.sh
sh build_GR_cuda.sh
./main_GaussReconCPU -i <input.xyz> -o <output.ply>
./main_GaussReconCUDA -i <input.xyz> -o <output.ply>
This is a preliminary version and updates are coming soon
- More detailed instructions and documentation.
- Test data samples
- Code cleaning