Graphics systems have made significant advances in polygon rendering capabilities. However many models are more conveniently represented and manipulated using more general representations, e.g. non-uniform rational B-spline (NURBS) surfaces. This class includes Bézier surfaces and other rational parametric surfaces like tensor product and triangular patches. Large scale sculptured models consisting of thousands of such surfaces are commonly used to represent shapes of automobiles, submarines, airplanes, building architectures, sculptured models, mechanical parts and in applications involving surface fitting over scattered data or surface reconstruction. Real time rendering of sculptured models for applications involving virtual worlds and other immersive technologies remains a difficult problem.The shipping, pivot and torpedo models -- Courtesy Electric Boat.
We have been working on fast and accurate algorithms to display NURBS surfaces (trimmed and non-trimmed). We polygonize the sculptured models and render them using the capabilities of current graphics systems. The NURBS models (e.g. the dragon model) are decomposed into Bézier surfaces (Bernstein basis) and each Bézier surface is tessellated uniformly in its parametric domain. The criteria for this tessellation are based on the sizes of triangles and their deviation from the surface in the screen space. This involves the calculation of bounds on derivatives and an estimation of curvatures of the surface. Our method improves the way these bounds are calculated and generates fewer triangles
The main new features of our approach are:
We introduce techniques to discard patches facing away from the viewing direction, aka back face culling of triangles. The patches that do not lie on the viewing frustum for a frame are also discarded. We use the coherence of image from frame to frame to speed up the rendering. Only incremental computation is performed to update the triangulation of surfaces at each frame. Most ot the triangles used for a frame are reused in the next frame. We prevent cracks in our rendered images by using the idea of coving and tiling introduced by Rockwood et. al. at patch boundaries. We solve the problem of cracks at trimmed curves by maintaining a multi-resolution representation of the trim curves. The idea is to use the space representation of the curve to estimate the required tessellation.
For triangulating the trimmed surfaces we draw the trim curves on the uniform tessellation mesh, leaving out the triangles totally trimmed out and cutting the triangles that are partially trimmed. Only the points that are in the final triangulation are evaluated.
The PixelPlanes can currently render models with about 30,000 Bézier patches at more than 10 frames a second. (These patches were generated by the BOOL CSG system of UNC, which got its data from Electric boat.) We have got the performance of upto 400K on-screen Bézier primitives per second.