Git Product home page Git Product logo

xrvitd / rfeps Goto Github PK

View Code? Open in Web Editor NEW
50.0 2.0 8.0 205.43 MB

Code of RFEPS: Reconstructing Feature-line Equipped Polygonal Surface. ACM Transactions on Graphics, SIGGRAPH Asia 2022 Paper.

Home Page: https://ruixu.me/html/RFEPS/index.html

License: GNU General Public License v3.0

CMake 0.18% C++ 95.90% PostScript 3.16% C 0.51% Shell 0.07% Python 0.13% Makefile 0.02% MATLAB 0.02%
cpp graphics reconstruction siggraph-asia-2022

rfeps's Introduction

RFEPS: Reconstructing Feature-line Equipped Polygonal Surface

Code of RFEPS.

Abs: Feature lines are important geometric cues in characterizing the structure of a CAD model. Despite great progress in both explicit reconstruction and implicit reconstruction, it remains a challenging task to reconstruct a polygonal surface equipped with feature lines, especially when the input point cloud is noisy and lacks faithful normal vectors. In this paper, we develop a multistage algorithm, named RFEPS, to address this challenge. The key steps include (1)denoising the point cloud based on the assumption of local planarity, (2)identifying the feature-line zone by optimization of discrete optimal transport, (3)augmenting the point set so that sufficiently many additional points are generated on potential geometry edges, and (4) generating a polygonal surface that interpolates the augmented point set based on restricted power diagram. We demonstrate through extensive experiments that RFEPS, benefiting from the edge-point augmentation and the feature-preserving explicit reconstruction, outperforms state-of-the-art methods in terms of the reconstruction quality, especially in terms of the ability to reconstruct missing feature lines.

Paper link: https://arxiv.org/abs/2212.03600 Doi: https://dl.acm.org/doi/10.1145/3550454.3555443

Dependence

  • CGAL
  • Eigen3
  • Boost

Please using vcpkg to install dependent libraries!!!

Important: Please use "git clone" to install vcpkg, otherwise you may get errors in 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

Makefile builds (Linux, other Unixes, and Mac. But we recommend using Windows.)

git clone https://github.com/Xrvitd/RFEPS
cd RFEPS
mkdir build && cd build
cmake ..
make -j8
make install

If you are using Mac, please check this: #3

MSVC on Windows

git clone https://github.com/Xrvitd/RFEPS

Open cmake-gui

Where is the source code: RFEPS

Where to build the binaries: RFEPS/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

The example is in 'MAIN'. Include RFEPS in your project when testing and using it.

All the files is in 'RFEPS\data'.

Please open OPENMP in Visual Studio to get the best performance.

The Restricted Power Diagram(RPD) in this project is a version that we implemented to facilitate debugging. If you want to get the fastest running speed, please use: https://github.com/basselin7u/GPU-Restricted-Power-Diagrams

Testing Platform

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

Thanks for BGAL library: https://github.com/BKHao/BGAL

If you use our code, please consider citing our work:

@article{Rui2022RFEPS,
  author    = {Xu, Rui and Wang, Zixiong and Dou, Zhiyang and Zong, Chen and Xin, Shiqing and Jiang, Mingyan and Ju, Tao and Tu, Changhe},
  title     = {RFEPS: Reconstructing Feature-line Equipped Polygonal Surface},
  journal   = {ACM Transactions on Graphics (TOG)},
  year      = {2022},
  publisher = {ACM},
  doi = {10.1145/3550454.3555443},
  booktitle = {ACM SIGGRAPH Asia 2022 Papers},
  numpages = {15},
  series = {SIGGRAPH Asia '22}
}

rfeps's People

Contributors

xrvitd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

rfeps's Issues

oom crash

demo (input: 01_82-block.xyz) coast 70GB memory on mac, is this correct?

请教大佬

为什么运行代码只生成了这两个文件呢“ShowColorR2_ICPTest.txt”和ShowColorR3_ICPTest.txt

typo

Momery -> Memory

Make it runnable on Mac please

Hello! Thanks for your work

I recently tried to run the code on mac with no success

First I removed the line set(CMAKE_TOOLCHAIN_FILE C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake) from CMakeLists.txt
Second I replaced everywhere #include <sys/io.h> with #include <sys/uio.h>
Third I fixed another error https://stackoverflow.com/questions/23284473/fatal-error-eigen-dense-no-such-file-or-directory and replace <Eigen\Dense> with <Eigen/Dense> in imports
Fourth in MAIN/MyRPD.hpp replaced gamma with Gamma otherwise a lot of errors and conflicts, because gamma is already specified in math.h

But finnaly I meet the following problem that I can't solve:

[  8%] Built target PQP
[ 12%] Built target Algorithm
[ 42%] Built target Optimization
[ 52%] Built target BaseShape
[ 56%] Built target PointCloudProcessing
[ 59%] Built target Draw
[ 64%] Built target Integral
[ 70%] Built target Tessellation2D
[ 77%] Built target Model
[ 80%] Built target Reconstruction
[ 85%] Built target Tessellation3D
[ 91%] Built target Geodesic
[ 96%] Built target CVTLike
[ 98%] Linking CXX executable MAIN
Undefined symbols for architecture x86_64:
  "_omp_set_num_threads", referenced from:
      Comput_RPD(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in main.cpp.o
      RFEPSTest(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool) in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [MAIN/MAIN] Error 1
make[1]: *** [MAIN/CMakeFiles/MAIN.dir/all] Error 2
make: *** [all] Error 2

Could you please test your code on Mac platform please

How to run on custom input point cloud?

Hello! Thanks for your work!

Though I have not yet succeeded with installation, could you please provide instructions how to run it on custom point cloud, and in what format it must be in, number of points, range, etc

improve performance

Hi,thanks for your great work!
I wonder is there any advice on how to improve the performance of your code. I run the code with a point cloud of 20,000 points, and it costs about 20s. Is it possible to make the algorithm run faster?
Have you tried other optimization algorithms in alglib?

orz

太强了前排膜拜

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.