Next Previous Contents

## 5. NURBS Modelling Tools

This section describes NURBS curve and surface related modelling tools. All tools are accessible via the `"Tools"` menu of the main window. In addition, there are also corresponding scripting interface commands.

## 5.1 The Closed BSpline Tool

A Closed B-Spline

- Arguments: Number of control points (i).
- Operation: This tool creates a closed cubic B-Spline curve with i+3 control points in the XY plane. The control points are arranged in a circle of radius 1 centered around the origin. This gives the curve a circular appearance (see image above) but it is not a true circle: If few control points are used, the radius of the circular curve is clearly smaller than 1. Furthermore, shape, parameterisation, and curvature of the closed B-Spline are not exactly as one would expect from a circle. However, you can use the NURBCircle tool (see below) to create a true circle instead.
- Note: i must be atleast 3. The first three control points of the new curve will be identical to the last three. Additionally, the curve will be marked as periodic and the generation of multiple points will be enabled, so that point edit actions know that they may need to move two points. See also section Multiple Points.

## 5.2 The NURBCircle Tool

A NURBS Circle

- Arguments: None.
- Operation: The NURBCircle tool creates a full circular NURBS curve of radius 1 in the XY plane located at the origin.
- Note: The NURBS curve created by the NURBCircle tool is rational (uses weights). This means, editing the curve (e.g. moving control points) may lead to unpredicted results (the curve does not behave exactly as wished). Use a closed B-Spline created with the Closed BSpline Tool (see above) if you want to edit the curve further. You can use this circle to easily create a NURBS-torus by moving the circle along X and then revolving it. The amount of movement determines the radius of the torus, whereas the radius of the circle determines the thickness. Additionally, the created curve will be marked as closed and the generation of multiple points will be enabled, so that point edit actions know that they may need to move two points. See also section Multiple Points.

## 5.3 The NURBCircleArc Tool

- Arguments: angle of the arc in degrees
- Operation: The NURBCircle tool creates a circular NURBS curve arc of radius 1, with the specified angle, in the XY plane, located at the origin.
- Note: The NURBS curve created by the NURBCircleArc tool is rational (uses weights). This means, editing the curve (e.g. moving control points) may lead to unpredicted results (the curve does not behave exactly as wished).

## 5.4 The TrimRect Tool

- Arguments: None
- Operation: The TrimRect tool creates a two-dimensional piecewise linear NURBS curve of rectangular shape in the XY plane, that fits in the (u,v) parameter space of a NURBS patch, for use as trim curve.
- Note: To fit the curve to the parameter space of a NURBS patch, the NURBS patch object should be selected or the current level should be inside the NURBS patch. If no NURBS patch object is selected and the current level is not inside a NURBS patch, a curve with the coordinates (-1,-1), (-1,1), (1,1), and (1,-1) will be created instead. Additionally, the created curve will be marked as closed and the generation of multiple points will be enabled, so that point edit actions know that they may need to move two points. See also section Multiple Points. See section Trim Curves for a more detailed discussion of trim curves and how to use the rectangular curve created by the TrimRect tool.

## 5.5 The NURBSphere Tool

- Arguments: None.
- Operation: The NURBSphere tool creates a half circle NURBS curve and revolves it about the Y axis thus forming a sphere of radius 1.
- Note: The NURBS curve is deleted afterwards.

## 5.6 The NURBSphere2 Tool

- Arguments: None.
- Operation: The NURBSphere tool creates a Cobb-NURBSphere, consisting of six NURBS patches.
- Note: The NURBS patches are of high order (5).

## 5.7 The Revolve Tool

- Arguments: The revolve tool takes the selected objects from the selection.
- Operation: The tool creates a Revolve object, and moves the selected objects to it.
- Note: See section Revolve Object for more information regarding the revolve object. This tool uses the object clipboard to move the objects so that the original clipboard contents are lost when this tool finishes.

## 5.8 The Extrude Tool

- Arguments: The extrude tool takes the selected objects from the selection.
- Operation: The tool creates an Extrude object, and moves the selected objects to it.
- Note: See section Extrude Object for more information regarding the extrude object. This tool uses the object clipboard to move the objects so that the original clipboard contents are lost when this tool finishes.

## 5.9 The Sweep Tool

- Arguments: The sweep tool takes the selected objects from the selection.
- Operation: The tool creates a Sweep object, and moves the selected objects to it.
- Note: See section Sweep Object for more information regarding the Sweep object. This tool uses the object clipboard to move the objects so that the original clipboard contents are lost when this tool finishes.

## 5.10 The Cap Tool

- Arguments: The cap tool takes the selected objects from the selection.
- Operation: The tool creates a Cap object, and moves the selected objects to it.
- Note: See section Cap Object for more information regarding the Cap object. This tool uses the object clipboard to move the objects so that the original clipboard contents are lost when this tool finishes.

## 5.11 The Birail1 Tool

- Arguments: The birail1 tool takes the selected objects from the selection.
- Operation: The tool creates a Birail1 object, and moves the selected objects to it.
- Note: See section Birail1 Object for more information regarding the Birail1 object. This tool uses the object clipboard to move the objects so that the original clipboard contents are lost when this tool finishes.

## 5.12 The Birail2 Tool

- Arguments: The birail2 tool takes the selected objects from the selection.
- Operation: The tool creates a Birail2 object, and moves the selected objects to it.
- Note: See section Birail2 Object for more information regarding the Birail2 object. This tool uses the object clipboard to move the objects so that the original clipboard contents are lost when this tool finishes.

## 5.13 The Gordon Tool

- Arguments: The gordon tool takes the selected objects from the selection.
- Operation: The tool creates a Gordon object, and moves the selected objects to it.
- Note: See section Gordon Object for more information regarding the Gordon object. This tool uses the object clipboard to move the objects so that the original clipboard contents are lost when this tool finishes.

## 5.14 The Skin Tool

- Arguments: The skin tool takes the selected objects from the selection.
- Operation: The tool creates a Skin object, and moves the selected objects to it.
- Note: See section Skin Object for more information regarding the Skin object. This tool uses the object clipboard to move the objects so that the original clipboard contents are lost when this tool finishes.

## 5.15 The Revert Tool

- Arguments: The revert tool takes all NURBS curves and ICurves from the selection.
- Operation: The direction of the selected curves will be reversed.
- Note: The direction of a curve is shown as a small arrow at the end of the curve. Eventually selected points will still be selected after this operation. See also the documentation of the corresponding scripting interface command.

## 5.16 The Concat Tool

- Arguments: The concat tool takes two NURBS curves from the selection.
- Operation: The selected NURBS curves will be concatenated and a new third curve will be created.
- Note: If one of the curves has weights, the resulting curve will have weights too. If the knot type of the first curve is `"Custom"`, it will be converted to `"NURB"`, otherwise the knot type of the new curve will be that of the first selected curve. Due to those changes of the knot values, the resulting curve might differ from the original curves. See also section ConcatNC Object. The original NURBS curves will not be deleted by this tool.

## 5.17 The Split Tool

Split Tool (left: original curve, right: resulting split curves for t=0.5)

- Arguments: The split curves tool takes a single NURBS curve from the selection and additionally requests a parametric value.
- Operation: The selected NURBS curve will be split into two new NURBS curves at the designated parametric value. The splitting process involves application of knot insertion, so that both new curves will get a custom knot vector.
- Note: The original selected NURBS curve will be changed and form the first of the two new curves, so you may want to keep a copy of it somewhere. See also the documentation of the corresponding scripting interface command.

## 5.18 The Trim Tool

Trim Tool (left: original curve, right: resulting trimmed curve for umin=0.1, umax=0.5)

- Arguments: The trim curves tool takes all selected NURBS curves from the selection and additionally requests two parametric values, umin and umax.
- Operation: The selected NURBS curves will be trimmed to the designated parametric range (umin, umax).
- Note: The trimming process involves the application of knot insertion so that the curves will get a custom knot vector. See also the documentation of the corresponding scripting interface command.

## 5.19 The Elevate Tool

Successive Application of Elevate Tool (Order 3 (left), 4 (middle), 5 (right))

- Arguments: The elevate tool takes a number of NURBS curves from the selection and additionally requests an integer value.
- Operation: The order of the selected NURBS curves will be raised by the specified integer value without changing the shape of the curve.
- Note: If the knot vector of the curve is not clamped, it will be clamped automatically. The knot type of the curve will be changed to custom. New control points will be added and the position of old control points may be changed in the progress. See also the documentation of the corresponding scripting interface command.

## 5.20 The Refine Tool

Successive Application of Refine Tool

- Arguments: The refine tool takes a number of NURBS curves from the selection.
- Operation: The knot vectors of the selected NURBS curves will be refined by inserting a knot in the middle of each inner knot interval without changing the shape of the curve.
- Note: Because a new knot is inserted in the middle of each interval, knot vectors of type NURB and B-Spline will not change in type. See the image above for an example of a successive refinement of a simple NURBS curve. Note that the shape of the curve does not change, but the position of certain control points does. If you want to refine a curve with new control points and not change the position of existing control points, use the NCAttribute property GUI instead (simply increase the length of the curve by oldlength-1). Also note that for periodic curves the refine tool just inserts control points into all control point intervals except for the first (last) p intervals (where p is the degree of the curve). The shape of the curve will be changed in this case. See also the documentation of the corresponding scripting interface command.

## 5.21 The Coarsen Tool

Successive Application of Coarsen Tool

- Arguments: The coarsen tool takes a number of NURBS curves from the selection.
- Operation: Every second control point in the control vectors of the selected NURBS curves will be deleted.
- Note: For periodic curves the coarsen tool will not remove control points from the first (last) p intervals (where p is the degree of the curve). For closed curves, the coarsen tool will not remove the last point. The coarsen tool will also remove knot values from curves with custom knot vectors. See also the documentation of the corresponding scripting interface command.

## 5.22 The Clamp Tool

Clamp Tool (left: original curve, right: clamped curve)

- Arguments: The clamp tool takes a number of NURBS curves from the selection.
- Operation: The knot vectors of the selected NURBS curves will be changed using knot insertion so that the first and the last knot have a multiplicity equal to the order of the curve, without changing the shape of the curve. The curve will interpolate the first and the last control point afterwards.
- Note: The knot type of the curves will be changed to `"Custom"`. The point selection will be removed from the original objects. See also the documentation of the corresponding scripting interface command.

## 5.23 The Insert Knot Tool

Left: original curve, Right: a knot has been inserted 1 time at t=0.5

- Arguments: The insert knot tool takes a number of NURBS curves from the selection and requests two additional values, a parametric value t and an integer value i.
- Operation: The specified knot (t) will be inserted i times into the knot vector of the selected curves, without changing the shape of the curve(s).
- Note: The knot type of the curves will be changed to `"Custom"`. The point selection will be removed from the original objects. See also the documentation of the corresponding scripting interface command.

## 5.24 The Remove Knot Tool

Remove Knot Tool (left: original curve, right: the knot at t=0.5 has been removed 1 time)

- Arguments: The remove knot tool takes a number of NURBS curves from the selection and requests three additional values, a parametric value t, an integer value i, and a tolerance tol.
- Operation: The specified knot (t) will be removed i times from the knot vector of the selected curves if the shape of the resulting curve does not deviate more than tol from the original curve in any point. If the knot can not be removed r times due to the tolerance, an error is reported and the original curve is left unchanged.
- Note: If tol is `"Inf"` (infinity) the tool tries to work without changing the shape of the curves, however, this is not guaranteed. The point selection will be removed from the original objects. See also the documentation of the corresponding scripting interface command.

## 5.25 The Plot Curvature Tool

Curvature Plot (top) of simple NURBS curve (bottom)

- Arguments: The plot curvature tool takes a number of NURBS curves from the selection and requests three additional values: the number of data points, the width value and the height value.
- Operation: A new NURBS curve, depicting the curvature of the selected NURBS curve, will be created for each of the selected NURBS curves. The curvature plots will have a length defined by the number of data points and will be scaled to the specified width and by the specified height value. See also the image above.

## 5.26 The Shift Closed B-Spline Tool

Shift Closed B-Spline Tool (left: Closed B-Spline Curve, right: Shifted Curve)

- Arguments: The shift closed B-Spline tool takes a number of NURBS curves, that should be closed B-Splines, from the selection and requests one additional integer parameter.
- Operation: The control points of the curve(s) will be shifted, so that the second control point will be the first after this operation. The shifting process will be repeated according to the integer parameter i given.
- Note: Eventually selected points will still be selected after this operation. See also the image above.

## 5.27 The To XY Tool

To XY Tool (left: original curve, right: modified curve)

- Arguments: The To XY tool takes a number of NURBS curves from the selection. The NURBS curves should be planar.
- Operation: The control points of the curve(s) will be rotated, so that they are in the XY plane of the respective object space defined by the NURBS curve object(s). Additionally, the rotation attributes of the NURBS curve object(s) will be changed so that the curve does not change its orientation with regard to other objects or the world space. See also the image above, where the left curve, planar but not defined in the XY plane will be changed, so that it is defined in the XY plane (mind the two different object coordinate systems in conjunction with the world coordinate system in the middle).
- Note: A reverse operation, apart from undo, would be to apply the current transformation attributes to the control points of the curves.

## 5.28 The Make Compatible Tool

Make Compatible Tool (left: Original Curves, right: Compatible Curves)

- Arguments: The Make Compatible tool takes a number of NURBS curves from the selection.
- Operation: The curves will be made compatible, so that they are of the same order and defined on the same knot vector.
- Note: This tool does not change the geometry of the curves. However, since clamping, degree elevation, and knot insertion may be used on the curves, their order, knot vectors, and control points may be changed. The point selection will be removed from the original objects.

## 5.29 The Rescale Knots to Range Tool

- Arguments: The rescale knots to range tool takes a number of NURBS curves from the selection and requests a range (two float values).
- Operation: The knot vectors of the curves will be scaled, so that their first and last values match the given range.
- Note: The knot type of the curve has to be `"Custom"`! This tool does not change the geometry of the curves.

## 5.30 The Rescale Knots to Mindist Tool

- Arguments: The rescale knots to mindist tool takes a number of NURBS curves from the selection and request a minimum distance value.
- Operation: The knot vectors of the curves will be scaled, so that no two knots have a distance smaller than the given minimum distance (except for multiple knots).
- Note: The knot type of the curve has to be `"Custom"`! This tool does not change the geometry of the curves.

## 5.31 The Collapse Points Tool

- Arguments: The collapse tool expects a selected NURBS curve or NURBS patch and a number of selected (tagged) control points (see section Selecting Points for information on how to select (tag) control points).
- Operation: The selected control points will be made a single multiple point, all points will get the coordinate values of the last tagged point.

## 5.32 The Explode Points Tool

- Arguments: The explode tool expects a selected NURBS curve or NURBS patch and a number of selected (tagged) multiple points (see section Selecting Points for information on how to select (tag) control points).
- Operation: The points forming the selected multiple points will be made to simple points again and may be edited separately.
- Note: Even though you might have exploded some multiple points Ayam will re-create them on several occasions like reading of a scene, inserting/deleting points, and applying the NCurveAttr or NPatchAttr property if all single control points of the multiple point(s) still have identical coordinate values (and the `"CreateMP"` option of the curve or patch object is activated). You should immediately edit the control points (move them apart) after exploding to avoid that they automatically collapse to a multiple point again!

## 5.33 The Swap UV Tool

- Arguments: The swap uv tool takes a number of NURBS patches, BPatch, or PatchMesh objects from the selection.
- Operation: The u and v dimension of the selected objects will be swapped (width and height will be exchanged) without altering the shape of the patches.

## 5.34 The Elevate UV Tool

- Arguments: The elevate uv tool takes a number of NURBS patches from the selection and additionally requests two integer values.
- Operation: The order of the selected NURBS patches will be raised by the specified integer values without changing the shape of the patches.
- Note: If the knot vector of the patch is not clamped, it will be clamped automatically. The knot type of the patch will be changed to `"Custom"`. New control points will be added and the position of old control points may be changed in the progress. The point selection will be removed from the original object.

## 5.35 The Revert U Tool

- Arguments: The revert u tool takes a number of NURBS patches or BPatch or PatchMesh objects from the selection.
- Operation: The control point arrays of the selected objects will be reversed in the u dimension (width).
- Note: See also the documentation of the corresponding scripting interface command.

## 5.36 The Revert V Tool

- Arguments: The revert v tool takes a number of NURBS patches or BPatch or PatchMesh objects from the selection.
- Operation: The control point arrays of the selected objects will be reversed in the v dimension (height).
- Note: See also the documentation of the corresponding scripting interface command.

## 5.37 The Patch Clamp Tool

Patch Clamp Tool (left: Original Patch with B-Spline Knot Vectors, right: Clamped Patch)

- Arguments: The patch clamp tool takes a number of NURBS patches from the selection.
- Operation: The knot vectors of a selected NURBS patch will be changed using knot insertion so that the first and the last knot (in each direction) have a multiplicity equal to the order of the patch (in the respective direction).
- Note: The shape of the patch will not change but the position of some control points will. The patch interpolates the first and the last control point afterwards. The knot types of the patch will be changed to type `"Custom"`. The point selection will be removed from the original object. There are also tools available that clamp a patch in U or V direction only. See also the documentation of the corresponding scripting interface commands clampuNP, and clampvNP.

## 5.38 The Patch Rescale Knots to Range Tool

- Arguments: The patch rescale knots to range tool takes a number of NURBS patches from the selection and requests a range.
- Operation: The knot vectors of the patches will be scaled, so that their first and last values match the given range. Trim curves, if present, will also be scaled to match the new range.
- Note: The knot types of the patch have to be `"Custom"`! This tool does not change the geometry of the patches. See also the documentation of the corresponding scripting interface command.

## 5.39 The Patch Rescale Knots to Mindist Tool

- Arguments: The rescale knots to mindist tool takes a number of NURBS patches from the selection and request a minimum distance value.
- Operation: The knot vectors of the patches will be scaled, so that no two knots have a distance smaller than the given minimum distance (except for multiple knots). Trim curves, if present, will also be scaled to match the new range.
- Note: The knot types of the patch have to be `"Custom"`! This tool does not change the geometry of the patches. See also the documentation of the corresponding scripting interface command.

## 5.40 The Patch Insert Knot Tool

Left: original patch, Right: a knot has been inserted 1 time at t=0.5

- Arguments: The insert knot tool takes a number of NURBS patches from the selection and requests two additional values, a parametric value t and an integer value i.
- Operation: The specified knot (t) will be inserted i times into the knot vector of the selected patches, without changing the shape of the patches.
- Note: The knot type of the patch will be changed to `"Custom"`. This tool does not change the geometry of the patches. The point selection will be removed from the original object. See also the documentation of the corresponding scripting interface commands insknuNP, and insknvNP.

## 5.41 The Patch Split Tools

- Arguments: The patch split tools take a number of NURBS patches from the selection and request a parametric value t (in U or V parametric dimension, respectively).
- Operation: The patches will be split at the parametric value t into two patches (in U or V parametric dimension, respectively) using knot insertion.
- Note: The original patch will be modified and a new patch will be created. The point selection will be removed from the original object. Trim curves will not be honored properly. See also the documentation of the corresponding scripting interface commands splituNP, and splitvNP.

## 5.42 The Extract Curve Tool

- Arguments: The extract curve tool takes the selected objects from the selection.
- Operation: The tool creates instances from all selected objects then creates an ExtrNC object and moves the instances to it.
- Note: This tool uses the object clipboard to move the objects around so that the original clipboard contents are lost when this tool finishes. Eventually present trim curves will not be honored properly. See section ExtrNC Object for more information regarding the ExtrNC object.

## 5.43 The Extract Patch Tool

- Arguments: The extract patch tool takes the selected objects from the selection.
- Operation: The tool creates instances from all selected objects then creates an ExtrNP object and moves the instances to it.
- Note: This tool uses the object clipboard to move the objects around so that the original clipboard contents are lost when this tool finishes. Eventually present trim curves will not be honored properly. See section ExtrNP object for more information regarding the ExtrNP object. See also the documentation of the corresponding scripting interface command.

## 5.44 The Split to Curves Tool

- Arguments: The split to curves tool takes a single NURBS patch from the selection.
- Operation: The selected NURBS patch will be split into NURBS curves, along direction U or V.
- Note: The original NURBS patch object is not deleted. See also the documentation of the corresponding scripting interface command.

## 5.45 The Build from Curves Tool

- Arguments: The build from curves tool takes a number of NURBS curves from the selection.
- Operation: The selected NURBS curves will be parsed, all curves that are of equal length or longer than the first selected curve will be used to form a new NURBS patch of the following dimensions: Width: length of the first selected curve, Height: number of used curves. The order in U direction (Order_U) will be equal to the number of used curves for numbers of two to four and four for bigger numbers of used curves. The knot type in U direction (Knot-Type_U) will always be NURB. Other parameters (Order_V, Knot-Type_V, Knots_V) are taken from the first curve.
- Note: The original NURBS curves objects are not deleted. See also the documentation of the corresponding scripting interface command.

## 5.46 The Tesselation Tool

GUI of Tesselation Tool

- Arguments: The tesselation tool takes all NURBS patches and NURBS patch providing objects from the selection.
- Operation: A modal dialog box (see image above) will pop up, that allows to select a tesselation method via a drop-down menu and to tune the corresponding tesselation parameter(s) using a slider and an entry widget. The initial method and parameter values will be derived from the `"TP"` tag of the first of the selected objects (if it has such a tag).

  The selected or provided NURBS patches will be tesselated with the chosen method and parameters. The PolyMesh objects created by the tesselation will immediately be displayed in all view windows instead of the original objects. Whenever tesselation method or parameters are changed, the tesselation will be recomputed and displayed, thus, allowing an immediate estimation of the tesselation quality.

  If the preference option `"Modelling/LazyNotify"` is enabled, updates of the tesselation that normally occur while dragging the slider(s) will be deferred until the mouse button is released.

  If the `"Ok"` button is pressed to close the tesselation tool, all selected objects will be replaced by their tesselated counterparts; if `"Cancel"` is used, all selected objects remain unchanged.

  If the check box `"SaveToTag"` is activated, closing the tesselation tool using `"Cancel"` will also add a `"TP"` tag containing the currently selected method and parameter value to all selected objects. This tag can be evaluated later, when the respective objects are converted to PolyMesh objects. Since Ayam 1.11 also the conversion mechanism of objects keeps the `"TP"` tags intact, so that one may e.g. save tesselation parameters for a Sphere or a Revolve object. Upon conversion of the Sphere or Revolve object via a NURBS patch to a PolyMesh, the tesselation parameters will be retained. Mind that the `"SaveToTag"` option will be activated automatically if any of the objects to tesselate already have a `"TP"` tag.

- Note: The tesselation tool will block most other parts of Ayam while it is running. It is, however, possible to adjust view parameters while the tesselation tool is open, to examine the tesselation result more closely or from different viewing angles. The initial values of the parameter slider bounds may be changed by simply entering values that are out of bounds into the respective entry widget, then pressing the `<Tab>` key. The resolution of the slider is calculated automatically from the resolution of the value entered in the entry widget.

See section Miscellaneous Preferences for a more extensive discussion of the tesselation methods and their parameter(s).

Next Previous Contents