fbxsdk/scene/fbxscene.h Source File
 
 
 
fbxsdk/scene/fbxscene.h
Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2013 Autodesk, Inc.
00004    All rights reserved.
00005  
00006    Use of this software is subject to the terms of the Autodesk license agreement
00007    provided at the time of installation or download, or which otherwise accompanies
00008    this software in either electronic or hard copy form.
00009  
00010 ****************************************************************************************/
00011 
00013 #ifndef _FBXSDK_SCENE_H_
00014 #define _FBXSDK_SCENE_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/core/base/fbxset.h>
00019 #include <fbxsdk/core/base/fbxcharptrset.h>
00020 #include <fbxsdk/scene/fbxdocument.h>
00021 #include <fbxsdk/scene/animation/fbxanimevaluator.h>
00022 #include <fbxsdk/scene/geometry/fbxlayer.h>
00023 #include <fbxsdk/scene/geometry/fbxnodeattribute.h>
00024 #include <fbxsdk/fileio/fbxiosettings.h>
00025 #include <fbxsdk/fileio/fbxglobalsettings.h>
00026 
00027 #include <fbxsdk/fbxsdk_nsbegin.h>
00028 
00029 class FbxGeometry;
00030 class FbxTexture;
00031 class FbxSurfaceMaterial;
00032 class FbxCharacter;
00033 class FbxControlSetPlug;
00034 class FbxGenericNode;
00035 class FbxPose;
00036 class FbxCharacterPose;
00037 class FbxVideo;
00038 class FbxGlobalLightSettings;
00039 class FbxGlobalCameraSettings;
00040 
00061 class FBXSDK_DLL FbxScene : public FbxDocument
00062 {
00063     FBXSDK_OBJECT_DECLARE(FbxScene, FbxDocument);
00064 
00065 public:
00070 
00071     void Clear();
00073 
00078 
00085     FbxNode* GetRootNode() const;
00087 
00092 
00096     void FillTextureArray(FbxArray<FbxTexture*>& pTextureArray);
00097 
00101     void FillMaterialArray(FbxArray<FbxSurfaceMaterial*>& pMaterialArray);
00102 
00104 
00109 
00113     int             GetGenericNodeCount() const;
00114 
00119     FbxGenericNode* GetGenericNode(int pIndex);
00120 
00125     FbxGenericNode* GetGenericNode(char* pName);
00126 
00131     bool             AddGenericNode(FbxGenericNode* pGenericNode);
00132 
00138     bool             RemoveGenericNode(FbxGenericNode* pGenericNode);
00139 
00141 
00142 
00147 
00151     int GetCharacterCount() const;
00152 
00157     FbxCharacter* GetCharacter(int pIndex);
00158 
00163     int CreateCharacter(const char* pName);
00164 
00168     void DestroyCharacter(int pIndex);
00169 
00171 
00176 
00180     int GetControlSetPlugCount() const;
00181 
00186     FbxControlSetPlug* GetControlSetPlug(int pIndex);
00187 
00192     int CreateControlSetPlug(char* pName);
00193 
00197     void DestroyControlSetPlug(int pIndex);
00198 
00200 
00205 
00210     int GetCharacterPoseCount() const;
00211 
00216     FbxCharacterPose* GetCharacterPose(int pIndex);
00217 
00222     int CreateCharacterPose(char* pName);
00223 
00227     void DestroyCharacterPose(int pIndex);
00228 
00230 
00235 
00240     int GetPoseCount() const;
00241 
00246     FbxPose* GetPose(int pIndex);
00247 
00253     bool AddPose(FbxPose* pPose);
00254 
00260     bool RemovePose(FbxPose* pPose);
00261 
00267     bool RemovePose(int pIndex);
00268 
00269 
00271 
00275 
00279     inline FbxDocumentInfo* GetSceneInfo() { return GetDocumentInfo(); }
00280 
00284     inline void SetSceneInfo(FbxDocumentInfo* pSceneInfo) { SetDocumentInfo(pSceneInfo); }
00285 
00287 
00292 
00296     FbxGlobalSettings& GetGlobalSettings();
00297 
00301     const FbxGlobalSettings& GetGlobalSettings() const;
00303 
00324 
00328                 void SetEvaluator(FbxAnimEvaluator* pEvaluator);
00329 
00335                 FbxAnimEvaluator* GetEvaluator();
00336 
00338 
00342     void FillPoseArray(FbxArray<FbxPose*>& pPoseArray);
00343 
00344 
00349 
00353     int                     GetMaterialCount            () const;
00354 
00360     FbxSurfaceMaterial*            GetMaterial                 (int pIndex);
00361 
00366     FbxSurfaceMaterial*            GetMaterial                 (char* pName);
00367 
00372     bool                    AddMaterial                 (FbxSurfaceMaterial* pMaterial);
00373 
00378     bool                    RemoveMaterial              (FbxSurfaceMaterial* pMaterial);
00379 
00381 
00386 
00396     int                     GetTextureCount             () const;
00397 
00408     FbxTexture*            GetTexture                  (int pIndex);
00409 
00414     FbxTexture*            GetTexture                  (char* pName);
00415 
00420     bool                    AddTexture                  (FbxTexture* pTexture);
00421 
00426     bool                    RemoveTexture               (FbxTexture* pTexture);
00427 
00429 
00434 
00438     int                     GetNodeCount                () const;
00439 
00445     FbxNode*               GetNode                     (int pIndex);
00446 
00451     bool                    AddNode                     (FbxNode* pNode);
00452 
00457     bool                    RemoveNode                  (FbxNode* pNode);
00458 
00465     int                     GetCurveOnSurfaceCount      ();
00466 
00471     FbxNode*               FindNodeByName              ( const FbxString& pName );
00472 
00474 
00479 
00483     int                     GetGeometryCount            () const;
00484 
00490     FbxGeometry*           GetGeometry                 (int pIndex);
00491 
00496     bool                    AddGeometry                 (FbxGeometry* pGeometry);
00497 
00502     bool                    RemoveGeometry              (FbxGeometry* pGeometry);
00503 
00505 
00510 
00514     int                     GetVideoCount               () const;
00515 
00521     FbxVideo*              GetVideo                    (int pIndex);
00522 
00527     bool                    AddVideo                    (FbxVideo* pVideo);
00528 
00533     bool                    RemoveVideo                 (FbxVideo* pVideo);
00534 
00536 
00553     void SyncShowPropertyForInstance();
00555 
00556 /*****************************************************************************************************************************
00557 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
00558 *****************************************************************************************************************************/
00559 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00560 
00568         virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL) const;    
00569 
00570     virtual FbxObject& Copy(const FbxObject& pObject);
00571 
00572     void ConnectMaterials();
00573 
00574     void BuildMaterialLayersDirectArray();
00575     void ReindexMaterialConnections(); // called to make sure that eIndex is remapped to eIndexToDirect
00576 
00577     FbxSet* AddTakeTimeWarpSet(char *pTakeName);
00578     FbxSet* GetTakeTimeWarpSet(char *pTakeName);
00579 
00580         // This function will destroy the scene (and all the objects directly connected to it) without sending 
00581         // the Connect notifications nor trying to disconnect the objects first. This is a bypass of the intended
00582         // workflow and should be used with care.
00583         void ForceKill();
00584 
00585 private:
00586     virtual void Construct(const FbxScene* pFrom);
00587     virtual void Destruct(bool pRecursive);
00588 
00589     void ConnectTextureLayerElement(FbxLayerContainer* pLayerContainer,
00590                                     FbxLayerElement::EType pLayerType,
00591                                     FbxNode* pParentNode);
00592 
00593     void BuildTextureLayersDirectArrayForLayerType(FbxLayerContainer* pLayerContainer,
00594                                                    FbxLayerElement::EType pLayerType);
00595 
00596 public:
00597     void ConvertNurbsSurfaceToNurbs();
00598     void ConvertMeshNormals();
00599     void ConvertNurbsCurvesToNulls();
00600     void ConnectTextures();
00601     void BuildTextureLayersDirectArray();
00602     void FixInheritType(FbxNode *pNode);
00603 
00604     void UpdateScaleCompensate(FbxNode *pNode, FbxIOSettings& pIOS);
00605 
00606     FbxClassId ConvertAttributeTypeToClassID(FbxNodeAttribute::EType pAttributeType);
00607 
00608     // These data structures are only used for legacy FBX files (version 6.x and earlier). The
00609     // validity of their content is not guaranteed with the most recent versions.
00610     FbxGlobalLightSettings&  GlobalLightSettings()  { return *mGlobalLightSettings; }
00611     FbxGlobalCameraSettings& GlobalCameraSettings() { return *mGlobalCameraSettings; }
00612 
00613 private:
00614     FbxNode*                                    mRootNode;
00615     FbxGlobalLightSettings*             mGlobalLightSettings;
00616     FbxGlobalCameraSettings*    mGlobalCameraSettings;
00617         FbxAnimEvaluator*                       mEvaluator;
00618     FbxCharPtrSet                               mTakeTimeWarpSet;
00619 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
00620 };
00621 
00622 #include <fbxsdk/fbxsdk_nsend.h>
00623 
00624 #endif /* _FBXSDK_SCENE_H_ */