NurbsEditCurveKnotVector

From K-3D

Revision as of 22:54, 19 September 2009 by Tshead (Talk | contribs)
(diff) ← Older revision | Current revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Description

Edit the knot vector of a NURBS curve
Plugin Status:Experimental
Categories:All Plugins, Experimental Plugins, NURBS Plugins

Metadata

Name Value

Properties

Label Description Type Script Name
Input Mesh Input mesh k3d::mesh* input_mesh
Output Mesh Output mesh k3d::mesh* output_mesh
Mesh Selection Input Mesh Selection k3d::selection::set mesh_selection
Knot Vector Enter a new knot vector containing knot values separated with spaces. k3d::typed_array<k3d::double_t> knot_vector


Description

The knot vector is the "heart" of a NURBS curve/surface. It defines which control points influence each part of the curve.
The order of the curve specifies the number of control points which are active at every point on the curve, the knots tell the Renderer where to change the set of active control vertices and how many of the CVs get replaced.

The number of elements in the knot vector is defined as the number of points plus the order.
Usually the first and the last knot have a multiplicity equal to the order, which means we (de-)activate all needed control points there. The distance between to knots is arbitrary, the knot vector gets normalized (mapped to the range 0 to 1) before most modifiers are applied.

A simple example:
A curve with order 3 (so the basis function has degree 2) has 4 points, lets call them p0, p1, p2 and p3.
The knot vector needs to have 7 elements. Starting with 0 we should enable the first 3 points by repeating the knot value 0 three times.
Then we disable p0 and enable p3 so now p1, p2 and p3 are active (hence the 1), and the last step is to disable all active control points by adding an element with multiplicity 3 at the end.
This results in a knot vector: 0 0 0 1 2 2 2.

For further reference take a look at http://en.wikipedia.org/wiki/NURBS#The_knot_vector.

Rules for this modifier

  • the number of knots cannot be changed (use NurbsCurveInsertKnot for that)
  • the knot vector needs to be nondecreasing
  • the multiplicity of internal knots is limited by order - 1 (= degree)
  • the multiplicity of the ending knots is limited by the order
Personal tools