- Main Page
- Classes
- Files
- Directories

- File List
- File Members

# fbxreaderfbx5.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_FILEIO_FBX_READER_FBX5_H_
    00014 #define _FBXSDK_FILEIO_FBX_READER_FBX5_H_
    00015
    00016 #include <fbxsdk.h>
    00017
    00018 #include <fbxsdk/fbxsdk_nsbegin.h>
    00019
    00020 class FbxAnimLayer;
    00021 class Fbx5ObjectTypeInfo;
    00022
    00023 FbxReader* CreateFBXReader(FbxManager& pManager,
    00024                             FbxImporter& pImporter,
    00025                             int pID,
    00026                             FbxStatus& pStatus);
    00027 void GetInfoFBXReader(int* pCount,
    00028                       char const* const* * pExtensions,
    00029                       char const* const* * pDescriptions);
    00030
    00031 class FbxReaderFbx5 : public FbxReader
    00032 {
    00033 public:
    00034     FbxReaderFbx5(FbxManager& pManager, FbxImporter& pImporter, int pID, FbxStatus& pStatus);
    00035     virtual ~FbxReaderFbx5();
    00036
    00037     virtual bool FileOpen(char* pFileName, bool pIgnoredArg);
    00038     virtual bool FileOpen(char* pFileName);
    00039     virtual bool FileOpen(FbxFile * pFile);
    00040     virtual bool FileOpen(FbxStream * pStream, void* pStreamData);
    00041     virtual bool FileClose();
    00042     virtual bool IsFileOpen();
    00043
    00044     virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder);
    00045
    00046     typedef enum
    00047     {
    00048         eASCII,
    00049         eBINARY,
    00050         eENCRYPTED
    00051     } EImportMode;
    00052
    00053     EImportMode GetImportMode();
    00054     virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision);
    00055
    00056     virtual bool GetReadOptions(bool pParseFileAsNeeded = true);
    00057     virtual bool Read(FbxDocument* pDocument);
    00058
    00059     virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true);
    00060     virtual bool Read(FbxScene& pScene, FbxIO* pFbx);
    00061
    00062     virtual FbxDocumentInfo* GetSceneInfo() { return mSceneInfo; }
    00063     virtual FbxArray<FbxTakeInfo*>* GetTakeInfo() { return &mTakeInfo; }
    00064
    00065     virtual bool SupportsStreams() const { return true; }
    00066
    00067 private:
    00068     void ReadOptionsInMainSection();
    00069     void ReadTakeOptions();
    00070     bool ReadOptionsInExtensionSection(int& pSectionIndex);
    00071     void ReadOptionsInGenericSection();
    00072     bool WriteOptionsInExtensionSection(bool pOverwriteLastExtensionSection=false);
    00073     bool WriteThumbnail(FbxThumbnail*);
    00074     FbxDocumentInfo* ReadSceneInfo();
    00075     FbxDocumentInfo* ReadSceneInfo(FbxString& pType);
    00076     void WriteSceneInfo(FbxDocumentInfo*);
    00077     void SetIsBeforeVersion6WithMainSection(bool pOpenMainSection);
    00078
    00079     bool ReadDefinitionSection(FbxScene& pScene, FbxArray<Fbx5ObjectTypeInfo*>& pObjectContent);
    00080     bool ReadObjectSection(FbxScene& pScene, FbxArray<Fbx5ObjectTypeInfo*>& pObjectContent);
    00081     bool ReadObject(FbxScene& pScene, FbxString& pObjectType, FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId);
    00082     bool ReadNode();
    00083     //bool ReadGenericNode(FbxScene& pScene);
    00084     bool ReadAnimation(FbxScene& pScene);
    00085     bool ReadTakeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo);
    00086     FbxThumbnail* ReadThumbnail();
    00087     bool ReadNodeAnimation(FbxIO& pFileObject, FbxScene& pScene, FbxTakeInfo* pTakeInfo);
    00088     bool TimeShiftNodeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo);
    00089     bool ReadHierarchy(FbxNode& pRootNode);
    00090     bool ResolveHierarchy(FbxNode& pRootNode);
    00091     bool ResolveLinks(FbxNode& pRootNode, FbxNode& pCurrentNode);
    00092     bool ResolveTargets(FbxNode& pRootNode);
    00093     bool ResolveUpNodes(FbxNode& pRootNode);
    00094     bool ResolveCameraBackgrounds(FbxScene& pScene);
    00095     void RemoveDuplicateTextures(FbxScene& pScene);
    00096     void RemoveDuplicateMaterials(FbxScene& pScene);
    00097
    00098     void ReadPose(FbxScene& pScene);
    00099     bool ReadPose(FbxScene& pScene, FbxPose* pPose, bool pAsBindPose);
    00100
    00101     void ReadCameraSwitcher(FbxScene& pScene);
    00102     void ReorderCameraSwitcherIndices(FbxScene& pScene);
    00103
    00104     void ReadGobo(FbxScene& pScene);
    00105     void ReadGoboSection(FbxScene& pScene);
    00106     void ReadGobo(FbxGobo& pGobo);
    00107
    00108     void ReadCharacter(FbxScene& pScene);
    00109     void ReadCharacter(FbxCharacter& pCharacter,int& pInputType, int& pInputIndex);
    00110     void ReadCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId);
    00111     void ReadCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId);
    00112     void ReadCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink);
    00113     void ReadFilterSet(FbxCharacter& pCharacter);
    00114     void ReadControlSet(FbxControlSet& pControlSet);
    00115     void ReadControlSetLinkGroup(FbxControlSet& pControlSet, int pCharacterGroupId);
    00116     void ReadControlSetLink(FbxControlSet& pControlSet, int pCharacterNodeId);
    00117     void ReadEffector(FbxControlSet& pControlSet);
    00118     void ReadEffectorAux(FbxControlSet& pControlSet);
    00119
    00120     int  ReadCharacterPose(FbxScene& pScene);
    00121     bool ReadCharacterPose(FbxCharacterPose& pCharacterPose);
    00122
    00123     void ReadGlobalLightSettings(FbxScene& pScene);
    00124     void ReadShadowPlane(FbxScene& pScene);
    00125     void ReadAmbientColor(FbxScene& pScene);
    00126     void ReadFogOption(FbxScene& pScene);
    00127
    00128     void ReadGlobalCameraAndTimeSettings(FbxScene& pScene); // for pre v6 files
    00129     void ReadGlobalTimeSettings(FbxScene& pScene);
    00130
    00131     void ReadGlobalCameraSettings(FbxScene& pScene);
    00132
    00133     bool ReadMedia(FbxScene& pScene, const char* pEmbeddedMediaDirectory = "");
    00134     FbxString ReadMediaClip(const char* pEmbeddedMediaDirectory);
    00135
    00136     bool ReadNode                       ( FbxNode& pNode );
    00137     bool ReadGenericNode                ( FbxGenericNode& pNode );
    00138     bool ReadNodeChildrenName           ( FbxNode& pNode );
    00139     bool ReadNodeShading                ( FbxNode& pNode );
    00140     bool ReadNodeCullingType            ( FbxNode& pNode );
    00141     bool ReadNodeLimits                 ( FbxNode& pNode );
    00142     bool ReadNodeTarget                 ( FbxNode& pNode );
    00143     bool ReadNodeAttribute              ( FbxNode& pNode );
    00144     bool ReadNodePivots                 ( FbxNode& pNode );
    00145     bool ReadNodeDefaultAttributes      ( FbxNode& pNode );
    00146     bool ReadNodeProperties             ( FbxNode& pNode );
    00147     bool ReadGeometry                   ( FbxGeometry& pGeometry );
    00148     bool ReadGeometryMaterial           ( FbxGeometry& pGeometry );
    00149     bool ReadGeometryTexture            ( FbxGeometry& pGeometry );
    00150     bool ReadGeometryLinks              ( FbxGeometry& pGeometry );
    00151     bool ReadGeometryShapes             ( FbxGeometry& pGeometry );
    00152     bool ReadGeometryLayer              ( FbxGeometry& pGeometry );
    00153     bool ReadGeometryTextureLayer       ( FbxGeometry& pGeometry, int pLayerIndex );
    00154
    00155     bool ReadNull                       ( FbxNull& pNull );
    00156
    00157     bool ReadMarker                     ( FbxMarker& pMarker );
    00158
    00159     bool ReadCamera                     ( FbxCamera& pCamera );
    00160     bool ReadCameraSwitcher             ( FbxCameraSwitcher& pCameraSwitcher );
    00161
    00162     bool ReadLight                      ( FbxLight& pLight );
    00163
    00164     bool ReadMesh                       ( FbxMesh& pMesh );
    00165     bool ReadMeshVertices               ( FbxMesh& pMesh );
    00166     bool ReadMeshNormals                ( FbxMesh& pMesh );
    00167     bool ReadMeshAssignation            ( FbxMesh& pMesh );
    00168     bool ReadMeshPolygonIndex           ( FbxMesh& pMesh );
    00169     bool ReadMeshPolyGroupIndex         ( FbxMesh& pMesh );
    00170     bool ReadMeshMaterialsID            ( FbxMesh& pMesh );
    00171     bool ReadMeshTexturesID             ( FbxMesh& pMesh );
    00172     bool ReadMeshTextureType            ( FbxMesh& pMesh );
    00173     bool ReadMeshTextureUV              ( FbxMesh& pMesh );
    00174     bool ReadMeshTextureIndex           ( FbxMesh& pMesh );
    00175     bool ReadMeshVertexColors           ( FbxMesh& pMesh );
    00176
    00177
    00178     // Layer elements
    00179     bool ReadLayerElements              (FbxGeometry& pGeometry);
    00180     bool ReadLayerElementsMaterial      (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsMaterial);
    00181     bool ReadLayerElementsNormal        (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsNormal);
    00182     bool ReadLayerElementsVertexColor   (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsVertexColor);
    00183     bool ReadLayerElementsTexture       (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsTexture);
    00184     bool ReadLayerElementsUV            (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsUV);
    00185     bool ReadLayerElementsPolygonGroup  (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsPolygonGroup);
    00186
    00187     bool ReadNurb                       ( FbxNurbs& pNurbs );
    00188
    00189     bool ReadPatch                      ( FbxPatch& pPatch );
    00190     int ReadPatchType                  ( FbxPatch& pPatch );
    00191
    00192     bool ReadTexture(FbxFileTexture& pTexture);
    00193     bool ReadSurfaceMaterial(FbxSurfacePhong& pMaterial);
    00194     bool ReadLink(FbxCluster& pLink);
    00195     bool ReadSkin(FbxSkin& pSkin);
    00196     bool ReadCluster(FbxCluster& pCluster);
    00197     bool ReadShape(FbxShape& pShape, FbxGeometry& pGeometry);
    00198     bool ReadVideo(FbxVideo& pVideo);
    00199     bool ReadConstraint(FbxConstraint& pPosition);
    00200
    00201     bool ReadUserProperties                 (FbxNode& pNode);
    00202     bool ReadProperties(FbxObject *pObject);
    00203
    00204     //
    00205     // 6.0 Format specific
    00206     //
    00207     bool ReadConnectionSection();
    00208     void ReadPoses(FbxScene& pScene);
    00209
    00210     FbxString ConvertCameraName(FbxString pCameraName);
    00211
    00212     bool GenerateParametricGeometryLayer(FbxGeometry& pGeometry);
    00213     void CorrectTextureLayers(FbxMesh& pMesh);
    00214
    00215     void TransferAnimation(void* pRootCurveNode, FbxProperty& pRootProperty, bool pValueOnly = false);
    00216     void ReadAnimation(FbxIO& pFileObject, void* pCurveNode);
    00217     void ReadAnimation(FbxIO& pFileObject, FbxObject*  pObj);
    00218
    00219     void ReadTimeWarps(FbxIO& pFileObject, FbxSet& pTimeWarpSet);
    00220     void DestroyTimeWarps(FbxSet& pTimeWarpSet);
    00221
    00222     FbxNode* FindNode (char* pName);
    00223     int FindString(FbxString pString, FbxArray<FbxString*>& pStringArray);
    00224     FbxString FindFile(FbxString pFullFilePath, FbxString pRelativeFilePath = "");
    00225
    00226     bool ReadPassword(FbxString pPassword);
    00227
    00228     void ReadSceneGenericPersistenceSection(FbxScene& pScene);
    00229
    00230
    00231
    00232
    00233 private:
    00234     FbxReaderFbx5& operator=(FbxReaderFbx5 const&) { return *this; }
    00235
    00236     FbxIO*          mFileObject;
    00237     FbxImporter&    mImporter;
    00238
    00239     FbxCharPtrSet mNodeArrayName;
    00240     FbxCharPtrSet mTargetArrayName;
    00241     FbxCharPtrSet mUpNodeArrayName;
    00242     FbxCharPtrSet mCameraBackgroundArrayName;
    00243
    00244     FbxObjectStringMap      mObjectMap;
    00245     FbxArray<FbxTakeInfo *> mTakeInfo;
    00246     FbxDocumentInfo * mSceneInfo;
    00247     FbxAnimLayer* mAnimLayer;
    00248
    00249     // Temporary storage
    00250     FbxArray<FbxTexture*> mTemporaryTextures;
    00251 };
    00252
    00253 #include <fbxsdk/fbxsdk_nsend.h>
    00254
    00255 #endif /* _FBXSDK_FILEIO_FBX_READER_FBX5_H_ */