NURBS Extension for VRML97
Discussion & Node proposal
12 March 1999
updated 15 Nov 1999
Introduction
This paper describes new nodes proposed for VRML97, based on Non Uniform
Rational BSplines (NURBS). In general, use of NURBS in VRML would have
the following immediate benefits:

reduced download size of VRML files because of the
compact NURBS description

smoother, richer shapes

easier authoring, because most 3D modeling programs
are already NURBSbased

better animation, since changing a few parameters
has a great impact on shapes and animations

automatic scalability of the display (LOD) depending on CPU and graphics
card performance and world complexity.
NURBS curves and surfaces have been used in industrial design of car bodies,
ship hulls and airplanes for a long time since their mathematical qualities
are especially suited for modeling fluid shapes. Designing with NURBS is
intuitive and easy to understand. Hence, numerous tools beyond CAD/CAM
offer NURBS support. The success of NURBS throughout CAD/CAM/CAE and CGI
in general is due to the following:

Any desired shape can be described using NURBS
without loss of mathematical exactness. While shapes like cylinders or
conics can only be approximated by polygons, NURBS give an exact
mathematical description.

Intuitive methods to design and manipulate any
desired shape are provided by various tools.

NURBS algorithms are fast and stable.
Therefore adopting NURBS support in a VRML environment seems to be
a selfevident step that would yield a number of benefits:

Creating virtual worlds in VRML is always a tradeoff between quality (number
of defined polygons) and bandwidth (download size of a world). Smooth surfaces
are created by exporting huge VRML IndexedFaceSets from modeling programs.
Objects defined in the NURBS format overcome these limitations because
smoothness is obtained with very little data without loss of quality.

The VRML authoring process is accelerated since
NURBS offer intuitive methods for designing objects, especially natural
shapes like human bodies.

The smoothness and curvature can be easily
controlled and manipulated.

Scalability of the rendering system can be realized
through dynamic tessellation. Depending on client CPU and 3D graphics system
performance, the level of detail (LOD) of the rendered NURBS model can be
adapted so that reasonable frame rates can be achieved on any system.

Morphing, i.e. animation of single points of a
surface, is realized with minimal effort by an easytounderstand method.
Animating single control points and altering weight values results in
naturally flowing movements.

Using NURBS based splines for interpolation of positions along a curve
could reduce VRML file size for many types of animation.
The mathematical background required to work with NURBS is not very complex.
There are many toolsthat can assist in the creation
and editing of NURBS surfaces. A good introduction to NURBS is given in
[1].
A thorough mathematical study on NURBS can be found in [2].
References
[1] http://devworld.apple.com/dev/techsupport/develop/issue25/schneider.html
[2] The NURBS Book, Les Piegl and Wayne Tiller, Springer 1997
[3] Open Inventor C++ Reference Manual: The Official Reference Document
for Open Inventor, Release 2, Open Inventor Architecture Group, AddisonWesley,
1994.
Some Tools supporting NURBS
[1] Kinetix 3D Studio Max
[2] Rhino3D
[3] TGS Amapi
[4] AliasWavefront Maya
API's or libraries supporting NURBS
VRML Java Nurbs package from Timothy F. Rohaly http://www.ocnus.com/NURBS/.
This package contains a general set of classes written in Java to represent
and manipulate NURBS.
In addition to a NurbsSurface PROTO a NurbsCurve and NurbsRevolve
PROTO is implemented.
OpenGL contains in the glu
extensions package NURBS Curve
& Surface
Primitives.
A surface can optionally be trimmed by a NURBS Curve or a piece
wise linear curve.
Open Inventor
has the SoNurbsSurface node.
Example C Source code for evaluating Points
on a NurbsCurve or NurbsSurface based on the NURBS Book.