kfcurveglobal.h File Reference


Detailed Description

Definition in file kfcurveglobal.h.

#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>

Include dependency graph for kfcurveglobal.h:
This graph shows which files directly or indirectly include this file:

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_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.

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_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_FORWARD_HI ( KFCurveNode   ) 

KFBX_FORWARD_HI ( KFCurve   ) 

KFBX_DLL void KFCURVE_ApplyConstantKeyReducer ( HKFCurveNode  pCurveNode,
KTime  pStart = KTIME_MINUS_INFINITE,
KTime  pStop = KTIME_INFINITE  
)

KFBX_DLL void KFCURVE_ApplyRotationFilter ( HKFCurveNode  pCurveNode,
KTime  pStart = KTIME_MINUS_INFINITE,
KTime  pStop = KTIME_INFINITE  
)

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_ComputeAutoFromBezier ( double pLeftParam,
double pRightParam,
double pLeftTan,
double pRightTan,
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_ComputeBezierFromAuto ( double pLeftTan,
double pRightTan,
double pLeftParam,
double pRightParam,
double pToLeftKey,
double pToRightKey  
)

KFBX_DLL void KFCURVE_ComputeBezierFromAutoForKey ( double pLeftTan,
double pRightTan,
double pLeftParam,
double pRightParam,
HKFCurve  pCurve,
int  pIndex  
)

KFBX_DLL void KFCURVE_ComputeLeftAutoFromBezier ( double pLeftParam,
double pLeftTan,
double pToLeftKey,
double pToRightKey  
)

KFBX_DLL void KFCURVE_ComputeLeftAutoFromBezierForKey ( double pLeftParam,
double pLeftTan,
HKFCurve  pCurve,
int  pIndex  
)

KFBX_DLL void KFCURVE_ComputeLeftBezierFromAuto ( double pLeftTan,
double pLeftParam,
double pToLeftKey,
double pToRightKey  
)

KFBX_DLL void KFCURVE_ComputeLeftBezierFromAutoForKey ( double pLeftTan,
double pLeftParam,
HKFCurve  pCurve,
int  pIndex  
)

KFBX_DLL void KFCURVE_ComputeRightAutoFromBezier ( double pRightParam,
double pRightTan,
double pToLeftKey,
double pToRightKey  
)

KFBX_DLL void KFCURVE_ComputeRightAutoFromBezierForKey ( double pRightParam,
double pRightTan,
HKFCurve  pCurve,
int  pIndex  
)

KFBX_DLL void KFCURVE_ComputeRightBezierFromAuto ( double pRightTan,
double pRightParam,
double pToLeftKey,
double pToRightKey  
)

KFBX_DLL void KFCURVE_ComputeRightBezierFromAutoForKey ( double pRightTan,
double pRightParam,
HKFCurve  pCurve,
int  pIndex  
)

KFBX_DLL void KFCURVE_ComputeTCBFromBezierForKey ( double pT,
double pC,
double pB,
double  pLTan,
double  pRTan,
HKFCurve  pCurve,
int  pIndex  
)

KFBX_DLL void KFCURVE_ComputeToLeftAndToRight ( double pToLeft,
double pToRight,
HKFCurve  pCurve,
int  pIndex  
)

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

KFBX_DLL bool KFCurve_FindNickNumberFromTW ( int pNickNumber,
HKFCurveNode  pTWNode  
)

KFBX_DLL HKFCurveNode KFCurve_FindTWFromNickNumber ( int  pNickNumber  ) 

KFBX_DLL double KFCURVE_GetButterworthFilterInternalRate (  ) 

KFBX_DLL bool KFCURVE_GetConstantKeyReducerKeepOneKey (  ) 

KFBX_DLL bool KFCURVE_GetPlotOnFrame (  ) 

KFBX_DLL KTime KFCURVE_GetPlotPeriod (  ) 

KFBX_DLL bool KFCURVE_GetPlotTranslationOnRootOnly (  ) 

KFBX_DLL bool KFCURVE_GetPreciseTimeDiscontinuities (  ) 

KFBX_DLL int KFCURVE_GetRotationFilterToApply (  ) 

KFBX_DLL double KFCURVE_GetRotationFilterUnrollQuality (  ) 

KFBX_DLL bool KFCURVE_GetRotationFilterUnrollTestForPath (  ) 

KFBX_DLL bool KFCURVE_GetTCB4051EvalMode (  ) 

KFBX_DLL bool KFCURVE_GetUseConstantKeyReducer (  ) 

KFBX_DLL double KFCURVE_GetUseConstantKeyReducerDefaultThreshold (  ) 

KFBX_DLL bool KFCURVE_GetUseConstantKeyReducerOnDevices (  ) 

KFBX_DLL double KFCURVE_GetUseConstantKeyReducerRotationThreshold (  ) 

KFBX_DLL double KFCURVE_GetUseConstantKeyReducerScalingThreshold (  ) 

KFBX_DLL double KFCURVE_GetUseConstantKeyReducerTranslationThreshold (  ) 

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_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 void KFCURVE_SetButterworthFilterInternalRate ( double  pButterworthFilterInternalRate  ) 

KFBX_DLL void KFCURVE_SetConstantKeyReducerKeepOneKey ( bool  pConstantKeyReducerKeepOneKey  ) 

KFBX_DLL void KFCURVE_SetPlotOnFrame ( bool  pPlotOnFrame  ) 

KFBX_DLL void KFCURVE_SetPlotPeriod ( KTime  pPlotPeriod  ) 

KFBX_DLL void KFCURVE_SetPlotTranslationOnRootOnly ( bool  pPlotTranslationOnRootOnly  ) 

KFBX_DLL void KFCURVE_SetPreciseTimeDiscontinuities ( bool  pPreciseTimeDiscontinuities  ) 

KFBX_DLL void KFCURVE_SetRotationFilterToApply ( int  pRotationFilterToApply  ) 

KFBX_DLL void KFCURVE_SetRotationFilterUnrollQuality ( double  pQuality  ) 

KFBX_DLL void KFCURVE_SetRotationFilterUnrollTestForPath ( bool  pTestForPath  ) 

KFBX_DLL void KFCURVE_SetTCB4051EvalMode ( bool  pTCB4051EvalMode  ) 

KFBX_DLL void KFCurve_SetTWSet ( KSet pSet  ) 

KFBX_DLL void KFCURVE_SetUseConstantKeyReducer ( bool  pUseConstantKeyReducer  ) 

KFBX_DLL void KFCURVE_SetUseConstantKeyReducerDefaultThreshold ( double  pConstantKeyReducerDefaultThreshold  ) 

KFBX_DLL void KFCURVE_SetUseConstantKeyReducerOnDevices ( bool  pUseConstantKeyReducerOnDevices  ) 

KFBX_DLL void KFCURVE_SetUseConstantKeyReducerRotationThreshold ( double  pConstantKeyReducerRotationThreshold  ) 

KFBX_DLL void KFCURVE_SetUseConstantKeyReducerScalingThreshold ( double  pConstantKeyReducerScalingThreshold  ) 

KFBX_DLL void KFCURVE_SetUseConstantKeyReducerTranslationThreshold ( double  pConstantKeyReducerTranslationThreshold  )