Curve Authoring#

The curve manipulator allows you to create 3d curves in your scene.

The curve is a “proxy” Xform prim on a sublayer of session layer for each Control Vertex (CV) on the UsdGeomBasisCurves.

The proxy prims and original CVs (“points” attribute) are synced with each other (i.e. move one changes the other).

This way, Kit’s transform manipulator can be used to manipulate CVs without any special code path.

Getting Started#

To start using the toolset, the Curve Manipulators extension must be enabled in Window->Extensions.

CurveManipExtension

This will enable both the Curve Manipulator and the Curve Creator Tool extensions.

The Curve Creation options will now appear in the Create => BasisCurves menu as the Bezier Curve Tool and the Pencil Tool options.

CurveCreate

Bezier Curve Tool#

CurveCreation

You can create a Bezier Curve (backed by UsdGeomBasisCurve) from scratch by going to Create -> BasisCurves -> Bezier Curve Tool.

Then Shift click on your scene in the viewport to create your curve. Each click will create another CV in your curve.

Press Enter or Right click and choose Stop Editing Control Vertices to complete your curve creation.

It will create a UsdGeomBasisCurve, set it to Bezier and enter curve editing mode.

Note

a Bezier Tool help box will appear in the top middle of the viewport when you click on Create -> BasisCurves -> Bezier Curve Tool.

CurveCreateBox

Note

Enable snap if you want the curve to follow any geometry you might have in your scene.

Pencil Tool#

CurveCreationPencil

You can create a freehand Curve from scratch by going to Create -> BasisCurves -> Pencil Tool.

A Pencil Tool Settings window will appear

CurvePencilSettings

Pencil Tool Settings

Description

Interpolate Method

Cubic: Pencil tool will create a Bezier curve
Linear: Pencil tool will create a linear curve

Spacing

The distance in units between control vertices on the curve

Then Shift click drag on your scene in the viewport to create your curve. the curve will be created when the mouse is released.

Note

Enable snap if you want the pencil tool’s curve to follow any geometry you might have in your scene.

Curve Editing#

CurveEditMenu

Enable Edit Control Vertices#

To edit a curve you need to have Edit Control Vertices enabled and select a CV.

There are three ways to enable Edit control vertices.

  • Right click on the Curve and Select Edit Control Verices from the menu.

BasisCurveEnable01
  • Right click on the Curve in the Stage and select Edit Control vertices.

BasisCurveEnable02
  • Select the Curve and in Property -> Basis Curves click on the Edit control vertices button.

BasisCurveEnable03

Editing a Curve#

After enabling the CVs you then Right click (RCL) the curve in the stage to get an editing menu.

If the UsdGeomBasisCurves is Bezier curve, additional manipulations are added to the context menu of the CV.

Press Enter or Right click and choose Stop Editing Control Vertices to apply your changes.

Curve Editing

Description

Break Anchor Tangents

Break anchor tangents will break the tangents of the CV to make sharper corners if you choose
You can control each Tangent independent of the other

Smooth Anchor Tangents

Smoothing unbreak a tangent and will allow the anchor tangents to move together

Even Anchor Tangents

This will even out the anchor tangents size

Uneven Anchor Tangents

This will cause the tangents to be uneven

Delete CV(s)

This will remove the selected CV. Only for non-tangent CV

Bezier

Bezier will transform a CV into a Bezier CV if it is not a Bezier CV
It will use the connecting points to create the CV and tangents

Bezier Corner

This will create a sharp corner CV with Tangent handles

Corner

This will create a sharp corner CV without Tangent handles

Open/Close Curves

If the curve is an opened, this option will close the curve
if the curve is closed, this option will open the curve at its ending CV

Manipulating a Curve#

Depending on the state of the curves, manipulating the anchor and tangents will behave accordingly.

To transform a CV, Select the CV and use whichever transform manipulator you need from the sidebar. Transform, rotate, scale .

Scale or rotate the anchor CV affects its tangents CVs. Use the scale or Rotate manipulator to do this.

Multiple CVs across multiple UsdGeomBasisCurves can be manipulated at the same time.

Adding and Appending Control Vertices#

To add a CV along existing Bezier Curve, hold SHIFT during curve editing mode to sample a point along the curve, and click to insert a new CV while keeping original shape of the curve.

To append a CV to the end of existing Bezier Curve, hold SHIFT during curve editing mode and click (or click and drag to create tangents) on empty space to append new CV.

Note

If the Perspective camera or a user defined camera is selected, the new point is sampled on the floor plane (XZ for Y-up stage and XY for Z-up stage).

Note

If a built-in orthographic camera (Top, Front, Right) is selected, the point is sampled on the corresponding plane. If mouse ray doesn’t not hit the desired plane, no CV will be added.

Press Enter or right click and choose Stop Editing Control Vertices to exit Curve Editing mode.

Note

you can also exit editing by selecting anything else in Stage window. This help box will appear

CurveExit

Curve Property Window#

After selecting a curve this parameters window will appear in Property -> Basis Curves

BasisCurvesProperty01

Basis Curves Property

Description

Edit Control Vertices

This button allows you to enable a selected curve to be edited.

The Basis specifies the vstep and matrix used for cubic interpolation.

Note

the ‘hermite’ and ‘power’ token have been removed. We’ve provided USDGeoHermiteCurves as an alternative for the ‘hermite’ curves.

Basis Curves Basis

Description

Bezier

Bezier Method

bspline

bspline Method

catmulrom

catmulrom Method

The type section determines how the curve will be interpolated between CVs.

Basis Curves type

Description

Cubic

Cubic curves use a basis matrix with four vertices to interpolate a segment

linear

Linear curves interpolate linearly between two vertices.

The wrap section determines how the curve will create its wrap.

Basis Curves wrap

Description

non periodic

this is the normal non looped curve.

periodic

The curve when rendered will repeat the initial vertices (dependent on the vstep) to close the curve.

pinned

If wrap is set to pinned, phantom points maybe created to ensure that the curve interpolation startes at P[0] and ends at P[N-1].