kfcurveglobal.h File Reference

#include <fbxfilesdk/fbxfilesdk_def.h>
#include <fbxfilesdk/components/kbaselib/klib/karrayul.h>
#include <fbxfilesdk/components/kbaselib/klib/ktime.h>
#include <fbxfilesdk/components/kfcurve/kfcurve.h>
#include <fbxfilesdk/fbxfilesdk_nsbegin.h>
#include <fbxfilesdk/fbxfilesdk_nsend.h>

Go to the source code of this file.

Classes

class   KSmartPlotOptions
  KSmartPlotOptions. More...
class   KMergeLayerOptions
  KMergeLayerOptions. More...

Defines

#define  KFCURVE_INTEPOLATION_INFINITE   1000
#define  KFCURVE_OVERSHOOT_INTERPOLATION   500.0

Enumerations

enum   {
  eKFCURVE_PLOT_SourceCurvesDestroy = 1<<1, eKFCURVE_PLOT_SourceCurvesZeroDuringPlotTime = 1<<2, eKFCURVE_PLOT_DestinationCurveMergeWithResult = 1<<3, eKFCURVE_PLOT_DestinationCurveReplaceByResult = 1<<4,
  eKFCURVE_PLOT_ForCache = 1<<5
}
enum   { KFCurveApplyNone = 0, KFCurveApplyGimbleKiller, KFCurveApplyUnroll }

Functions

  KFBX_FORWARD_HI (KFCurve)
  KFBX_FORWARD_HI (KFCurveNode)
KFBX_DLL void  KFCurve_SetTWSet (KSet *pSet)
KFBX_DLL HKFCurveNode  KFCurve_FindTWFromNickNumber (int pNickNumber)
KFBX_DLL bool  KFCurve_FindNickNumberFromTW (int &pNickNumber, HKFCurveNode pTWNode)
KFBX_DLL void  KFCurve_PlotInLayers (HKFCurveNode pParentNode, KArrayTemplate< int > *pSourceLayers, int pDestLayer, kUInt pOptions, KTime pStart, KTime pStop, KTime pPlotPeriod, HKFCurveNode pDestinationNode, HKFCurveNode pTotalNode, bool pUseTimeWarp, HKSmartPlotOptions pSmartPlotOptions=NULL)
  Plots inside a curve node.
KFBX_DLL bool  AxisAlignmentInEulerAngle (double pAB[3], double pA[3], double pB[3], double pAngles[3])
  Calculate the euler rotation required to align axis pAB-pA on pAB-pB.
KFBX_DLL KTime  KFCURVE_GetPlotPeriod ()
KFBX_DLL void  KFCURVE_SetPlotPeriod (KTime pPlotPeriod)
KFBX_DLL bool  KFCURVE_GetPlotOnFrame ()
KFBX_DLL void  KFCURVE_SetPlotOnFrame (bool pPlotOnFrame)
KFBX_DLL int  KFCURVE_GetRotationFilterToApply ()
KFBX_DLL void  KFCURVE_SetRotationFilterToApply (int pRotationFilterToApply)
KFBX_DLL void  KFCURVE_ApplyRotationFilter (HKFCurveNode pCurveNode, KTime pStart=KTIME_MINUS_INFINITE, KTime pStop=KTIME_INFINITE)
KFBX_DLL double  KFCURVE_GetRotationFilterUnrollQuality ()
KFBX_DLL void  KFCURVE_SetRotationFilterUnrollQuality (double pQuality)
KFBX_DLL bool  KFCURVE_GetRotationFilterUnrollTestForPath ()
KFBX_DLL void  KFCURVE_SetRotationFilterUnrollTestForPath (bool pTestForPath)
KFBX_DLL double  KFCURVE_GetButterworthFilterInternalRate ()
KFBX_DLL void  KFCURVE_SetButterworthFilterInternalRate (double pButterworthFilterInternalRate)
KFBX_DLL bool  KFCURVE_GetUseConstantKeyReducer ()
KFBX_DLL void  KFCURVE_SetUseConstantKeyReducer (bool pUseConstantKeyReducer)
KFBX_DLL void  KFCURVE_ApplyConstantKeyReducer (HKFCurveNode pCurveNode, KTime pStart=KTIME_MINUS_INFINITE, KTime pStop=KTIME_INFINITE)
KFBX_DLL bool  KFCURVE_GetConstantKeyReducerKeepOneKey ()
KFBX_DLL void  KFCURVE_SetConstantKeyReducerKeepOneKey (bool pConstantKeyReducerKeepOneKey)
KFBX_DLL bool  KFCURVE_GetUseConstantKeyReducerOnDevices ()
KFBX_DLL void  KFCURVE_SetUseConstantKeyReducerOnDevices (bool pUseConstantKeyReducerOnDevices)
KFBX_DLL double  KFCURVE_GetUseConstantKeyReducerTranslationThreshold ()
KFBX_DLL void  KFCURVE_SetUseConstantKeyReducerTranslationThreshold (double pConstantKeyReducerTranslationThreshold)
KFBX_DLL double  KFCURVE_GetUseConstantKeyReducerRotationThreshold ()
KFBX_DLL void  KFCURVE_SetUseConstantKeyReducerRotationThreshold (double pConstantKeyReducerRotationThreshold)
KFBX_DLL double  KFCURVE_GetUseConstantKeyReducerScalingThreshold ()
KFBX_DLL void  KFCURVE_SetUseConstantKeyReducerScalingThreshold (double pConstantKeyReducerScalingThreshold)
KFBX_DLL double  KFCURVE_GetUseConstantKeyReducerDefaultThreshold ()
KFBX_DLL void  KFCURVE_SetUseConstantKeyReducerDefaultThreshold (double pConstantKeyReducerDefaultThreshold)
KFBX_DLL bool  KFCURVE_GetPlotTranslationOnRootOnly ()
KFBX_DLL void  KFCURVE_SetPlotTranslationOnRootOnly (bool pPlotTranslationOnRootOnly)
KFBX_DLL bool  KFCURVE_GetPreciseTimeDiscontinuities ()
KFBX_DLL void  KFCURVE_SetPreciseTimeDiscontinuities (bool pPreciseTimeDiscontinuities)
KFBX_DLL bool  KFCURVE_GetTCB4051EvalMode ()
KFBX_DLL void  KFCURVE_SetTCB4051EvalMode (bool pTCB4051EvalMode)
KFBX_DLL void  KFCURVE_ComputeAutoFromBezier (double &pLeftParam, double &pRightParam, double &pLeftTan, double &pRightTan, double &pToLeftKey, double &pToRightKey)
KFBX_DLL void  KFCURVE_ComputeBezierFromAuto (double &pLeftTan, double &pRightTan, double &pLeftParam, double &pRightParam, double &pToLeftKey, double &pToRightKey)
KFBX_DLL void  KFCURVE_ComputeLeftAutoFromBezier (double &pLeftParam, double &pLeftTan, double &pToLeftKey, double &pToRightKey)
KFBX_DLL void  KFCURVE_ComputeLeftBezierFromAuto (double &pLeftTan, double &pLeftParam, double &pToLeftKey, double &pToRightKey)
KFBX_DLL void  KFCURVE_ComputeRightAutoFromBezier (double &pRightParam, double &pRightTan, double &pToLeftKey, double &pToRightKey)
KFBX_DLL void  KFCURVE_ComputeRightBezierFromAuto (double &pRightTan, double &pRightParam, double &pToLeftKey, double &pToRightKey)
KFBX_DLL void  KFCURVE_ComputeAutoFromBezierForKey (double &pLeftParam, double &pRightParam, double &pLeftTan, double &pRightTan, HKFCurve pCurve, int pIndex)
KFBX_DLL void  KFCURVE_ComputeBezierFromAutoForKey (double &pLeftTan, double &pRightTan, double &pLeftParam, double &pRightParam, HKFCurve pCurve, int pIndex)
KFBX_DLL void  KFCURVE_ComputeLeftAutoFromBezierForKey (double &pLeftParam, double &pLeftTan, HKFCurve pCurve, int pIndex)
KFBX_DLL void  KFCURVE_ComputeLeftBezierFromAutoForKey (double &pLeftTan, double &pLeftParam, HKFCurve pCurve, int pIndex)
KFBX_DLL void  KFCURVE_ComputeRightAutoFromBezierForKey (double &pRightParam, double &pRightTan, HKFCurve pCurve, int pIndex)
KFBX_DLL void  KFCURVE_ComputeRightBezierFromAutoForKey (double &pRightTan, double &pRightParam, HKFCurve pCurve, int pIndex)
KFBX_DLL void  KFCURVE_ComputeToLeftAndToRight (double &pToLeft, double &pToRight, HKFCurve pCurve, int pIndex)
KFBX_DLL void  KFCURVE_ComputeProgressiveClampedTangents (double &pLeftTangent, double &pRightTangent, HKFCurve pCurve, int pIndex)
KFBX_DLL void  KFCURVE_BreakTangents (HKFCurveNode pFCurveNode, HKFCurveNode pReferenceFCurveNode, KTime pEpsilonTime, double pTangentThreshold)
  Compare the FCurve with the reference FCurve and break the tangents when necessary so that both FCurves match.
KFBX_DLL void  KFCURVE_ComputeTCBFromBezierForKey (double &pT, double &pC, double &pB, double pLTan, double pRTan, HKFCurve pCurve, int pIndex)
KFBX_DLL void  KFCURVE_IncreaseFidelity (HKFCurveNode pFCurveNode, HKFCurveNode pReferenceFCurveNode, double pFidelityThreshold, int pSegmentCount, bool pBreakTangents, KTime pEpsilonTime, double pTangentThreshold, bool pSyncAddedKeys=false, KArrayTemplate< HKFCurve > *pSyncWithFCurves=NULL, KArrayTemplate< HKFCurve > *pSyncWithReferenceFCurves=NULL)
  Compare the FCurve with the reference FCurve and add keys when necessary so that both FCurves match.
KFBX_DLL bool  KFCURVE_IsAllSameInterpolation (HKFCurveNode pFCurveNode, kFCurveInterpolation pInterpolation, bool pAllLayer)
  Determined if all the keys in the underlying KFCurveNode have the same interpolation type.
KFBX_DLL void  KFCURVE_ConstantCurveMerge (HKFCurveNode pDstNode, HKFCurveNode pSrcNode, KTime pStart, KTime pStop)
  Smart merge version for curves that have only constant keys.

Detailed Description

Definition in file kfcurveglobal.h.


Define Documentation

#define KFCURVE_INTEPOLATION_INFINITE   1000

Definition at line 55 of file kfcurveglobal.h.

#define KFCURVE_OVERSHOOT_INTERPOLATION   500.0

Definition at line 56 of file kfcurveglobal.h.


Enumeration Type Documentation

anonymous enum
Enumerator:
eKFCURVE_PLOT_SourceCurvesDestroy 
eKFCURVE_PLOT_SourceCurvesZeroDuringPlotTime 
eKFCURVE_PLOT_DestinationCurveMergeWithResult 
eKFCURVE_PLOT_DestinationCurveReplaceByResult 
eKFCURVE_PLOT_ForCache 

Definition at line 127 of file kfcurveglobal.h.

anonymous enum
Enumerator:
KFCurveApplyNone 
KFCurveApplyGimbleKiller 
KFCurveApplyUnroll 

Definition at line 199 of file kfcurveglobal.h.


Function Documentation

KFBX_FORWARD_HI ( KFCurve  )
KFBX_FORWARD_HI ( KFCurveNode  )
KFBX_DLL void KFCurve_SetTWSet ( KSet pSet )
KFBX_DLL HKFCurveNode KFCurve_FindTWFromNickNumber ( int  pNickNumber )
KFBX_DLL bool KFCurve_FindNickNumberFromTW ( int &  pNickNumber,
HKFCurveNode  pTWNode 
)
KFBX_DLL void KFCurve_PlotInLayers ( HKFCurveNode  pParentNode,
KArrayTemplate< int > *  pSourceLayers,
int  pDestLayer,
kUInt  pOptions,
KTime  pStart,
KTime  pStop,
KTime  pPlotPeriod,
HKFCurveNode  pDestinationNode,
HKFCurveNode  pTotalNode,
bool  pUseTimeWarp,
HKSmartPlotOptions  pSmartPlotOptions = NULL 
)

Plots inside a curve node.

Plot is risky for rotations because they are not commutative, so make sure layers to be plot are successive !!!

Parameters:
pParentNode The node containing all layers.
pSourceLayers Layers to be plotted.
pDestLayer Layers to be plotted on this layer.
pOptions Flags to set the behavior.
pStart Start time of the plot.
pStop Stop time of the plot.
pPlotPeriod
pDestinationNode
pTotalNode
pUseTimeWarp
pSmartPlotOptions
KFBX_DLL bool AxisAlignmentInEulerAngle ( double  pAB[3],
double  pA[3],
double  pB[3],
double  pAngles[3] 
)

Calculate the euler rotation required to align axis pAB-pA on pAB-pB.

Parameters:
pAB The intersection of the 2 axis.
pA A point on axis to be aligned.
pB A point on reference axis.
pAngles Resulting euler angles.
Returns:
how the operation succeed.
KFBX_DLL KTime KFCURVE_GetPlotPeriod ( )
KFBX_DLL void KFCURVE_SetPlotPeriod ( KTime  pPlotPeriod )
KFBX_DLL bool KFCURVE_GetPlotOnFrame ( )
KFBX_DLL void KFCURVE_SetPlotOnFrame ( bool  pPlotOnFrame )
KFBX_DLL int KFCURVE_GetRotationFilterToApply ( )
KFBX_DLL void KFCURVE_SetRotationFilterToApply ( int  pRotationFilterToApply )
KFBX_DLL void KFCURVE_ApplyRotationFilter ( HKFCurveNode  pCurveNode,
KTime  pStart = KTIME_MINUS_INFINITE,
KTime  pStop = KTIME_INFINITE 
)
KFBX_DLL double KFCURVE_GetRotationFilterUnrollQuality ( )
KFBX_DLL void KFCURVE_SetRotationFilterUnrollQuality ( double  pQuality )
KFBX_DLL bool KFCURVE_GetRotationFilterUnrollTestForPath ( )
KFBX_DLL void KFCURVE_SetRotationFilterUnrollTestForPath ( bool  pTestForPath )
KFBX_DLL double KFCURVE_GetButterworthFilterInternalRate ( )
KFBX_DLL void KFCURVE_SetButterworthFilterInternalRate ( double  pButterworthFilterInternalRate )
KFBX_DLL bool KFCURVE_GetUseConstantKeyReducer ( )
KFBX_DLL void KFCURVE_SetUseConstantKeyReducer ( bool  pUseConstantKeyReducer )
KFBX_DLL void KFCURVE_ApplyConstantKeyReducer ( HKFCurveNode  pCurveNode,
KTime  pStart = KTIME_MINUS_INFINITE,
KTime  pStop = KTIME_INFINITE 
)
KFBX_DLL bool KFCURVE_GetConstantKeyReducerKeepOneKey ( )
KFBX_DLL void KFCURVE_SetConstantKeyReducerKeepOneKey ( bool  pConstantKeyReducerKeepOneKey )
KFBX_DLL bool KFCURVE_GetUseConstantKeyReducerOnDevices ( )
KFBX_DLL void KFCURVE_SetUseConstantKeyReducerOnDevices ( bool  pUseConstantKeyReducerOnDevices )
KFBX_DLL double KFCURVE_GetUseConstantKeyReducerTranslationThreshold ( )
KFBX_DLL void KFCURVE_SetUseConstantKeyReducerTranslationThreshold ( double  pConstantKeyReducerTranslationThreshold )
KFBX_DLL double KFCURVE_GetUseConstantKeyReducerRotationThreshold ( )
KFBX_DLL void KFCURVE_SetUseConstantKeyReducerRotationThreshold ( double  pConstantKeyReducerRotationThreshold )
KFBX_DLL double KFCURVE_GetUseConstantKeyReducerScalingThreshold ( )
KFBX_DLL void KFCURVE_SetUseConstantKeyReducerScalingThreshold ( double  pConstantKeyReducerScalingThreshold )
KFBX_DLL double KFCURVE_GetUseConstantKeyReducerDefaultThreshold ( )
KFBX_DLL void KFCURVE_SetUseConstantKeyReducerDefaultThreshold ( double  pConstantKeyReducerDefaultThreshold )
KFBX_DLL bool KFCURVE_GetPlotTranslationOnRootOnly ( )
KFBX_DLL void KFCURVE_SetPlotTranslationOnRootOnly ( bool  pPlotTranslationOnRootOnly )
KFBX_DLL bool KFCURVE_GetPreciseTimeDiscontinuities ( )
KFBX_DLL void KFCURVE_SetPreciseTimeDiscontinuities ( bool  pPreciseTimeDiscontinuities )
KFBX_DLL bool KFCURVE_GetTCB4051EvalMode ( )
KFBX_DLL void KFCURVE_SetTCB4051EvalMode ( bool  pTCB4051EvalMode )
KFBX_DLL void KFCURVE_ComputeAutoFromBezier ( double &  pLeftParam,
double &  pRightParam,
double &  pLeftTan,
double &  pRightTan,
double &  pToLeftKey,
double &  pToRightKey 
)
KFBX_DLL void KFCURVE_ComputeBezierFromAuto ( double &  pLeftTan,
double &  pRightTan,
double &  pLeftParam,
double &  pRightParam,
double &  pToLeftKey,
double &  pToRightKey 
)
KFBX_DLL void KFCURVE_ComputeLeftAutoFromBezier ( double &  pLeftParam,
double &  pLeftTan,
double &  pToLeftKey,
double &  pToRightKey 
)
KFBX_DLL void KFCURVE_ComputeLeftBezierFromAuto ( double &  pLeftTan,
double &  pLeftParam,
double &  pToLeftKey,
double &  pToRightKey 
)
KFBX_DLL void KFCURVE_ComputeRightAutoFromBezier ( double &  pRightParam,
double &  pRightTan,
double &  pToLeftKey,
double &  pToRightKey 
)
KFBX_DLL void KFCURVE_ComputeRightBezierFromAuto ( double &  pRightTan,
double &  pRightParam,
double &  pToLeftKey,
double &  pToRightKey 
)
KFBX_DLL void KFCURVE_ComputeAutoFromBezierForKey ( double &  pLeftParam,
double &  pRightParam,
double &  pLeftTan,
double &  pRightTan,
HKFCurve  pCurve,
int  pIndex 
)
KFBX_DLL void KFCURVE_ComputeBezierFromAutoForKey ( double &  pLeftTan,
double &  pRightTan,
double &  pLeftParam,
double &  pRightParam,
HKFCurve  pCurve,
int  pIndex 
)
KFBX_DLL void KFCURVE_ComputeLeftAutoFromBezierForKey ( double &  pLeftParam,
double &  pLeftTan,
HKFCurve  pCurve,
int  pIndex 
)
KFBX_DLL void KFCURVE_ComputeLeftBezierFromAutoForKey ( double &  pLeftTan,
double &  pLeftParam,
HKFCurve  pCurve,
int  pIndex 
)
KFBX_DLL void KFCURVE_ComputeRightAutoFromBezierForKey ( double &  pRightParam,
double &  pRightTan,
HKFCurve  pCurve,
int  pIndex 
)
KFBX_DLL void KFCURVE_ComputeRightBezierFromAutoForKey ( double &  pRightTan,
double &  pRightParam,
HKFCurve  pCurve,
int  pIndex 
)
KFBX_DLL void KFCURVE_ComputeToLeftAndToRight ( double &  pToLeft,
double &  pToRight,
HKFCurve  pCurve,
int  pIndex 
)
KFBX_DLL void KFCURVE_ComputeProgressiveClampedTangents ( double &  pLeftTangent,
double &  pRightTangent,
HKFCurve  pCurve,
int  pIndex 
)
KFBX_DLL void KFCURVE_BreakTangents ( HKFCurveNode  pFCurveNode,
HKFCurveNode  pReferenceFCurveNode,
KTime  pEpsilonTime,
double  pTangentThreshold 
)

Compare the FCurve with the reference FCurve and break the tangents when necessary so that both FCurves match.

Parameters:
pFCurveNode FCurveNode to modify.
pReferenceFCurveNode FCurveNode we use as the reference.
pEpsilonTime Epsilon time used to evaluate the tangents.
pTangentThreshold Threshold used when comparing tangents. If the difference is over the threshold, we break the tangent.
KFBX_DLL void KFCURVE_ComputeTCBFromBezierForKey ( double &  pT,
double &  pC,
double &  pB,
double  pLTan,
double  pRTan,
HKFCurve  pCurve,
int  pIndex 
)
KFBX_DLL void KFCURVE_IncreaseFidelity ( HKFCurveNode  pFCurveNode,
HKFCurveNode  pReferenceFCurveNode,
double  pFidelityThreshold,
int  pSegmentCount,
bool  pBreakTangents,
KTime  pEpsilonTime,
double  pTangentThreshold,
bool  pSyncAddedKeys = false,
KArrayTemplate< HKFCurve > *  pSyncWithFCurves = NULL,
KArrayTemplate< HKFCurve > *  pSyncWithReferenceFCurves = NULL 
)

Compare the FCurve with the reference FCurve and add keys when necessary so that both FCurves match.

Parameters:
pFCurveNode FCurveNode to modify.
pReferenceFCurveNode FCurveNode we use as the reference.
pFidelityThreshold Threshold used when comparing values. If the difference is over the threshold, we add a new key.
pSegmentCount Number of segments we divide the curve between every pairs of keys.
pBreakTangents True if we should break the tangents when they don't match the reference.
pEpsilonTime Epsilon time used to evaluate the tangents.
pTangentThreshold Threshold used when comparing tangents. If the difference is over the threshold, we break the tangent.
pSyncAddedKeys True if fidelity keys should be added to all FCurves of a vector.
pSyncWithFCurves For internal use, leave to NULL.
pSyncWithReferenceFCurves For internal use, leave to NULL.
KFBX_DLL bool KFCURVE_IsAllSameInterpolation ( HKFCurveNode  pFCurveNode,
kFCurveInterpolation  pInterpolation,
bool  pAllLayer 
)

Determined if all the keys in the underlying KFCurveNode have the same interpolation type.

Parameters:
pFCurveNode FCurveNode to check.
pInterpolation The interpolation type we are querying for.
pAllLayer True if check is in all layers.
Returns:
True if the all all have pInterpolation type.
KFBX_DLL void KFCURVE_ConstantCurveMerge ( HKFCurveNode  pDstNode,
HKFCurveNode  pSrcNode,
KTime  pStart,
KTime  pStop 
)

Smart merge version for curves that have only constant keys.

The current implementation of SmartMerge does not work very well with different types of constant keys.

Parameters:
pDstNode The Destination KFCurveNode in which all layers will be merged.
pSrcNode Multi-layered KFCurveNode that has to be merged
pStart Merge start time
pStop Merge stop time