User:Caste/Nurbs Overview
From K-3D
NURBS Modeling Tools Overview
NURBS (Nonuniform Rational B-Splines, see [1]) are a very efficient way to model smooth 3D-shapes. My Google Summer of Code 2008 project was to add this modeling functionality to K-3D. Basically NURBS are curves or surfaces (represented as piecewise defined functions) whose shape is controlled via Control Points or Control Vertices (CVs). How many CVs influence a special part of the curve depends on the order (this is the mathematical degree + 1) and the knot vector. At each knot some CVs get deactivated and the same amount gets activated. See [2] for details.
Some terminology clearification: a patch is a surface and a spline can be both: a curve or a surface.
There are 3 kinds of plugins, some just deal with curves, others let you create surfaces from curves and last but not least these which just deal with surfaces.
Nurbs Plugins
Plugin | Description | Docs done | Tests done |
---|---|---|---|
NurbsAddTrimCurve | Adds a trimming curve to the selected patch | yes | yes |
NurbsCloseCurve | Connects the 2 end points of the selected curve | yes | yes |
NurbsConnectCurves | Connects a set of NURBS curves | yes | yes |
NurbsCreateCap | Creates a NURBS surface filling out the given closed curve | yes | yes |
NurbsCurve | Generates a NURBS curve | yes | yes |
NurbsCurveDegreeElevation | Takes a curve of degree p and turns it into a curve with degree p+degree | yes | yes |
NurbsCurveInsertKnot | Inserts a new Knot with the specified u-value | yes | yes |
NurbsCurveTraversal | Creates a NURBS surface while traversing one NURBS curve along another | yes | yes |
NurbsEditCurveKnotVector | Edit the knot vector of a NURBS curve | yes | yes |
NurbsExtrudeCurve | Not yet in Wiki | no | yes |
NurbsExtrudePatch | Extrudes the selected patch along a coordinate axis | yes | yes |
NurbsPatchDegreeElevation | Elevates the selected patches in either u or v direction | yes | yes |
NurbsPatchInsertKnot | Adds a new knot in either u or v direction to all selected patches | yes | yes |
NurbsPolygonizeCurve | Creates a LinearCurve representation of the selected NURBS curve | yes | yes |
NurbsPolygonizePatch | Creates a Polyhedron representation of the selected NURBS patch | yes | yes |
NurbsRevolveCurve | Take a NURBS curve and rotate it around one of the coordinate system axis | yes | yes |
NurbsRuledSurface | Creates a NURBS surface stretched between the 2 curves | yes | yes |
NurbsSetWeight | Sets the weight of the selected Control Points | yes | yes |
NurbsSkinnedSurface | Creates a NURBS surface stretched along all selected curves | yes | yes |
NurbsSplitCurve | Breaks a NURBS curve at a given u value (0...1) | yes | yes |
NurbsSplitPatch | Splits a patch at the selected u/v value | yes | yes |
NurbsSweepSurface | Create a Surface by traversing one curve along another and orienting it tangential to the traverse curve | yes | yes |
References
[1] Wikipedia: NURBS (http://en.wikipedia.org/wiki/Nonuniform_rational_B-spline)
[2] The NURBS Book by L. Piegl and W. Tiller (http://books.google.com/books?id=7dqY5dyAwWkC&printsec=frontcover&dq=The+Nurbs+book&ei=NLCNSM2fNpD0jgH6ja3uCA&sig=ACfU3U2O44Q32pLoGiHtwfSrGUHbgZusAw)