KFbxScene Class Reference

#include <kfbxscene.h>

Inherits KFbxObject.

Inheritance diagram for KFbxScene:

Inheritance graph
List of all members.

Detailed Description

This class contains the description of a complete 3D scene.

The FBX SDK requires unique names for nodes, textures, materials, generic nodes, videos and gobos contained in a given scene. To build a valid node tree, new nodes must be inserted under the scene's root node.

This class also provides access to global settings and take information.

Definition at line 94 of file kfbxscene.h.

Error Management

The same error object is shared among instances of this class.

enum  EError
 Error identifiers. More...
KErrorGetError ()
 Retrieve error object.
EError GetLastErrorID ()
 Get last error code.
char * GetLastErrorString ()
 Get last error string.

Node Tree Access

KFbxNodeGetRootNode ()
 Get the root node.
KFbxNodeGetCameraSwitcher ()
 Get the camera switcher node.
void FillNodeArray (KArrayTemplate< KFbxNode * > &pNodeArray, KFbxNodeAttribute::EAttributeType pAttributeType, bool pDepthFirst=false)
 Fill a node array will all existing node with a given node attribute type.

Texture Material and Video Access

void FillTextureArray (KArrayTemplate< KFbxTexture * > &pTextureArray)
 Clear then fill a texture array with all existing textures included in the scene.
void FillMaterialArray (KArrayTemplate< KFbxSurfaceMaterial * > &pMaterialArray)
 Clear then fill a material array with all existing materials included in the scene.

Generic Node Access

int GetGenericNodeCount ()
 Get number of generic nodes.
KFbxGenericNodeGetGenericNode (int pIndex)
 Get generic node at given index.
KFbxGenericNodeGetGenericNode (char *pName)
 Access a generic node from its name.
bool AddGenericNode (KFbxGenericNode *pGenericNode)
 Add the generic node to this scene.
bool RemoveGenericNode (KFbxGenericNode *pGenericNode)
 Remove the generic node from this scene.

Character Management

int GetCharacterCount ()
 Get number of characters.
KFbxCharacterGetCharacter (int pIndex)
 Get character at given index.
int CreateCharacter (char *pName)
 Create a new character.
void DestroyCharacter (int pIndex)
 Destroy character.

ControlSetPlug Management

int GetControlSetPlugCount ()
 Get number of ControlSetPlugs.
KFbxControlSetPlugGetControlSetPlug (int pIndex)
 Get ControlSetPlug at given index.
int CreateControlSetPlug (char *pName)
 Create a new ControlSetPlug.
void DestroyControlSetPlug (int pIndex)
 Destroy ControlSetPlug.

Character Pose Management

int GetCharacterPoseCount ()
 Get number of character poses.
KFbxCharacterPoseGetCharacterPose (int pIndex)
 Get character pose at given index.
int CreateCharacterPose (char *pName)
 Create a new character pose.
void DestroyCharacterPose (int pIndex)
 Destroy character pose.

Pose Management

int GetPoseCount ()
 Get number of poses.
KFbxPoseGetPose (int pIndex)
 Get pose at given index.
bool AddPose (KFbxPose *pPose)
 Add a pose to this scene.
bool RemovePose (KFbxPose *pPose)
 Remove the specified pose from the scene.
bool RemovePose (int pIndex)
 Remove the pose at the given index from the scene.

Scene information

KFbxSceneInfoGetSceneInfo ()
 Get the scene information.
void SetSceneInfo (KFbxSceneInfo *pSceneInfo)
 Set the scene information.

Global Settings

KFbxGlobalLightSettingsGetGlobalLightSettings ()
 Access global light settings.
KFbxGlobalCameraSettingsGetGlobalCameraSettings ()
 Access global camera settings.
KFbxGlobalTimeSettingsGetGlobalTimeSettings ()
 Access global time settings.
KFbxGlobalSettingsGetGlobalSettings ()
 Access global settings.
const KFbxGlobalSettingsGetGlobalSettings () const
 Const access to global settings.

Take Management

bool CreateTake (char *pName)
 Create a take.
bool RemoveTake (char *pName)
 Remove a take.
bool SetCurrentTake (char *pName)
 Set the current take.
char * GetCurrentTakeName ()
 Get current take name.
void FillTakeNameArray (KArrayTemplate< KString * > &pNameArray)
 Fill a string array with all existing take names.

Take Information Management

bool SetTakeInfo (const KFbxTakeInfo &pTakeInfo)
 Set take information about an available take.
KFbxTakeInfoGetTakeInfo (const KString &pTakeName)
 Get take information about an available take.

Public Member Functions

void Clear ()
 Delete the node tree below the root node and restore default settings.


Member Enumeration Documentation

enum EError

Error identifiers.

Most of these are only used internally.

Definition at line 492 of file kfbxscene.h.


Member Function Documentation

void Clear (  ) 

Delete the node tree below the root node and restore default settings.

KFbxNode* GetRootNode (  ) 

Get the root node.

Returns:
Pointer to the root node.
Remarks:
This node is not saved. Do not use it to apply a global transformation to the node hierarchy. If a global transformation must be applied, insert a new node below this one.

KFbxNode* GetCameraSwitcher (  ) 

Get the camera switcher node.

Returns:
Pointer to the camera switcher node.
Remarks:
This node has a node attribute of type KFbxNodeAttribute::eCAMERA_SWITCHER. This node isn't saved if the scene contains no camera. Nodes inserted below are never saved.
Camera indices start at 1. Out of range indices are clamped between 1 and the number of cameras in the scene. The index of a camera refers to its order of appearance when searching the node tree depth first.

Use function KFbxTakeNode::GetCameraIndex() to get and set the camera index. If a camera is added or removed after camera indices have been set, the camera indices must be updated. It's much simpler to set the camera indices once all cameras have been set.

Camera index keys must be set with constant interpolation to make sure camera switches occur exaclty at key time.

void FillNodeArray ( KArrayTemplate< KFbxNode * > &  pNodeArray,
KFbxNodeAttribute::EAttributeType  pAttributeType,
bool  pDepthFirst = false 
)

Fill a node array will all existing node with a given node attribute type.

Parameters:
pNodeArray An array of pointers to KFbxNode objects.
pAttributeType Node attribute type searched.
pDepthFirst If true, the node tree is scanned depth first.
Remarks:
Scans the node hierarchy to find all existing node with a given node attribute type. The array of pointers is cleared before scanning the node hierarchy.

void FillTextureArray ( KArrayTemplate< KFbxTexture * > &  pTextureArray  ) 

Clear then fill a texture array with all existing textures included in the scene.

Parameters:
pTextureArray An array of texture pointers.

void FillMaterialArray ( KArrayTemplate< KFbxSurfaceMaterial * > &  pMaterialArray  ) 

Clear then fill a material array with all existing materials included in the scene.

Parameters:
pMaterialArray An array of material pointers.

int GetGenericNodeCount (  ) 

Get number of generic nodes.

Returns:
Number of Generic Nodes in this scene.

KFbxGenericNode* GetGenericNode ( int  pIndex  ) 

Get generic node at given index.

Parameters:
pIndex Position in the list of the generic nodes.
Returns:
Pointer to the generic node or NULL if the index is out of bounds.

KFbxGenericNode* GetGenericNode ( char *  pName  ) 

Access a generic node from its name.

Parameters:
pName 
Returns:
found generic node

bool AddGenericNode ( KFbxGenericNode pGenericNode  ) 

Add the generic node to this scene.

Parameters:
pGenericNode Pointer to the generic node to be added.
Returns:
If the passed parameter is NULL, this method will return false otherwise true.

bool RemoveGenericNode ( KFbxGenericNode pGenericNode  ) 

Remove the generic node from this scene.

Parameters:
pGenericNode Pointer to the generic node to be removed.
Returns:
If the passed parameter is NULL, this method will return false otherwise true.
Remarks:
The pointed object is not referenced by the scene anymore but is not deleted from the system.

int GetCharacterCount (  ) 

Get number of characters.

Returns:
Number of characters in this scene.

KFbxCharacter* GetCharacter ( int  pIndex  ) 

Get character at given index.

Parameters:
pIndex Position in the list of the characters.
Returns:
Pointer to the character or NULL if index is out of bounds.

int CreateCharacter ( char *  pName  ) 

Create a new character.

Parameters:
pName Name given to character.
Returns:
Index of the created character.

void DestroyCharacter ( int  pIndex  ) 

Destroy character.

Parameters:
pIndex Specify which character to destroy.
Remarks:
After the destruction of the requested element the list is resized.

int GetControlSetPlugCount (  ) 

Get number of ControlSetPlugs.

Returns:
Number of ControlSet plugs in this scene.

KFbxControlSetPlug* GetControlSetPlug ( int  pIndex  ) 

Get ControlSetPlug at given index.

Parameters:
pIndex Position in the list of the ControlSetPlug
Returns:
Pointer to ControlSetPlug or NULL if index is out of bounds.

int CreateControlSetPlug ( char *  pName  ) 

Create a new ControlSetPlug.

Parameters:
pName Name given to ControlSetPlug.
Returns:
Index of created ControlSetPlug.

void DestroyControlSetPlug ( int  pIndex  ) 

Destroy ControlSetPlug.

Parameters:
pIndex Specify which ControlSetPlug to destroy.
Remarks:
After the destruction of the requested element the list is resized.

int GetCharacterPoseCount (  ) 

Get number of character poses.

Returns:
Number of character poses in this scene.
Remarks:
Character Poses and Poses are two distinct entities having their own lists.

KFbxCharacterPose* GetCharacterPose ( int  pIndex  ) 

Get character pose at given index.

Parameters:
pIndex Position in the list of character poses.
Returns:
Pointer to the character pose or NULL if index is out of bounds.

int CreateCharacterPose ( char *  pName  ) 

Create a new character pose.

Parameters:
pName Name given to character pose.
Returns:
Index of created character pose.

void DestroyCharacterPose ( int  pIndex  ) 

Destroy character pose.

Parameters:
pIndex Specify which character pose to destroy.
Remarks:
After the destruction of the requested element the list is resized.

int GetPoseCount (  ) 

Get number of poses.

Returns:
Number of poses in the scene.
Remarks:
Poses and Character Poses are two distinct entities having their own lists.

KFbxPose* GetPose ( int  pIndex  ) 

Get pose at given index.

Parameters:
pIndex Position in the list of poses.
Returns:
Pointer to the pose or NULL if index is out of bounds.

bool AddPose ( KFbxPose pPose  ) 

Add a pose to this scene.

Parameters:
pPose The pose to be added to the scene.
Returns:
If the pose is correctly added to the scene, return otherwise, if the pose is already in the scene, returns false.

bool RemovePose ( KFbxPose pPose  ) 

Remove the specified pose from the scene.

Parameters:
pPose The pose to be removed from the scene.
Returns:
If the pose was successfully removed from the scene, return true otherwise, if the pose could not be found returns false.

bool RemovePose ( int  pIndex  ) 

Remove the pose at the given index from the scene.

Parameters:
pIndex The zero-based index of the pose to be removed.
Returns:
If the pose was successfully removed from the scene, return true otherwise, if the pose could not be found returns false.

KFbxSceneInfo* GetSceneInfo (  ) 

Get the scene information.

Returns:
Pointer to the scene information object.

void SetSceneInfo ( KFbxSceneInfo pSceneInfo  ) 

Set the scene information.

Parameters:
pSceneInfo Pointer to the scene information object.

KFbxGlobalLightSettings& GetGlobalLightSettings (  ) 

Access global light settings.

Returns:
Reference to the Global Light Settings.

KFbxGlobalCameraSettings& GetGlobalCameraSettings (  ) 

Access global camera settings.

Returns:
Reference to the Global Camera Settings.

KFbxGlobalTimeSettings& GetGlobalTimeSettings (  ) 

Access global time settings.

Returns:
Reference to the Global Time Settings.

KFbxGlobalSettings& GetGlobalSettings (  ) 

Access global settings.

Returns:
Reference to the Global Settings.

const KFbxGlobalSettings& GetGlobalSettings (  )  const

Const access to global settings.

Returns:
Const reference to the Global Settings.

bool CreateTake ( char *  pName  ) 

Create a take.

Parameters:
pName Created take name.
Returns:
true if not a single node, texture or material in the hierarchy had a take with this name before.

false if at least one node, texture or material in the hierarchy had a take with this name before.

In the last case, KFbxScene::GetLastErrorID() will return eTAKE_ERROR.

Remarks:
This function will create a new take node for every node, texture and material in the hierarchy. It may be more efficient to call KFbxTakeNodeContainer::CreateTakeNode() on the relevant nodes, textures and materials if a take only has a few of them with animation data.

bool RemoveTake ( char *  pName  ) 

Remove a take.

Parameters:
pName Name of the take to remove.
Returns:
true if every node, texture and material in the hierarchy have a take with this name.

false if at least one node, texture or material in the hierarchy don't have a take with this name.

In the last case, KFbxScene::GetLastErrorID() will return eTAKE_ERROR.

Remarks:
Scans the node hierarchy, the texture list and the material list to remove all take nodes found with that name.

bool SetCurrentTake ( char *  pName  ) 

Set the current take.

Parameters:
pName Name of the take to set.
Returns:
true if every node, texture and material in the hierarchy have a take with this name.

false if at least one node, texture or material in the hierarchy don't have a take with this name.

In the last case, KFbxScene::GetLastErrorID() will return eTAKE_ERROR.

Remarks:
Scans the node hierarchy, the texture list and the material list to set all take nodes found with that name.

All nodes, textures and materials without a take node of the requested name are set to default take node. It means that, if a node, texture or material does not have the requested take, it is assumed that this node is not animated in this take.

char* GetCurrentTakeName (  ) 

Get current take name.

Returns:
Current take name.

An empty string if the scene has not been imported from a file and function KFbxScene::SetCurrentTake() has not been called previously at least once.

void FillTakeNameArray ( KArrayTemplate< KString * > &  pNameArray  ) 

Fill a string array with all existing take names.

Parameters:
pNameArray An array of string objects.
Remarks:
Scans the node hierarchy, the texture list and the material list to find all existing take node names.

The array of string is cleared before scanning the node hierarchy.

bool SetTakeInfo ( const KFbxTakeInfo pTakeInfo  ) 

Set take information about an available take.

Parameters:
pTakeInfo Take information, field KFbxTakeInfo::mName specifies the targeted take.
Returns:
true if take is found and take information set.

KFbxTakeInfo* GetTakeInfo ( const KString pTakeName  ) 

Get take information about an available take.

Parameters:
pTakeName Take name.
Returns:
Pointer to take information or NULL if take isn't found or has no information set.

KError& GetError (  ) 

Retrieve error object.

Returns:
Reference to error object.

EError GetLastErrorID (  ) 

Get last error code.

Returns:
Last error code.

char* GetLastErrorString (  ) 

Get last error string.

Returns:
Textual description of the last error.