www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/11/04/17:44:51

Message-ID: <01BCE949.48F2FE20@maestro.real3d.com>
From: William Newhall <newhallw AT real3d DOT com>
To: "'djgpp AT delorie DOT com'" <djgpp AT delorie DOT com>
Subject: RE: NURBS
Date: Tue, 4 Nov 1997 17:44:21 -0500
MIME-Version: 1.0

For those who genuinely want to know, NURBS stands for nonuniform rational B-Spline.  Splines are parametric polynomial functions used for interpolating continuous curves or surfaces from a small number of control points and/or tangent vectors which approxomiate the curvature of a surface or curve. Splines are extremely useful in 3D graphics because they are compact and can be discretized(turned into line or polygon representations)to any desired level of detail.  Control points can be transformed like polygon vertices and tangent vectors can be transformed like polygon normals.  Texture mapping a spline is extremely easy with all splines because the u,v parametric coordinates can be mapped one-to-one to s,t texture coordinates(or you can allow the user to transform the parametric coordinates with an arbitrary matrix like OpenGL allows to support tiled texture and wraps)

There are many different types of Spline(Hermite, Bezier, Beta, to name a few) and many algorithms for evaluating them.  The simplest variety are cubic uniform nonrational B-splines.  These are third degree polynomials with control
points at uniform parametric intervals and with 1.0 in the denominator.  These surfaces can be easily evaluated using basis matrix multiplication or heuristic methods.

Any surface can be precisely described as a subset of NURBS(This is why Alias and Softimage heavily support them).  NURBS are capable of things most other Splines are incapable of.  For example, NURBS can precisely represent conic sections(circles, spheres, etc) where other splines are numerically incapable of representing them without error.  NURBS control points have affine and perspective transformation invariance, so you can transform(and light if you're doing interactive rendering) control points, project them, and then discretize the NURBS into polygons which get clipped and displayed.  This is extremely efficient compared to rendering a high resolution polygon mesh(order-of-magnitude fewer matrix multiplies and projections) and you can dynamically adjust the polygon resolution.  Not bad, eh? 

NURBS are supported directly by RenderMan and the OpenGL GLU. On the PC side, Rhino3D (a NURBS modeler from Robert McNeel & Associates) is a commercial software package in wide beta testing and Polyray is a copyrighted freeware ray tracer which supports NURBS as well.   As I mentioned earlier the University of Manchester have freely downloadable source code of their NURBS library.

Lately NURBS has become a catch-all catch phrase, and as such has become horribly abused(just like "object-oriented") whenever the abuser doesn't know how to say "parametric surface." 

Regards,

William Newhall



- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019