Generating 3d body mesh from pointcloud

I have several pointcloud files consisting of x, y, and z points associated with a human body. What I’d like to do is generate a 3d mesh of this body from the pointcloud. Is this possible, and if so what filters should I use? I tried using SurfaceReconstructionFilter, ContourFilter, and ReverseSense together (as in the SurfaceFromUnorganizedPoints example) but the result looks very blocky.

Check out this example on how to reconstruct a surface from points: recosuface.py
In the example:

  1. An object is loaded and noise is added to its vertices.
  2. the point cloud is smoothened with MLS (see moving_least_squares.py)
  3. clean() imposes a minimum distance among mesh points where tol is a fraction of the cloud size.
  4. a triangular mesh is extracted from this set of sparse points, bins is the number of voxels of the subdivision

1 Like

The VTKExamples Project has three algorithms to generate meshes from point clouds:

https://lorensen.github.io/VTKExamples/site/Cxx/Points/ExtractSurface/

https://lorensen.github.io/VTKExamples/site/Cxx/Points/PoissonExtractSurface/

https://lorensen.github.io/VTKExamples/site/Cxx/Points/PowercrustExtractSurface/

and this one compares the three techniques:
https://lorensen.github.io/VTKExamples/site/Cxx/Points/CompareExtractSurface/

Can you share the original point cloud?

I’m not using vtkplotter - I’m using the standard VTK python bindings. I’m not sure how vtkplotter works, but I need to embed this in an application so I’m not sure it’s suitable…

Those use VTK Remote Modules, and I’m using pip to install VTK for use with a Python project. Do I need to build VTK manually to make use of those modules? That wouldn’t be ideal, as this tool is intended to be used by other users.

if you want to avoid dependencies from vtkplotter in your application you can grab the python code from here.
This is based on the vtkExtractSurface class mentioned in the VTKExamples Project.

One of the generators is in vtk proper.

Hi,
Can you tell me if vtkPoissonReconstruction or vtkPowerCrustSurfaceReconstruction exist in the python 3 version of vtk? I get a message saying that they don’t exist in my vtk version (8.1.2 for Python 3.6 and Python 3.7). vtkSurfaceReconstructionFilter and vtkExtractSurface are there.
Cheers,
Michael