Conform Frost To Particles
Thinkbox Software's FROST is often used to convert a point cloud, for example a LIDAR data set, to a mesh. Unfortinately, the resulting mesh does not pass through the original surface represented by the particles, but is offset by as much as the meshing Radius value. In addition, the result contains mesh on both sides of the original surface thanks to the Metaballs' alogrithm.
In the following example, we will attempt to improve the result from the FROST meshing using GENOME modifiers.
In the following example, we will use once again the geometry object typically used as a stand-in for complex meshes - a 32 segments Teapot:
Using a Particle Flow system set to place 200,000 particles on the surface via Position Object operator, we create the following particle cloud:
We save these particles to disk using Krakatoa (this can be done with the FREE Evaluation Version of Krakatoa). In this example, only the Position channel was saved.
Then we use a PRT Loader to bring back all the particles into 3ds Max. We have to do this, because GENOME does not support direct loading of Particle Flow particles yet:
Now we can create a FROST object using the PRT Loader.
To demonstrate the awesome power of GENOME, we will use just Metaballs meshing with Radius of 1.0 and Absolute Spacing of 0.5 which gives us a rather rough surface:
We select the "internal" faces of the resulting mesh using a GENOME MagmaFlow that checks for the Element Index of each face and selects all elements but the outside mesh:
Using a DeleteMesh modifier, we delete the selected "inside" faces.
Now we can add a second GENOME modifier to the stack and query the average position of particles within a Radius of 2.0 units, and move each vertex to its averaged particles position:
The result looks very promising:
When we compare it to the original mesh which it is based on indirectly via FROST Meshing and GENOMEConforming, we notice that it matches very closely except for the very sharp corners where elements like body and handle meet:
Here is the same as Wireframe:
Using the 6,800,738 particles GMC Sierra Dataset provided by McCarthy Engineering Inc. / Dwayne Ellis, we can attempt to perform the second part of the above test - the FROST mesh is too complex to try to delete faces based on elements connectivity.
Here is the UNconformed FROST mesh produced with Radius of 1.0, Zhu/Bridson mode, Blend Radius of 3.0. It has 808,371 vertices and 1,615,182 faces. Meshing time was 18.7 seconds on a Quad i7 with HT (8 threads):
Here is the result after 15 seconds of calculation using a GENOME modifier with the same flow as shown above. It used a Particle Search Radius of 2.0:
It works well with higher mesh resolutions too - the following is the UNconformed FROST mesh at Radius 0.5, 3,336,301 vertices, 6,674,654 faces. It took 18.8 seconds to mesh on a Quad i7 with HT (8 threads):
The conforming process took 42 seconds using all 8 cores at 100%. The difference is minimal since the original unconformed FROST surface was less than 5 mm away from the actual LIDAR scan surface.
Reducing the Particle Radius to 0.33 produces a relatively uneven surface without conforming. The meshing took 24.576 seconds and resulted in 7,599,239 vertices and 15,196,326 faces. Click on the thumbnail to see the full resolution image with all the noise:
Applying the Genome Conform modifier with Particle Search Radius of 2.0 took 162 seconds, but the result was very smooth. Unfortunately, it also blurred some of the details, for example the GMC logo lost resolution, because the vertex positions were smoothed over the avergae of too many particles:
In the following image, the Particle Search Radius was reduced to 1.5. The conforming took 66 seconds and the result was fairly smooth, without blurring the details as much:
GENOME can be very useful for post-processing FROST meshes from high-resolution LIDAR point clouds.