Point Cloud Mesher WOF: C++ Library and Command Line Tool

The WOF Point Cloud Mesher is a fast surface reconstruction and 3D meshing software: It consists of an executable for getting started quickly. Moreover you can use WOF as a C++ library for Windows and Linux programming and its basic functionality is:

  • 3D Point Cloud to Triangle Mesh
  • Triangle Mesh to Quality Point Cloud
  • Triangle Mesh to Triangle Mesh

The C++ API is documented here. But let’s start to play with the executable:

3D Points to Triangle Mesh

The WOF mesher takes 3D points as input and it constructs a triangle mesh. For this purpose it estimates the density of the point cloud. But alternatively the user can also specify the density like in the below example commands:

stibbons@hex:~$ wof.exe –reconstruct cloud.bin -o mesh.list -a 1.1
stibbons@hex:~$ wof.exe –reconstruct cloud.bin -o mesh.list -b 100
stibbons@hex:~$ wof.exe –reconstruct cloud.ply -o mesh.ply -f 3.0
stibbons@hex:~$ wof.exe –reconstruct cloud.xyz -o mesh.stl
  1. The first line assumes that the user has knowledge about the clouds’ density. Therefore he specifies the spacing distance manually using “-a 1.1”.
  2. In the second line the user tells WOF to assume a resolution of 100, i.e., the bounding box of the point cloud has a side length of at most 100 points.
  3. The third command line tells WOF to estimate the input density automatically: But afterwards WOF shall multiply the determined value by factor 3.0 (“-f 3.0”) to account for non-uniform density i.e., to avoid holes OR to create a less complex mesh.
  4. The fourth command line does not specify -a, -b or -f. In this case WOF assumes -f 2.0 which is a reasonable factor to account for a non-homogeneous input density.
3D Point Cloud of a guitar
(*) Input Cloud, 562267 Points
Triangle mesh reconstructed from a point cloud
Reconstructed Triangle Mesh, 222908 triangles

Supported point file formats are .xyz which is a simple ASCII format with 3 coordinates per line, .ply in ASCII and binary form and .bin which is a raw binary format. Moreover, triangle meshes can be .ply files or ASCII-.stl (no binary .stl yet) and WOF can write .list files for the Geomview viewer.

Triangle Mesh to Quality Point Cloud

This is the opposite computation: A triangle mesh exists and you create a quality point cloud that respects significant edges of the geometry.

stibbons@hex:~$ wof.exe -t Music_Art.stl -o cloud.ply -a .2
stibbons@hex:~$ wof.exe -t Music_Art.stl -o cloud.ply -b 200

The first above command uses the spacing distance “-a 0.2” while the second one specifies the resolution “-b 200”: WOF creates 432.673 points with “-a 0.2”. In contrast, when you choose half the distance (“-a 0.1”) then 4 times more points fit onto the surface (1.74 mio) and with a quarter (“-a 0.05”) you would get 16 times more (6.97 mio) points. Consequently you must choose the spacing distance carefully to avoid huge outputs!

3D Triangle Mesh
Input Triangle Mesh (*)
3D mesh, converted to a high quality point cloud
Point Cloud created by WOF

Use the WOF executable for getting started quickly and keep in mind that anything you can do with the executable is also possible with the C++ library.

Credits: Music Art and Telecaster by Nemanja Petkov licensed under the Creative Commons Attribution ShareAlike International.

Leave a Reply

Your email address will not be published. Required fields are marked *