mkazhdan / PoissonRecon

Poisson Surface Reconstruction
MIT License
1.58k stars 427 forks source link

How to run Poisson Surface Reconstruction? #50

Open petrasvestartas opened 6 years ago

petrasvestartas commented 6 years ago

Hi,

I downloaded source code in zip from here: http://www.cs.jhu.edu/~misha/Code/PoissonRecon/Version9.011/

I built it in Visual Studio 2017. Build was successfull.

I see .exe files, but when I run those three exe files they are closed immediatelly.

How should I run the app correctly? I have a pointcloud and just want to reconstruct a mesh from it.

untitled

mkazhdan commented 6 years ago

You need to provide an input point set and specify the output mesh file. E.g.: PoissonRecon --in in.ply --out out.ply where "in.ply" is a file enumerating the positions of the points and their normals. (See the web-page for a more complete list of command line arguments.)

-- Misha

PS If you are willing to share the data, I can try running the reconstruction code on my end and the tell you which parameters worked for me.

On March 24, 2018 5:14:22 PM EDT, Petras Vestartas notifications@github.com wrote:

Hi,

I downloaded source code in zip from here: http://www.cs.jhu.edu/~misha/Code/PoissonRecon/Version9.011/

I built it in Visual Studio 2017. Build was successfull.

I see .exe files, but when I run those three exe files they are closed immediatelly.

How should I run the app correctly? I have a pointcloud and just want to reconstruct a mesh from it.

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/mkazhdan/PoissonRecon/issues/50

petrasvestartas commented 6 years ago

Sorry maybe I was not clear enough. This time I just downloaded executables.

Please take a look at my screen grab video what I did. I expected to run .exe files and type file locations for .ply.

What I am doing wrong and what is the correct way for running executables?

ScreenGrab

mkazhdan commented 6 years ago

You need to open a command prompt and cd to the directories containing the executables. Then type "PoissonRecon --in --out ".

On June 16, 2018 3:44:05 PM EDT, Petras Vestartas notifications@github.com wrote:

Sorry maybe I was not clear enough. This time I just downloaded executables.

Please take a look at my screen grab video what I did. I expected to run .exe files and types file locations for .ply.

What I am doing wrong and what is the correct way for running executables?

ScreenGrab

-- You are receiving this because you commented. Reply to this email directly or view it on GitHub: https://github.com/mkazhdan/PoissonRecon/issues/50#issuecomment-397835002

petrasvestartas commented 6 years ago

Thank you for an answer.

I ran the .exe file like this through cmd.exe question

I downloaded sample .ply from stanford directory and tried to run it (attached the file here).

What is the issue why it did not work? (I just want to run this app just to learn how to do it.) Is it something wrong with .ply file? If it is .ply that causing problems would it be possible to get a sample of .ply that represents good input file?

bun000.zip

mkazhdan commented 6 years ago

The .ply has to have normals encoded in the "nx", "ny", and "nz" fields (in addition to coordinates encoded in the "x", "y", and "z" fields). The models from the Stanford repo don't have those. You can confirm by typing "more bunny.ply".

You can get the bunny with normals from: http://www.cs.jhu.edu/~misha/Code/PoissonRecon/bunny.points.ply

-- Misha

On June 17, 2018 9:24:48 AM EDT, Petras Vestartas notifications@github.com wrote:

Thank you for an answer.

I ran the .exe file like this through cmd.exe question :

I downloaded sample .ply from stanford directory and tried to run it. I attached the file here.

What is the issue why it did not work?

bun000.zip

-- You are receiving this because you commented. Reply to this email directly or view it on GitHub: https://github.com/mkazhdan/PoissonRecon/issues/50#issuecomment-397878924

petrasvestartas commented 6 years ago

Thanks it worked, I generated mesh from bunny.points.ply.

Is there any method in one of exe to generate normals if none exists in .ply file? For instance having the same file from Stanford what would the way to generate normals inside of it?

mkazhdan commented 6 years ago

Unfortunately, no.

Typically, there are two separate issues that need to be resolved:

  1. Estimating the normal line
  2. Assigning an orientation to the normal

The first problem is reasonably straight-forward: you can use something like PCA to estimate the best-fit plane at each point. The second is harder.

However, if your data comes from scans, both problems are easier. For the first, you use the (at most) four/eight neighbors in the scan to fit a plane. And you choose an orientation of the normal so that the dot-product between the normal and the camera’s view direction is negative (i.e., so that the surface is front-facing to the camera).

-- Misha

PS If your input is an oriented mesh, you can estimate normals at the vertices by taking the sum of normals on incident faces, but then it’s not clear why you need to reconstruct anything.

From: Petras Vestartas notifications@github.com Sent: Sunday, June 17, 2018 2:58 PM To: mkazhdan/PoissonRecon PoissonRecon@noreply.github.com Cc: mkazhdan misha@cs.jhu.edu; Comment comment@noreply.github.com Subject: Re: [mkazhdan/PoissonRecon] How to run Poisson Surface Reconstruction? (#50)

Is there any method in one of exe to generate normals if none exists?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/mkazhdan/PoissonRecon/issues/50#issuecomment-397899030 , or mute the thread https://github.com/notifications/unsubscribe-auth/AKXc5cArX_NOCyNcA6VpS8veu0SDrJSLks5t9qahgaJpZM4S554Y . https://github.com/notifications/beacon/AKXc5SE1BvBkfxM47jXaLS8Tl5jbZJtnks5t9qahgaJpZM4S554Y.gif

petrasvestartas commented 6 years ago

I have a Faro model s 150 laser scanner and I am C# developer with some knowledge of C++, I am wondering if you could point me to any github repository for processing such pointclouds from scanners?

I would really like eventually to code or test somebodies code to compute those normals. Any references would be much appreciated.

ahmadhasan2k8 commented 6 years ago

You can use libraries as PCL or CGAL. Depending on the complexity of your point cloud you can switch the libraries. If it's a simple point cloud with somewhat regular shape I would say PCL will do the job. After normal estimation pcl can orient your point cloud with a reference viewpoint. If you have a very complex point cloud you might wanna use CGAL and after estimation use mst_orient_normals to orient them. Again, if your point cloud have islands or noise etc libraries won't directly cut it and needs some intelligent modifications. I hope this gives you a decent start. For noisy point clouds I would suggest trying different PCL filters.

mkazhdan commented 6 years ago

I'm not really sure. You may want to try PCL (the pointcloud library).

On June 17, 2018 5:05:39 PM EDT, Petras Vestartas notifications@github.com wrote:

I have a faro model s 150 laser scanner and I am C# developer with some knowledge of C++, I am wondering if you could point me to any github repository for processing such pointclouds from scanners?

I would really like eventually to code or test somebodies code to compute those normals. Any references would be much appreciated.

-- You are receiving this because you commented. Reply to this email directly or view it on GitHub: https://github.com/mkazhdan/PoissonRecon/issues/50#issuecomment-397906566