Public Member Functions | Protected Member Functions | Friends

KFbxAnimCurveNode Class Reference

This reference page is linked to from the following overview topics: FBX SDK 2011, Animation data structures, Migrating to the new data structures for animation, Animation classes and their interrelationships, Evaluating the animation in a scene, List of Python FBX classes.


Search for all occurrences

Detailed Description

This class is an composite of animation curves and is called as animation curve node.

Animation curve node is used as the connection point for animation curves and other animation curve nodes associated to a property. KFbxAnimCurveNode can be connected to other KFbxAnimCurveNode, in this case, the destination animation curve node may be considered as "composite", IsComposite(). remarks When created, the KFbxAnimCurveNode has no valid channels unless it is created using the function CreateTypedCurveNode(). This function will add all the required channels to correctly match the number of values of the property. For instance, when CreateTypedCurveNode(pNode.LclTranslation, pScene) is called, the resulting KFbxAnimCurveNode will automatically have 3 channels corresponding to the X,Y and Z components of the LclTranslation property. You can add and remove channels dynamically but can never remove the channels that have been added by the call to CreateTypedCurveNode().

Examples:

Animation/main.cxx, ImportScene/DisplayAnimation.cxx, Instances/main.cxx, UIExamples/CubeCreator/SDK_Utility.cxx, and UserProperties/main.cxx.

Definition at line 39 of file kfbxanimcurvenode.h.

#include <kfbxanimcurvenode.h>

Inheritance diagram for KFbxAnimCurveNode:
Inheritance graph
[legend]

List of all members.

Public Member Functions

virtual KFbxObject Copy (const KFbxObject &pObject)
  Copy an object content into this object.
void  Evaluate (double *pData, KTime pTime)

Protected Member Functions

  KFbxAnimCurveNode (KFbxSdkManager &pManager, char const *pName)
KFbxAnimCurveNode Find (KFbxAnimCurveNode *pRoot, const KString &pName)
virtual bool  ConstructProperties (bool pForceSet)
virtual void  Destruct (bool pRecursive, bool pDependents)

Friends

class  KFbxObject
void  CollectAnimFromCurveNode (KFCurve **lSrc, KFCurveNode *fcn, unsigned int nbCrvs, KFbxAnimCurveNode *cn, KSet *pNickToAnimCurveTimeWarpsSet, KSet &pNickToKFCurveNodeWarpSet)

Utility functions.

bool  IsAnimated (bool pRecurse=false) const
  Check if the animation curve node contains any animation key.
K_DEPRECATED bool  GetAnimationInterval (KTime &pStart, KTime &pStop) const
  Find out start and end time of the animation.
bool  GetAnimationInterval (KTimeSpan &pTimeInterval) const
  Find out start and end time of the animation.
bool  IsComposite () const
  Test this object to see if it is a composite KFbxAnimCurveNode or a "leaf".
KFbxAnimCurveNode Find (const char *pName)
  Recursively look for the KFbxAnimCurveNode matching the passed named argument.
unsigned int  GetChannelsCount () const
  Get the total number of property channels defined in this animation curve node.
int  GetChannelIndex (const char *pChannelName) const
  Get the index of the named channel.
KString  GetChannelName (int pChannelId) const
  Get the name of the channel.
void  ResetChannels ()
  Empties the property channels of this animation curve node.
template<class T >
bool  AddChannel (const char *pChnlName, T const &pValue)
  Adds the specified channel property.
template<class T >
void  SetChannelValue (const char *pChnlName, T pValue)
  Set the default value of the channel.
template<class T >
void  SetChannelValue (unsigned int pChnlId, T pValue)
  Set the default value of the channel.
template<class T >
GetChannelValue (const char *pChnlName, T pInitVal)
  Get the default value of the channel.
template<class T >
GetChannelValue (unsigned int pChnlId, T pInitVal)
  Get the default value of the channel.
static KFbxAnimCurveNode CreateTypedCurveNode (KFbxProperty &pProperty, KFbxScene *pScene)
  Create a KFbxAnimCurveNode compatible with the specified property data type.

KFbxAnimCurve management.

bool  DisconnectFromChannel (KFbxAnimCurve *pCurve, unsigned int pChnlId)
  Disconnect the animation curve from the channel.
bool  ConnectToChannel (KFbxAnimCurve *pCurve, const char *pChnl, bool pInFront=false)
  Connects the given animation curve to the specified channel.
bool  ConnectToChannel (KFbxAnimCurve *pCurve, unsigned int pChnlId, bool pInFront=false)
  Connects the given animation curve to the specified channel.
KFbxAnimCurve CreateCurve (const char *pCurveNodeName, const char *pChannel)
  Creates a new curve and connects it to the specified channel of the animation curve node named pCurveNodeName.
KFbxAnimCurve CreateCurve (const char *pCurveNodeName, unsigned int pChannelId=0)
  Creates a new curve and connects it to the specified channel of the animation curve node named pCurveNodeName.
int  GetCurveCount (unsigned int pChannelId, const char *pCurveNodeName=NULL)
  Get the number of KFbxAnimCurve connected to the specified channel.
KFbxAnimCurve GetCurve (unsigned int pChannelId, unsigned int pId=0, const char *pCurveNodeName=NULL)
  Get the KFbxAnimCurve of the specified channel.

Internal use only.

This section is for internal use and is subject to change without notice.
KFCurveNode GetKFCurveNode (bool pNoCreate=false)
  Create the compatible KFCurveNode structure.
void  ReleaseKFCurveNode ()
  Destroy the KFCurveNode structure.
void  SyncChannelsWithKFCurve ()
  Sync the each channel property with the KFCurve's mValue stored in the KFCurveNode.
bool  UseQuaternionInterpolation ()
bool  SetQuaternionInterpolation (unsigned short pVal)
  Returns false if pVal is an invalid value.
unsigned short  GetQuaternionInterpolation ()
void  SetKFCurveNodeLayerType (KFbxProperty &pProp)
static const char *  CurveNodeNameFrom (const char *pName)

Constructor & Destructor Documentation

KFbxAnimCurveNode ( KFbxSdkManager pManager,
char const *  pName 
) [protected]

Member Function Documentation

bool IsAnimated ( bool  pRecurse = false ) const

Check if the animation curve node contains any animation key.

Parameters:
pRecurse true to descend to the children if the animation curve node is composite.
Returns:
true if at least one animation curve is found and it contains at least one animation key, \ false otherwise.
K_DEPRECATED bool GetAnimationInterval ( KTime pStart,
KTime pStop 
) const

Find out start and end time of the animation.

This function retrieves the including time span for all animation curves of this animation curve node.

Parameters:
pStart Reference to receive start time.
pStop Reference to receive end time.
Returns:
true on success, false otherwise.
Remarks:
false is also returned if this animation curve node has no animation.
This function is deprecated, please use GetAnimationInterval(KTimeSpan&) instead.
bool GetAnimationInterval ( KTimeSpan pTimeInterval ) const

Find out start and end time of the animation.

This function retrieves the including time span for all animation curves of this animation curve node.

Parameters:
pTimeInterval Reference to receive start time and end time.
Returns:
true on success, false otherwise.
Remarks:
false is also returned if this animation curve node has no animation.
bool IsComposite ( ) const

Test this object to see if it is a composite KFbxAnimCurveNode or a "leaf".

A composite KFbxAnimCurveNode is a KFbxAnimCurveNode whose all source connections are KFbxAnimCurveNode and its property channels is totally empty. It is just a container to take other KFbxAnimCurveNode.

Returns:
true if this object is a composite, false otherwise.
KFbxAnimCurveNode* Find ( const char *  pName )

Recursively look for the KFbxAnimCurveNode matching the passed named argument.

Parameters:
pName Name of the KFbxAnimCurveNode we are looking for.
Returns:
The found anim curve node or NULL.
Remarks:
If pName is an empty string, this function automatically return NULL.
static KFbxAnimCurveNode* CreateTypedCurveNode ( KFbxProperty pProperty,
KFbxScene pScene 
) [static]

Create a KFbxAnimCurveNode compatible with the specified property data type.

Parameters:
pProperty The property that needs a KFbxAnimCurveNode.
pScene The scene the created KFbxAnimCurveNode will belong to.
Returns:
The pointer to the newly created KFbxAnimCurveNode. Returns NULL if an error occurred.
Remarks:
This function does not connect the newly created KFbxAnimCurveNode to the property.
This function detects fbxDouble3, fbxDouble4 and fbxDouble44 properties DataTypes and automatically adds the required channels properties. Any other DataType is not specifically processed and the channels properties are left empty and need to be filled using the AddChannel() function.
Examples:
Animation/main.cxx.
unsigned int GetChannelsCount ( ) const

Get the total number of property channels defined in this animation curve node.

For composite animation curve nodes, since they do not contain any channels, this function will always return 0.

Returns:
The number of property channels.
Examples:
Animation/main.cxx.
int GetChannelIndex ( const char *  pChannelName ) const

Get the index of the named channel.

Parameters:
pChannelName Name of the channel for which we want the index.
Returns:
the index of the named channel or -1 if no channel with this name is found.
KString GetChannelName ( int  pChannelId ) const

Get the name of the channel.

Parameters:
pChannelId Index of the channel for which we want the name.
Returns:
the name of the indexed channel or "" if the index is invalid.
void ResetChannels ( )

Empties the property channels of this animation curve node.

Remarks:
This function will remove all the channels added with the AddChannel() method regardless of their use and/or connections. But it can not remove the channels that are added by the call to CreateTypedCurveNode().
Examples:
Animation/main.cxx.
bool AddChannel ( const char *  pChnlName,
T const &  pValue 
) [inline]

Adds the specified channel property.

Parameters:
pChnlName Channel name.
pValue Default value of the channel.
Returns:
true if successful, false otherwise.
Remarks:
It is an error to try to add a channel that already exists.
Examples:
Animation/main.cxx.

Definition at line 131 of file kfbxanimcurvenode.h.

        {
            if (!pChnlName || strlen(pChnlName)==0) return false;
            KFbxProperty c = GetChannel(pChnlName);
            if (c.IsValid()) 
            {
                return false;
            }

            mChannels.BeginCreateOrFindProperty();
            KFbxDataType dt = GetFbxDataType(FbxTypeOf(pValue));
            c = KFbxProperty::Create(mChannels, dt, pChnlName);
            KFbxSet<T>(c, pValue);
            mChannels.EndCreateOrFindProperty();
            return true;
        }
void SetChannelValue ( const char *  pChnlName,
pValue 
) [inline]

Set the default value of the channel.

Parameters:
pChnlName Channel name.
pValue New default value of this channel.

Definition at line 152 of file kfbxanimcurvenode.h.

        {
            KFbxProperty c = GetChannel(pChnlName);
            if (c.IsValid()) KFbxSet<T>(c, pValue);
        }
void SetChannelValue ( unsigned int  pChnlId,
pValue 
) [inline]

Set the default value of the channel.

Parameters:
pChnlId Channel index.
pValue New default value of this channel.

Definition at line 162 of file kfbxanimcurvenode.h.

        {
            KFbxProperty c = GetChannel(pChnlId);
            if (c.IsValid()) KFbxSet<T>(c, pValue);
        }
T GetChannelValue ( const char *  pChnlName,
pInitVal 
) [inline]

Get the default value of the channel.

Parameters:
pChnlName Channel name.
pInitVal Value returned if the specified channel is invalid.
Returns:
The default value of this channel.
Examples:
Animation/main.cxx.

Definition at line 173 of file kfbxanimcurvenode.h.

        {
            T v = pInitVal;
            KFbxProperty c = GetChannel(pChnlName);
            if (c.IsValid()) KFbxGet<T>(c, v);
            return v;
        }
T GetChannelValue ( unsigned int  pChnlId,
pInitVal 
) [inline]

Get the default value of the channel.

Parameters:
pChnlId Channel index.
pInitVal Value returned if the specified channel is invalid.
Returns:
The default value of this channel.

Definition at line 186 of file kfbxanimcurvenode.h.

        {
            T v = pInitVal;
            KFbxProperty c = GetChannel(pChnlId);
            if (c.IsValid()) KFbxGet<T>(c, v);
            return v;
        }
bool DisconnectFromChannel ( KFbxAnimCurve pCurve,
unsigned int  pChnlId 
)

Disconnect the animation curve from the channel.

Parameters:
pCurve The curve to disconnect from the channel.
pChnlId The channel index.
Returns:
true if the disconnection was made, false if an error occurred.
bool ConnectToChannel ( KFbxAnimCurve pCurve,
const char *  pChnl,
bool  pInFront = false 
)

Connects the given animation curve to the specified channel.

Parameters:
pCurve The curve to connect to the channel.
pChnl The name of the channel the curve is to be connected to.
pInFront When true, all the current connections are moved after this one, making this one the first. By default, the connection is the last one.
Returns:
true if the connection was made, false if an error occurred.
Examples:
Instances/main.cxx.
bool ConnectToChannel ( KFbxAnimCurve pCurve,
unsigned int  pChnlId,
bool  pInFront = false 
)

Connects the given animation curve to the specified channel.

Parameters:
pCurve The curve to connect to the channel.
pChnlId Index of the channel the curve is to be connected to.
pInFront When true, all the current connections are moved after this one. making this one the first. By default, the connection is the last one.
Returns:
true if the connection was made, false if an error occurred.
Remarks:
The index is 0 based.
KFbxAnimCurve* CreateCurve ( const char *  pCurveNodeName,
const char *  pChannel 
)

Creates a new curve and connects it to the specified channel of the animation curve node named pCurveNodeName.

this animation curve node is composite, this function will try to search all children animation curve nodes for the one named pCurveNodeName.

Parameters:
pCurveNodeName Name of the KFbxAnimCurveNode we are looking for.
pChannel Channel identifier.
Returns:
Pointer to the KFbxAnimCurve or NULL if an error occurred.
Remarks:
pCurveNodeName cannot be empty.
If the pChannel identifier is left NULL, the first valid channel will be used to create curve.
Examples:
UserProperties/main.cxx.
KFbxAnimCurve* CreateCurve ( const char *  pCurveNodeName,
unsigned int  pChannelId = 0 
)

Creates a new curve and connects it to the specified channel of the animation curve node named pCurveNodeName.

If this animation curve node is composite, this function will try to search all children animation curve nodes recursively for the one named pCurveNodeName.

Parameters:
pCurveNodeName Name of the KFbxAnimCurveNode we are looking for.
pChannelId Channel index.
Returns:
Pointer to the KFbxAnimCurve or NULL if an error occurred.
Remarks:
pCurveNodeName cannot be empty. If the pChannelId is not assigned, the first valid channel will be used to create curve.
int GetCurveCount ( unsigned int  pChannelId,
const char *  pCurveNodeName = NULL 
)

Get the number of KFbxAnimCurve connected to the specified channel.

If this animation curve node is composite, this function will try to search all children animation curve nodes recursively for the one named pCurveNodeName.

Parameters:
pChannelId Channel index.
pCurveNodeName Name of the KFbxAnimCurveNode we are looking for.
Returns:
The number of animation curves on the specified channel or 0 if an error occurred.
Remarks:
This method fails if the KFbxAnimCurveNode with name pCurveNodeName does not exist and return 0. If the specified channel cannot be found on the KFbxAnimCurveNode with name pCurveNodeName, return 0.
If this animation curve node is composite, this function will try to search all children animation curve nodes recursively for the one named pCurveNodeName. If the pCurveNodeName is left NULL, then only look for the curves on this animation curve node even if it is composite.
Examples:
ImportScene/DisplayAnimation.cxx.
KFbxAnimCurve* GetCurve ( unsigned int  pChannelId,
unsigned int  pId = 0,
const char *  pCurveNodeName = NULL 
)

Get the KFbxAnimCurve of the specified channel.

If this animation curve node is composite, this function will try to search all children animation curve nodes recursively for the one named pCurveNodeName.

Parameters:
pChannelId Channel index.
pId The index of the desired anim curve (in case there is more than one)
pCurveNodeName Name of the KFbxAnimCurveNode we are looking for (if this object is a composite).
Returns:
Pointer to the KFbxAnimCurve that matches the criteria.
Remarks:
This method fails if the KFbxAnimCurveNode with name pCurveNodeName does not exist and return NULL. If the specified channel cannot be found in the KFbxAnimCurveNode with name pCurveNodeName, return NULL.
If the pCurveNodeName is left NULL, then only search in the curves on this animation curve node even if it is composite.
Examples:
ImportScene/DisplayAnimation.cxx, and UserProperties/main.cxx.
virtual KFbxObject& Copy ( const KFbxObject pObject ) [virtual]

Copy an object content into this object.

Parameters:
pObject The source object to copy data from.
Returns:
Returns the destination object being modified by the source.
Remarks:
This function replace the assignment operator (operator=). It will copy all property values and the name. Connections are NOT copied.

Reimplemented from KFbxObject.

void Evaluate ( double *  pData,
KTime  pTime 
)
KFCurveNode* GetKFCurveNode ( bool  pNoCreate = false )

Create the compatible KFCurveNode structure.

This method will create a temporary KFCurveNode object and all the necessary children to represent all the connections of this KFbxAnimCurveNode. Each call to this method will clear the previous content of the KFCurveNode but does not destroy it. An explicit call to ReleaseKFCurveNode has to be made.

Remarks:
The = operator WILL NOT copy the KFCurveNode
void ReleaseKFCurveNode ( )

Destroy the KFCurveNode structure.

This method will destroy the KFCurveNode that has been created by the call to GetKFCurveNode.

Remarks:
See the source code for the specific behavior for the deletion of the KFCurves.
void SyncChannelsWithKFCurve ( )

Sync the each channel property with the KFCurve's mValue stored in the KFCurveNode.

bool UseQuaternionInterpolation ( ) [inline]

Definition at line 316 of file kfbxanimcurvenode.h.

{return mQuaternionInterpolation != 0;}; 
bool SetQuaternionInterpolation ( unsigned short  pVal )

Returns false if pVal is an invalid value.

unsigned short GetQuaternionInterpolation ( ) [inline]

Definition at line 320 of file kfbxanimcurvenode.h.

{ return mQuaternionInterpolation; };
void SetKFCurveNodeLayerType ( KFbxProperty pProp )
static const char* CurveNodeNameFrom ( const char *  pName ) [static]
KFbxAnimCurveNode* Find ( KFbxAnimCurveNode pRoot,
const KString pName 
) [protected]
virtual bool ConstructProperties ( bool  pForceSet ) [protected, virtual]
virtual void Destruct ( bool  pRecursive,
bool  pDependents 
) [protected, virtual]

Friends And Related Function Documentation

friend class KFbxObject [friend]

Reimplemented from KFbxPlug.

Definition at line 352 of file kfbxanimcurvenode.h.

void CollectAnimFromCurveNode ( KFCurve **  lSrc,
KFCurveNode fcn,
unsigned int  nbCrvs,
KFbxAnimCurveNode cn,
KSet pNickToAnimCurveTimeWarpsSet,
KSet pNickToKFCurveNodeWarpSet 
) [friend]

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

KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode
KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode KFbxAnimCurveNode