NURBS Loft

Dependencies

This node can optionally use Geomdl library.

Functionality

This node generates a NURBS Surface object from several NURBS or NURBS-like Curves by applying so-called “skinning”, or “lofting”, operation. In a way, “lofting” is interpolation of several curves to make a surface. So, this node is somewhat similar to “Surface from Curves” node. Differences are:

  • “NURBS Loft” can work only with NURBS and NURBS-like curves, while “Surface from Curves” works with arbitrary (e.g. formula-specified) curves.

  • “NURBS Loft” node always generates a NURBS Surface; for such surface, some specific API methods can be applied; such surface can be saved in some file format, which understands only NURBS (at the moment, see “NURBS to JSON” node; later, nodes to save NURBS in some industry-used formats can appear).

  • “NURBS Loft” usually works a lot faster comparing to “Surface from Curves”.

At the moment, this node can effectively work with the following types of curves:

  • NURBS curves

  • Bezier curves

  • Cubic splines

  • Polylines

  • Circular arcs

  • Line segments

Some nodes, that output complex curves composed from simple curves (for example, “Rounded rectangle”), have NURBS output parameter; when it is checked, such nodes output NURBS curves, so “NURBS Loft” can work with them.

This node also has a restriction concerning degrees of input curves. In order for node to work, the input curves must:

  • Either all have the same degree;

  • Or, if some of curves have degree less than others, such smaller-degree curves must have number of control points equal to degree plus one.

Inputs

This node has the following inputs:

  • Curves. Curves to make a loft from. This input can process data with nesting level up to 3 (list of lists of lists of curves), in order to use one value from DegreeV input per list of curves. This input is mandatory.

  • DegreeV. Degree of NURBS curves used to interpolate in V direction. As most of Sverchok numeric inputs, this input can process data with nesting level up to 2 (list of lists of numbers). Degree of 1 will make a “linear loft”, i.e. a surface composed from several ruled surfaces; higher degrees will create more smooth surfaces. The default value is 3.

Parameters

This node has the following parameters:

  • Implementation. This defines the implementation of NURBS mathematics to be used. The available options are:

    • Geomdl. Use Geomdl library. This option is available only when Geomdl package is installed.

    • Sverchok. Use built-in Sverchok implementation.

    In general, built-in implementation should be faster; but Geomdl implementation is better tested. The default option is Geomdl, when it is available; otherwise, built-in implementation is used.

  • U Knots. This parameter is available in the N panel only. This defines how the node will modify input curves in order to make them use exactly the same knot vectors. Available options are:

    • Unify. Additional knots will be inserted for each curve in places where other curves have knots.

    • Average. Calculate knot vector by averaging knot vectors of the input curves. This can work only when input curves have the same number of control points.

    Unify option often generates a lot of additional control points for the resulting surface; it is more universal, and more precise in many cases. Average mode does not create additional control points, and so it works faster, and any following nodes working with the generated surface will work faster; but Average mode is less universal, and in many cases it gives less precise interpolations. The default value is Unify.

  • Metric. This parameter is available in the N panel only. Distance type used for interpolation along V direction. The available values are:

    • Manhattan

    • Euclidean

    • Points (just number of points from the beginning)

    • Chebyshev

    • Centripetal (square root of Euclidean distance).

    The default option is Euclidean.

Outputs

This node has the following outputs:

  • Surface. The generated NURBS surface.

  • UnifiedCurves. Curves that were actually used to construct the surface. These are the same curves as ones in the Curves input, but unified to have the same degree and knot vector.

  • VCurves. Curves along V direction of the surface, which were used to calculate surface’s control points during skinning process.

Example of usage

Generate several interpolating NURBS curves and draw a skinned surface through them:

https://user-images.githubusercontent.com/284644/90965255-f5bf0d00-e4df-11ea-8498-dfbf3d26fd24.png