Chapter 8: Domain-Modeling Techniques
Selection and cutting
See the sample Voxel grids, surfaces, and cutting in Chapter 10 for a demonstration on how to select and cut in 3D voxel volumes.
Point cloud visualization
This sample demonstrates how we can render a 3D unstructured point cloud. The sample is relatively complicated, as it introduces several techniques:
- how to represent an oriented point cloud with per-point radius information
- how to search the nearest neighbors of a point in a point-cloud
- how to compute point normals, using principal component analysis (PCA)
- how to render the cloud using (oriented) points, cubes, and spheres
See also the sample Voxel grids, surfaces, and cutting in Chapter 10 which shows related techniques for rendering a voxel surface.
This sample demonstrates how to smooth a 3D mesh using Laplacian smoothing. The sample implements both the classical Laplacian smoothing (which shrinks the mesh) and the modification proposed by Taubin (which keeps the mesh volume). Additionally, you can add a variable amount of random normal jitter to create noisy surfaces. Next, use the smoothing to eliminate this noise.
Note: The bunny.ply model provided in this sample is not a closed mesh. Observe how smoothing treats the holes in the mesh!
Simple mesh refinement
This sample demonstrates how to perform an extremely simple 3D mesh refinement. Triangles whose area is larger than a given threshold are subdivided into three smaller ones using the barycenter. It is meant as a simple starting base to implement your own heuristics for mesh refinement.
Loop mesh refinement
Simple mesh decimation
This sample demonstrates how to perform a very simple mesh decimation (quadric algorithm). Given a mesh, a target is given (reduction of the number of vertices/cells by a user given factor), and the mesh is decimated to that target.
Advanced point cloud visualization
Visualizing point cloud surfaces that use a highly non-uniform point density is challenging, as (1) the visual impression of a compact surface must be created; and (2) surface normals must be accurately estimated. The techniques incorporated in the QSplat tool achieve this, by rendering points as textured quads, or splats. Furthermore, using a hierarchy of splats allows QSplat to render clouds of millions of points at interactive frame rates.
QSplat home page (external link)
2D Alpha shapes
This online sample demonstrates the construction of alpha shapes for a 2D point cloud. The user can interactively specify a set of points, and the demo computes the emerging alpha shapes, as well as the cloud's Voronoi diagram and Delaunay triangulation.
Level-of-detail molecular visualization
This sample demonstrates a number of domain-modeling techniques (mesh construction, mesh simplification, illustrative rendering) for the problem of visualizing a molecule at different levels of detail. The sample is described in the paper Illustrative Molecular Visualization with Continuous Abstraction (M. van der Zwan, H. Loeks, H. Bekker, T. Isenberg, Proc. EuroVis 2011). The sample loads a molecular structure and allows one to interactively play with the visualization's level of detail. It runs on Windows and Linux.
LOD molecular sample (locally cached)
The MeshLab tool offers a comprehensive collection of tens of algorithms for processing of 3D polygonal meshes and 3D point clouds. Examples include mesh smoothing, repairing, quality computation, refinement, simplification, manual editing, conversion between a variety of formats, computation of normals, and surface reconstruction from point clouds. Algorithms include both well-known and proven techniques and also more recent research-grade methods. The tool is open-source and simple to use (via a GUI).