Giter VIP home page Giter VIP logo

gcno's Introduction

Globally Consistent Normal Orientation for Point Clouds by Regularizing the Winding-Number Field

This paper is published at ACM Transactions on Graphics (SIGGRAPH 2023). Please refer to our paper and project for more detail.

We just got the SIGGRAPH 2023 Best Paper Award!!! Congrats!

@article{Rui2023GCNO,
author = {Xu, Rui and Dou, Zhiyang and Wang, Ningna and Xin, Shiqing and Chen, Shuangmin and Jiang, Mingyan and Guo, Xiaohu and Wang, Wenping and Tu, Changhe},
title = {Globally Consistent Normal Orientation for Point Clouds by Regularizing the Winding-Number Field},
year = {2023},
issue_date = {August 2023},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {42},
number = {4},
issn = {0730-0301},
url = {https://doi.org/10.1145/3592129},
doi = {10.1145/3592129},
month = {jul},
articleno = {111},
numpages = {15},
keywords = {Voronoi diagram, winding number, normal orientation, raw point cloud, optimization}
}

Tested Platform

  • Windows 10
  • Visual Studio 2022 Professional
  • AMD Ryzen 5950X
  • 32GB Memory

Dependencies

  • CGAL
  • Eigen3
  • Boost

Important: Please using vcpkg to install dependent libraries! And please use "git clone" to install vcpkg, otherwise you may get errors during CGAL installation.

  • .\vcpkg install boost:x64-windows

  • .\vcpkg install cgal:x64-windows

    โ€‹ use "git pull" if you get errors with the "gmp" library.

  • .\vcpkg install Eigen3:x64-windows

  • .\vcpkg integrate install

MSVC on Windows

Download this project: NormalOrientation

Open Cmake-GUI

Where is the source code: NormalOrientation

Where to build the binaries: NormalOrientation/build

Note: check the location of dependencies and install. It is recommended to use vcpkg to add dependencies.

Configure->Generate->Open Project

ALL_BUILD -> Build
Turn Debug to Release -> ALL_BUILD -> Build

Please set MAIN as Startup Project, and make the following changes:

Properties -> Configuration Properties -> C/C++ -> Code Generation -> 
- Enable Parallel Code Generation : Yes
- Enable Enhanced Instruction Set : AVX2
- Floating Point Model : Fast

Properties -> Configuration Properties -> C/C++ -> Language -> Open MP Support : Yes

Test

  • All examples are in MAIN.
  • All the files is in NormalOrientation\data.
  • The output files is in NormalOrientation\data\Out\.
  • The result of operations are in NormalOrientation\data\MyResult\, for checking whether the program is running correctly.

Important Tips:

๐Ÿ’ก๐Ÿ’ก๐Ÿ’ก Speed

This code is not optimized for speed, but for clarity. Please open Openmp and AVX2 in Visual Studio to speed up the code. Please set the floating point model to fast in Visual Studio to speed up the code. The default number of Openmp parallel threads is 28, set according to an AMD Ryzen 5950x CPU, please set different number of threads according to the CPU you use to get the best running effect.

image-20230116154151378

image-20230116154210583

๐Ÿ’ก๐Ÿ’ก๐Ÿ’ก Stop condition

For viewing the optimization process in more detail, we have not set the optimization stop condition. Please manually stop the optimization and view all iteration results in the data\out folder

gcno's People

Contributors

xrvitd avatar frank-zy-dou avatar ningnawang avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.