Figure 1: On the left is one frame of an elephant animation visualizing estimated curvature. Blue indicates concave areas, red indicates convex areas, and green indicates saddle-shape areas. The middle is using surface curvature to approximate ambient occlusion. On the right is an orange volume with ∼1.5 billion vertices with Lambertian shading and ambient occlusion which we estimate curvature on in 39.3 ms.
AbstractSurface curvature is used in a number of areas in computer graphics, including texture synthesis and shape representation, mesh simplification, surface modeling, and non-photorealistic line drawing. Most real-time applications must estimate curvature on a triangular mesh. This estimation has been limited to CPU algorithms, forcing object geometry to reside in main memory. However, as more computational work is done directly on the GPU, it is increasingly common for object geometry to exist only in GPU memory. Examples include vertex skinned animations and isosurfaces from GPU-based surface reconstruction algorithms.For static models, curvature can be pre-computed and CPU algorithms are a reasonable choice. For deforming models where the geometry only resides on the GPU, transferring the deformed mesh back to the CPU limits performance. We introduce a GPU algorithm for estimating curvature in real-time on arbitrary triangular meshes. We demonstrate our algorithm with curvature-based NPR feature lines and a curvature-based approximation for ambient occlusion. We show curvature computation on volumetric datasets with a GPU isosurface extraction algorithm and vertex-skinned animations. Our curvature estimation is up to ∼18x faster than a multithreaded CPU benchmark.