UnwrapCurve plug-in

 From:  Michael Gibson
5136.31 In reply to 5136.28 
Hi Burr,

> Something we dont/cant see.... Part of the underlying definition of the geometry.....

Yup, the parametrization comes from one of the pieces of data that makes up a NURBS curve - the "knot vector".

The data for the knot vector is just a list of increasing numbers like this for instance: 5, 6, 10, 20, 52

That knot vector there for example makes a curve that has a domain of 5 to 52 - that means that for every value between 5 and 52 the curve can be evaluated at that parameter value to produce a point location. That numeric range from 5 to 52 is the "parameter space" of the curve - a one-dimensional space that's part of the curve definition. Surfaces have 2 knot vectors, one for the U direction and one for the V direction and so they have a two dimensional parameter space.

The knot vector is not something you usually see directly because it would involve some huge spew of super techno-geek information that you would not particularly be able to do anything with.

But the knot vector comes into play in the overall mechanics of how the NURBS curve works - the relative spacing between different knots is one thing that affects how much influence the control points in that region of the curve have on the shape of the curve. Just to complicate matters there is also another totally separate type of data called "weights" that can also affect a control point's influence but the weights exist primarily because the particular type of influence they have is able to be leveraged to produce exact conic sections.

Being able to have different spacing between knot values is what gives the "NU" to NURBS, the NU stands for "Non-Uniform".

One of the main reasons why it is good to have this ability to do different knot spacings is to be able to more naturally set up interpolation through data points that deals better with the data points having some different spacing between them. When you try to interpolate an uneven distribution of points with a uniform spline (uniform means a knot vector with all equal spacing between all the knot values), it basically tries to produce the same length curve spans between each point and that makes for a sort of excess amount of curve being left over in areas where the points come closer together and that excess curve area makes for curly-cue type shapes in those areas.

The Rebuild command with the "fit to tolerance" method produces a curve that has a non-uniform knot spacing, but the spacing is based on the distances between the interpolated data points, so it matches the point spacing and makes the parameter space relate evenly to 3D space.

I've tried to make MoI set up in general so that you don't have to worry so much about these kinds of things, but it so happens that parametrization does come into play with surface-to-surface flow. I was able to make it not an issue in curve-to-curve flow since it is possible there to map distance traveled along each curve rather than just mapping parameter values from the base curve to the target curve. With a surface it's not so easy to do that since a surface can be warped and bulgy in multiple directions and have different distances across it in different areas.

And then to make things even more confusing, I guess it's even misleading when I wrote "evenly distributed parameterization" - to be more correct I guess it's more like "consistent distribution of parameter space as to 3D space".

- Michael