Difference between revisions of "NURBS Tessellation"

From BRL-CAD
(redundant to repeat title)
(dry)
 
Line 1: Line 1:
{| border=1 align="right"
 
!Impact
 
!Difficulty
 
|-
 
|high
 
|medium
 
|}
 
 
 
Non-Uniform Rational B-Spline surfaces are not suitable for direct visualization on modern GPU systems, and also cannot be represented in a number of widely used geometry storage formats (stl, dxf...).  Thus, for both visualization and conversion BRL-CAD needs to implement the ability to tessellate NURBS volumes into explicit NMG representations.
 
Non-Uniform Rational B-Spline surfaces are not suitable for direct visualization on modern GPU systems, and also cannot be represented in a number of widely used geometry storage formats (stl, dxf...).  Thus, for both visualization and conversion BRL-CAD needs to implement the ability to tessellate NURBS volumes into explicit NMG representations.
  

Latest revision as of 08:42, 24 March 2011

Non-Uniform Rational B-Spline surfaces are not suitable for direct visualization on modern GPU systems, and also cannot be represented in a number of widely used geometry storage formats (stl, dxf...). Thus, for both visualization and conversion BRL-CAD needs to implement the ability to tessellate NURBS volumes into explicit NMG representations.

There are various "quick and dirty" approaches to tessellating NURBS, but BRL-CAD's routines also should satisfy solidity constraints - e.g. if NURBS surfaces form a solid Boundary Representation (BREP) the results of the tessellation should also form a valid NMG solid. This involves successfully "merging" individual tessellations from surfaces to form solid meshes.

The first step will be to successfully tessellate and display individual surfaces, followed by merging the individual surface tessellations into solid meshes.

References[edit]

  • src/librt/primitives/brep (new nurbs implementation)
  • src/librt/primitives/bspline/nurb_tess.c (this is our old implementation)
  • src/librt/primitives/nmg/nmg_tri.c (triangulation of polygons while preserving topology)

Requirements[edit]

  • Familiarity with C/C++