HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TsKnot Class Reference

#include <knot.h>

+ Inheritance diagram for TsKnot:

Public Member Functions

Construction and value semantics

Unlike splines, knots have a fixed value type from the time they are constructed.

Knots are fairly small, so copying them is not particularly expensive. Move construction and assignment are supported, but this is only beneficial when there is custom data.

TS_API TsKnot ()
 Default constructor creates a double-typed knot. More...
 
TS_API TsKnot (TfType valueType, TsCurveType curveType=TsCurveTypeBezier)
 Creates a knot with a specified value type. More...
 
TS_API TsKnot (const TsKnot &other)
 Default constructor creates a double-typed knot. More...
 
TS_API TsKnot (TsKnot &&other)
 Default constructor creates a double-typed knot. More...
 
TS_API ~TsKnot ()
 Default constructor creates a double-typed knot. More...
 
TS_API TsKnotoperator= (const TsKnot &other)
 Default constructor creates a double-typed knot. More...
 
TS_API TsKnotoperator= (TsKnot &&other)
 Default constructor creates a double-typed knot. More...
 
TS_API bool operator== (const TsKnot &other) const
 Default constructor creates a double-typed knot. More...
 
TS_API bool operator!= (const TsKnot &other) const
 Default constructor creates a double-typed knot. More...
 
Knot time
TS_API bool SetTime (TsTime time)
 
TS_API TsTime GetTime () const
 
Interpolation mode
TS_API bool SetNextInterpolation (TsInterpMode mode)
 Sets the interpolation mode of the spline segment following this knot. More...
 
TS_API TsInterpMode GetNextInterpolation () const
 Sets the interpolation mode of the spline segment following this knot. More...
 
Knot value
TS_API TfType GetValueType () const
 
template<typename T >
bool IsHolding () const
 
TS_API bool SetValue (VtValue value)
 
template<typename T >
bool SetValue (const T value)
 
TS_API bool GetValue (VtValue *valueOut) const
 
template<typename T >
bool GetValue (T *valueOut) const
 
Dual values
TS_API bool IsDualValued () const
 
TS_API bool SetPreValue (VtValue value)
 
template<typename T >
bool SetPreValue (const T value)
 
TS_API bool GetPreValue (VtValue *valueOut) const
 
template<typename T >
bool GetPreValue (T *valueOut) const
 
TS_API bool ClearPreValue ()
 
Curve type

Each knot's curve type must match the curve type of the spline to which it belongs. Knot objects are Bezier by default.

In a Hermite spline, tangent widths are determined automatically. They are always one-third of the width of the segment to which they belong.

TS_API bool SetCurveType (TsCurveType curveType)
 
TS_API TsCurveType GetCurveType () const
 
Pre-tangent

Tangents are expressed as width and slope.

It is an error to read or write widths for Hermite knots.

Note
Note that Maya uses tangents in a different format. TsConvertFromStandardTangent is a utility function that can convert a standard width and slope to values expected by Maya.
TS_API bool SetPreTanWidth (TsTime width)
 
TS_API TsTime GetPreTanWidth () const
 
TS_API bool SetPreTanSlope (VtValue slope)
 
template<typename T >
bool SetPreTanSlope (T slope)
 
TS_API bool GetPreTanSlope (VtValue *slopeOut) const
 
template<typename T >
bool GetPreTanSlope (T *slopeOut) const
 
Post-tangent
TS_API bool SetPostTanWidth (TsTime width)
 
TS_API TsTime GetPostTanWidth () const
 
TS_API bool SetPostTanSlope (VtValue slope)
 
template<typename T >
bool SetPostTanSlope (T slope)
 
TS_API bool GetPostTanSlope (VtValue *slopeOut) const
 
template<typename T >
bool GetPostTanSlope (T *slopeOut) const
 
Custom data

Knots may have custom data: an arbitrary VtDictionary of key/value pairs.

Custom data does not affect evaluation. It is only for clients' use.

When knots are edited, Ts does not automatically alter any custom data. This means that, if splines are written out, edited by other clients that do not recognize a particular kind of custom data, and read back in, then that custom data may become outdated.

TS_API bool SetCustomData (VtDictionary customData)
 
TS_API VtDictionary GetCustomData () const
 
TS_API bool SetCustomDataByKey (const std::string &keyPath, VtValue value)
 
TS_API VtValue GetCustomDataByKey (const std::string &keyPath) const
 
Continuity queries
TS_API bool IsC0Continuous () const
 Not yet implemented. More...
 
TS_API bool IsG1Continuous () const
 Not yet implemented. More...
 
TS_API bool IsC1Continuous () const
 Not yet implemented. More...
 

Protected Member Functions

 TsKnot (Ts_KnotData *data, TfType valueType, VtDictionary &&customData)
 
Ts_KnotData_GetData ()
 
const Ts_KnotData_GetData () const
 

Friends

class TsSpline
 
class TsKnotMap
 
class TsRegressionPreventer
 

Detailed Description

A knot belonging to a TsSpline.

This class is non-templated, but can hold data for varying value types (double, float, and half). All knots in a spline must have the same value type.

See Also
TsTypedKnot

Definition at line 39 of file knot.h.

Constructor & Destructor Documentation

TS_API TsKnot::TsKnot ( )

Default constructor creates a double-typed knot.

TS_API TsKnot::TsKnot ( TfType  valueType,
TsCurveType  curveType = TsCurveTypeBezier 
)

Creates a knot with a specified value type.

TS_API TsKnot::TsKnot ( const TsKnot other)

Default constructor creates a double-typed knot.

TS_API TsKnot::TsKnot ( TsKnot &&  other)

Default constructor creates a double-typed knot.

TS_API TsKnot::~TsKnot ( )

Default constructor creates a double-typed knot.

TsKnot::TsKnot ( Ts_KnotData data,
TfType  valueType,
VtDictionary &&  customData 
)
protected

Member Function Documentation

Ts_KnotData* TsKnot::_GetData ( )
inlineprotected

Definition at line 290 of file knot.h.

const Ts_KnotData* TsKnot::_GetData ( ) const
inlineprotected

Definition at line 291 of file knot.h.

TS_API bool TsKnot::ClearPreValue ( )
TS_API TsCurveType TsKnot::GetCurveType ( ) const
TS_API VtDictionary TsKnot::GetCustomData ( ) const
TS_API VtValue TsKnot::GetCustomDataByKey ( const std::string &  keyPath) const
TS_API TsInterpMode TsKnot::GetNextInterpolation ( ) const

Sets the interpolation mode of the spline segment following this knot.

TS_API bool TsKnot::GetPostTanSlope ( VtValue slopeOut) const
template<typename T >
bool TsKnot::GetPostTanSlope ( T slopeOut) const

Definition at line 570 of file knot.h.

TS_API TsTime TsKnot::GetPostTanWidth ( ) const
TS_API bool TsKnot::GetPreTanSlope ( VtValue slopeOut) const
template<typename T >
bool TsKnot::GetPreTanSlope ( T slopeOut) const

Definition at line 543 of file knot.h.

TS_API TsTime TsKnot::GetPreTanWidth ( ) const
TS_API bool TsKnot::GetPreValue ( VtValue valueOut) const
template<typename T >
bool TsKnot::GetPreValue ( T valueOut) const

Definition at line 508 of file knot.h.

TS_API TsTime TsKnot::GetTime ( ) const
TS_API bool TsKnot::GetValue ( VtValue valueOut) const
template<typename T >
bool TsKnot::GetValue ( T valueOut) const

Definition at line 483 of file knot.h.

TS_API TfType TsKnot::GetValueType ( ) const
TS_API bool TsKnot::IsC0Continuous ( ) const

Not yet implemented.

TS_API bool TsKnot::IsC1Continuous ( ) const

Not yet implemented.

TS_API bool TsKnot::IsDualValued ( ) const
TS_API bool TsKnot::IsG1Continuous ( ) const

Not yet implemented.

template<typename T >
bool TsKnot::IsHolding ( ) const

Definition at line 465 of file knot.h.

TS_API bool TsKnot::operator!= ( const TsKnot other) const

Default constructor creates a double-typed knot.

TS_API TsKnot& TsKnot::operator= ( const TsKnot other)

Default constructor creates a double-typed knot.

TS_API TsKnot& TsKnot::operator= ( TsKnot &&  other)

Default constructor creates a double-typed knot.

TS_API bool TsKnot::operator== ( const TsKnot other) const

Default constructor creates a double-typed knot.

TS_API bool TsKnot::SetCurveType ( TsCurveType  curveType)
TS_API bool TsKnot::SetCustomData ( VtDictionary  customData)
TS_API bool TsKnot::SetCustomDataByKey ( const std::string &  keyPath,
VtValue  value 
)
TS_API bool TsKnot::SetNextInterpolation ( TsInterpMode  mode)

Sets the interpolation mode of the spline segment following this knot.

TS_API bool TsKnot::SetPostTanSlope ( VtValue  slope)
template<typename T >
bool TsKnot::SetPostTanSlope ( T  slope)

Definition at line 558 of file knot.h.

TS_API bool TsKnot::SetPostTanWidth ( TsTime  width)
TS_API bool TsKnot::SetPreTanSlope ( VtValue  slope)
template<typename T >
bool TsKnot::SetPreTanSlope ( T  slope)

Definition at line 531 of file knot.h.

TS_API bool TsKnot::SetPreTanWidth ( TsTime  width)
TS_API bool TsKnot::SetPreValue ( VtValue  value)
template<typename T >
bool TsKnot::SetPreValue ( const T  value)

Definition at line 495 of file knot.h.

TS_API bool TsKnot::SetTime ( TsTime  time)
TS_API bool TsKnot::SetValue ( VtValue  value)
template<typename T >
bool TsKnot::SetValue ( const T  value)

Definition at line 471 of file knot.h.

Friends And Related Function Documentation

friend class TsKnotMap
friend

Definition at line 279 of file knot.h.

Definition at line 280 of file knot.h.

friend class TsSpline
friend

Definition at line 278 of file knot.h.


The documentation for this class was generated from the following file: