HDK
|
#include <nurbsPatch.h>
Static Public Member Functions | |
static USDGEOM_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USDGEOM_API UsdGeomNurbsPatch | Get (const UsdStagePtr &stage, const SdfPath &path) |
static USDGEOM_API UsdGeomNurbsPatch | Define (const UsdStagePtr &stage, const SdfPath &path) |
Static Public Member Functions inherited from UsdGeomPointBased | |
static USDGEOM_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USDGEOM_API UsdGeomPointBased | Get (const UsdStagePtr &stage, const SdfPath &path) |
static USDGEOM_API bool | ComputeExtent (const VtVec3fArray &points, VtVec3fArray *extent) |
static USDGEOM_API bool | ComputeExtent (const VtVec3fArray &points, const GfMatrix4d &transform, VtVec3fArray *extent) |
static USDGEOM_API bool | ComputePointsAtTime (VtArray< GfVec3f > *points, UsdStageWeakPtr &stage, UsdTimeCode time, const VtVec3fArray &positions, const VtVec3fArray &velocities, UsdTimeCode velocitiesSampleTime, const VtVec3fArray &accelerations, float velocityScale=1.0) |
Static Public Member Functions inherited from UsdGeomGprim | |
static USDGEOM_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USDGEOM_API UsdGeomGprim | Get (const UsdStagePtr &stage, const SdfPath &path) |
Static Public Member Functions inherited from UsdGeomBoundable | |
static USDGEOM_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USDGEOM_API UsdGeomBoundable | Get (const UsdStagePtr &stage, const SdfPath &path) |
static USDGEOM_API bool | ComputeExtentFromPlugins (const UsdGeomBoundable &boundable, const UsdTimeCode &time, VtVec3fArray *extent) |
static USDGEOM_API bool | ComputeExtentFromPlugins (const UsdGeomBoundable &boundable, const UsdTimeCode &time, const GfMatrix4d &transform, VtVec3fArray *extent) |
Static Public Member Functions inherited from UsdGeomXformable | |
static USDGEOM_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USDGEOM_API UsdGeomXformable | Get (const UsdStagePtr &stage, const SdfPath &path) |
static USDGEOM_API bool | GetTimeSamples (std::vector< UsdGeomXformOp > const &orderedXformOps, std::vector< double > *times) |
static USDGEOM_API bool | GetTimeSamplesInInterval (std::vector< UsdGeomXformOp > const &orderedXformOps, const GfInterval &interval, std::vector< double > *times) |
static USDGEOM_API bool | GetLocalTransformation (GfMatrix4d *transform, std::vector< UsdGeomXformOp > const &ops, const UsdTimeCode time) |
static USDGEOM_API bool | IsTransformationAffectedByAttrNamed (const TfToken &attrName) |
Static Public Member Functions inherited from UsdGeomImageable | |
static USDGEOM_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USDGEOM_API UsdGeomImageable | Get (const UsdStagePtr &stage, const SdfPath &path) |
static USDGEOM_API const TfTokenVector & | GetOrderedPurposeTokens () |
Static Public Member Functions inherited from UsdTyped | |
static USD_API const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
static USD_API UsdTyped | Get (const UsdStagePtr &stage, const SdfPath &path) |
Static Public Member Functions inherited from UsdSchemaBase | |
static const TfTokenVector & | GetSchemaAttributeNames (bool includeInherited=true) |
Static Public Attributes | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::ConcreteTyped |
Static Public Attributes inherited from UsdGeomPointBased | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractTyped |
Static Public Attributes inherited from UsdGeomGprim | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractTyped |
Static Public Attributes inherited from UsdGeomBoundable | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractTyped |
Static Public Attributes inherited from UsdGeomXformable | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractTyped |
Static Public Attributes inherited from UsdGeomImageable | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractTyped |
Static Public Attributes inherited from UsdTyped | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractBase |
Static Public Attributes inherited from UsdSchemaBase | |
static const UsdSchemaKind | schemaKind = UsdSchemaKind::AbstractBase |
Protected Member Functions | |
USDGEOM_API UsdSchemaKind | _GetSchemaKind () const override |
Protected Member Functions inherited from UsdGeomPointBased | |
USDGEOM_API UsdSchemaKind | _GetSchemaKind () const override |
Protected Member Functions inherited from UsdGeomXformable | |
USDGEOM_API UsdSchemaKind | _GetSchemaKind () const override |
Protected Member Functions inherited from UsdTyped | |
USD_API bool | _IsCompatible () const override |
Protected Member Functions inherited from UsdSchemaBase | |
virtual UsdSchemaKind | _GetSchemaType () const |
const TfType & | _GetType () const |
USD_API UsdAttribute | _CreateAttr (TfToken const &attrName, SdfValueTypeName const &typeName, bool custom, SdfVariability variability, VtValue const &defaultValue, bool writeSparsely) const |
Friends | |
class | UsdSchemaRegistry |
Encodes a rational or polynomial non-uniform B-spline surface, with optional trim curves.
The encoding mostly follows that of RiNuPatch and RiTrimCurve: https://renderman.pixar.com/resources/RenderMan_20/geometricPrimitives.html#rinupatch , with some minor renaming and coalescing for clarity.
The layout of control vertices in the points attribute inherited from UsdGeomPointBased is row-major with U considered rows, and V columns.
The authored points, orders, knots, weights, and ranges are all that is required to render the nurbs patch. However, the only way to model closed surfaces with nurbs is to ensure that the first and last control points along the given axis are coincident. Similarly, to ensure the surface is not only closed but also C2 continuous, the last order - 1 control points must be (correspondingly) coincident with the first order - 1 control points, and also the spacing of the last corresponding knots must be the same as the first corresponding knots.
Form is provided as an aid to interchange between modeling and animation applications so that they can robustly identify the intent with which the surface was modelled, and take measures (if they are able) to preserve the continuity/concidence constraints as the surface may be rigged or deformed.
Nurbs vs Subdivision Surfaces
Nurbs are an important modeling primitive in CAD/CAM tools and early computer graphics DCC's. Because they have a natural UV parameterization they easily support "trim curves", which allow smooth shapes to be carved out of the surface.
However, the topology of the patch is always rectangular, and joining two nurbs patches together (especially when they have differing numbers of spans) is difficult to do smoothly. Also, nurbs are not supported by the Ptex texturing technology (http://ptex.us).
Neither of these limitations are shared by subdivision surfaces; therefore, although they do not subscribe to trim-curve-based shaping, subdivs are often considered a more flexible modeling primitive.
For any described attribute Fallback Value or Allowed Values below that are text/tokens, the actual token is published and defined in UsdGeomTokens. So to set an attribute to the value "rightHanded", use UsdGeomTokens->rightHanded as the value.
Definition at line 109 of file nurbsPatch.h.
Construct a UsdGeomNurbsPatch on UsdPrim prim
. Equivalent to UsdGeomNurbsPatch::Get(prim.GetStage(), prim.GetPath()) for a valid prim
, but will not immediately throw an error for an invalid prim
Definition at line 121 of file nurbsPatch.h.
|
inlineexplicit |
Construct a UsdGeomNurbsPatch on the prim held by schemaObj
. Should be preferred over UsdGeomNurbsPatch(schemaObj.GetPrim()), as it preserves SchemaBase state.
Definition at line 129 of file nurbsPatch.h.
|
virtual |
Destructor.
|
overrideprotectedvirtual |
Returns the kind of schema this class belongs to.
Reimplemented from UsdGeomGprim.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreatePointWeightsAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetPointWeightsAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateTrimCurveCountsAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetTrimCurveCountsAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateTrimCurveKnotsAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetTrimCurveKnotsAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateTrimCurveOrdersAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetTrimCurveOrdersAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateTrimCurvePointsAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetTrimCurvePointsAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateTrimCurveRangesAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetTrimCurveRangesAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateTrimCurveVertexCountsAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetTrimCurveVertexCountsAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateUFormAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetUFormAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateUKnotsAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetUKnotsAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateUOrderAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetUOrderAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateURangeAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetURangeAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateUVertexCountAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetUVertexCountAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateVFormAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetVFormAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateVKnotsAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetVKnotsAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateVOrderAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetVOrderAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateVRangeAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetVRangeAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::CreateVVertexCountAttr | ( | VtValue const & | defaultValue = VtValue() , |
bool | writeSparsely = false |
||
) | const |
See GetVVertexCountAttr(), and also Usd_Create_Or_Get_Property for when to use Get vs Create. If specified, author defaultValue
as the attribute's default, sparsely (when it makes sense to do so) if writeSparsely
is true
- the default for writeSparsely
is false
.
|
static |
Attempt to ensure a UsdPrim adhering to this schema at path
is defined (according to UsdPrim::IsDefined()) on this stage.
If a prim adhering to this schema at path
is already defined on this stage, return that prim. Otherwise author an SdfPrimSpec with specifier == SdfSpecifierDef and this schema's prim type name for the prim at path
at the current EditTarget. Author SdfPrimSpec s with specifier
== SdfSpecifierDef and empty typeName at the current EditTarget for any nonexistent, or existing but not Defined ancestors.
The given path must be an absolute prim path that does not contain any variant selections.
If it is impossible to author any of the necessary PrimSpecs, (for example, in case path cannot map to the current UsdEditTarget's namespace) issue an error and return an invalid UsdPrim.
Note that this method may return a defined prim whose typeName does not specify this schema class, in case a stronger typeName opinion overrides the opinion at the current EditTarget.
|
static |
Return a UsdGeomNurbsPatch holding the prim adhering to this schema at path
on stage
. If no prim exists at path
on stage
, or if the prim at that path does not adhere to this schema, return an invalid schema object. This is shorthand for the following:
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetPointWeightsAttr | ( | ) | const |
Optionally provides "w" components for each control point, thus must be the same length as the points attribute. If authored, the patch will be rational. If unauthored, the patch will be polynomial, i.e. weight for all points is 1.0.
Declaration | double[] pointWeights |
C++ Type | VtArray<double> |
Usd Type | SdfValueTypeNames->DoubleArray |
|
static |
Return a vector of names of all pre-declared attributes for this schema class and all its ancestor classes. Does not include attributes that may be authored by custom/extended methods of the schemas involved.
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetTrimCurveCountsAttr | ( | ) | const |
Each element specifies how many curves are present in each "loop" of the trimCurve, and the length of the array determines how many loops the trimCurve contains. The sum of all elements is the total nuber of curves in the trim, to which we will refer as nCurves in describing the other trim attributes.
Declaration | int[] trimCurve:counts |
C++ Type | VtArray<int> |
Usd Type | SdfValueTypeNames->IntArray |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetTrimCurveKnotsAttr | ( | ) | const |
Flat list of parametric values for each of the nCurves curves. There will be as many knots as the sum over all elements of vertexCounts plus the sum over all elements of orders.
Declaration | double[] trimCurve:knots |
C++ Type | VtArray<double> |
Usd Type | SdfValueTypeNames->DoubleArray |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetTrimCurveOrdersAttr | ( | ) | const |
Flat list of orders for each of the nCurves curves.
Declaration | int[] trimCurve:orders |
C++ Type | VtArray<int> |
Usd Type | SdfValueTypeNames->IntArray |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetTrimCurvePointsAttr | ( | ) | const |
Flat list of homogeneous 2D points (u, v, w) that comprise the nCurves curves. The number of points should be equal to the um over all elements of vertexCounts.
Declaration | double3[] trimCurve:points |
C++ Type | VtArray<GfVec3d> |
Usd Type | SdfValueTypeNames->Double3Array |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetTrimCurveRangesAttr | ( | ) | const |
Flat list of minimum and maximum parametric values (as defined by knots) for each of the nCurves curves.
Declaration | double2[] trimCurve:ranges |
C++ Type | VtArray<GfVec2d> |
Usd Type | SdfValueTypeNames->Double2Array |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetTrimCurveVertexCountsAttr | ( | ) | const |
Flat list of number of vertices for each of the nCurves curves.
Declaration | int[] trimCurve:vertexCounts |
C++ Type | VtArray<int> |
Usd Type | SdfValueTypeNames->IntArray |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetUFormAttr | ( | ) | const |
Interpret the control grid and knot vectors as representing an open, geometrically closed, or geometrically closed and C2 continuous surface along the U dimension.
Declaration | uniform token uForm = "open" |
C++ Type | TfToken |
Usd Type | SdfValueTypeNames->Token |
Variability | SdfVariabilityUniform |
Allowed Values | open, closed, periodic |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetUKnotsAttr | ( | ) | const |
Knot vector for U direction providing U parameterization. The length of this array must be ( uVertexCount + uOrder ), and its entries must take on monotonically increasing values.
Declaration | double[] uKnots |
C++ Type | VtArray<double> |
Usd Type | SdfValueTypeNames->DoubleArray |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetUOrderAttr | ( | ) | const |
Order in the U direction. Order must be positive and is equal to the degree of the polynomial basis to be evaluated, plus 1.
Declaration | int uOrder |
C++ Type | int |
Usd Type | SdfValueTypeNames->Int |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetURangeAttr | ( | ) | const |
Provides the minimum and maximum parametric values (as defined by uKnots) over which the surface is actually defined. The minimum must be less than the maximum, and greater than or equal to the value of uKnots[uOrder-1]. The maxium must be less than or equal to the last element's value in uKnots.
Declaration | double2 uRange |
C++ Type | GfVec2d |
Usd Type | SdfValueTypeNames->Double2 |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetUVertexCountAttr | ( | ) | const |
Number of vertices in the U direction. Should be at least as large as uOrder.
Declaration | int uVertexCount |
C++ Type | int |
Usd Type | SdfValueTypeNames->Int |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetVFormAttr | ( | ) | const |
Interpret the control grid and knot vectors as representing an open, geometrically closed, or geometrically closed and C2 continuous surface along the V dimension.
Declaration | uniform token vForm = "open" |
C++ Type | TfToken |
Usd Type | SdfValueTypeNames->Token |
Variability | SdfVariabilityUniform |
Allowed Values | open, closed, periodic |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetVKnotsAttr | ( | ) | const |
Knot vector for V direction providing U parameterization. The length of this array must be ( vVertexCount + vOrder ), and its entries must take on monotonically increasing values.
Declaration | double[] vKnots |
C++ Type | VtArray<double> |
Usd Type | SdfValueTypeNames->DoubleArray |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetVOrderAttr | ( | ) | const |
Order in the V direction. Order must be positive and is equal to the degree of the polynomial basis to be evaluated, plus 1.
Declaration | int vOrder |
C++ Type | int |
Usd Type | SdfValueTypeNames->Int |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetVRangeAttr | ( | ) | const |
Provides the minimum and maximum parametric values (as defined by vKnots) over which the surface is actually defined. The minimum must be less than the maximum, and greater than or equal to the value of vKnots[vOrder-1]. The maxium must be less than or equal to the last element's value in vKnots.
Declaration | double2 vRange |
C++ Type | GfVec2d |
Usd Type | SdfValueTypeNames->Double2 |
USDGEOM_API UsdAttribute UsdGeomNurbsPatch::GetVVertexCountAttr | ( | ) | const |
Number of vertices in the V direction. Should be at least as large as vOrder.
Declaration | int vVertexCount |
C++ Type | int |
Usd Type | SdfValueTypeNames->Int |
|
friend |
Definition at line 193 of file nurbsPatch.h.
|
static |
Compile time constant representing what kind of schema this class is.
Definition at line 115 of file nurbsPatch.h.