- Main Page
- Classes
- Files
- Directories
- Examples

- File List
- File Members

# fbxreaderfbx6.h

Go to the documentation of this file.

    00001 /****************************************************************************************
    00002
    00003    Copyright (C) 2012 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_FBX6_H_
    00014 #define _FBXSDK_FILEIO_FBX_READER_FBX6_H_
    00015
    00016 #include <fbxsdk.h>
    00017
    00018 #include <fbxsdk/fbxsdk_nsbegin.h>
    00019
    00020 class FbxAnimStack;
    00021 class FbxAnimLayer;
    00022 class Fbx6ObjectTypeInfo;
    00023 class Fbx6TypeReadReferences;
    00024
    00025
    00030 class Fbx6ClassTemplateMap
    00031 {
    00032 public:
    00033
    00037     Fbx6ClassTemplateMap();
    00038
    00042     ~Fbx6ClassTemplateMap();
    00043
    00044     // Fbx6ClassTemplateMap will own this template object.
    00045
    00051     bool AddClassId( FbxClassId pId, FbxObject* pTemplateObject );
    00052
    00057     bool MergeWithTemplate( FbxObject* pObject ) const;
    00058
    00059     class FbxClassIdCompare {
    00060     public:
    00061         inline int operator()(const FbxClassId& pKeyA, const FbxClassId& pKeyB) const
    00062         {
    00063             FbxHandle lA = reinterpret_cast<FbxHandle>( pKeyA.GetClassIdInfo() );
    00064             FbxHandle lB = reinterpret_cast<FbxHandle>( pKeyB.GetClassIdInfo() );
    00065
    00066             return (lA < lB) ? -1 : ((lB < lA) ? 1 : 0);
    00067         }
    00068     };
    00069
    00073     void Clear();
    00074
    00075 private:
    00076     typedef FbxMap< FbxClassId, FbxObject*, FbxClassIdCompare > MapType;
    00077     MapType mClassMap;
    00078
    00083     bool HasModifiedFlags(FbxProperty lProp) const;
    00084     inline FbxPropertyAttr::EFlags IndexToFlag( int i ) const { return static_cast<FbxPropertyAttr::EFlags>(1 << i); }
    00085 };
    00086
    00087
    00088
    00093 class FbxReaderFbx6 : public FbxReader
    00094 {
    00095 public:
    00096
    00102     FbxReaderFbx6(FbxManager& pManager, FbxImporter& pImporter, int pID);
    00103
    00107     virtual ~FbxReaderFbx6();
    00108
    00114     virtual bool FileOpen(char* pFileName, EFileOpenSpecialFlags pFlags);
    00115
    00120     virtual bool FileOpen(char* pFileName);
    00121
    00126     virtual bool FileOpen(FbxFile * pFile);
    00127
    00130     virtual bool FileOpen(FbxStream * pStream, void* pStreamData);
    00131
    00135     virtual bool FileClose();
    00136
    00140     virtual bool IsFileOpen();
    00141
    00145     typedef enum
    00146     {
    00147         eASCII,
    00148         eBINARY,
    00149         eENCRYPTED
    00150     } EImportMode;
    00151
    00155     EImportMode GetImportMode();
    00156
    00162     virtual void GetVersion(int& pMajor, int& pMinor, int& pRevision);
    00163
    00169     virtual bool GetAxisInfo(FbxAxisSystem* pAxisSystem, FbxSystemUnit* pSystemUnits);
    00170
    00177     virtual bool GetFrameRate(FbxTime::EMode &pTimeMode);
    00178
    00183     virtual bool GetStatistics(FbxStatistics* pStats);
    00184
    00189     virtual bool GetReadOptions(bool pParseFileAsNeeded = true);
    00190
    00191
    00196     virtual bool Read(FbxDocument *pDocument);
    00197
    00203     virtual bool GetReadOptions(FbxIO* pFbx, bool pParseFileAsNeeded = true);
    00204
    00205
    00211     virtual bool Read(FbxDocument *pDocument, FbxIO* pFbx);
    00212
    00213
    00217     virtual void PluginReadParameters(FbxObject& pParams);
    00218
    00222     virtual FbxDocumentInfo*  GetSceneInfo() { return mSceneInfo; }
    00223
    00224
    00228     virtual FbxArray<FbxTakeInfo*>* GetTakeInfo() { return &mTakeInfo; }
    00229
    00233     virtual void SetProgressHandler(FbxProgress *pProgress);
    00234
    00235     virtual void SetEmbeddingExtractionFolder(const char* pExtractFolder);
    00236
    00237     virtual bool SupportsStreams() const { return true; }
    00238
    00239 private:
    00240
    00244     FbxDocumentInfo* ReadSceneInfo();
    00245
    00250     FbxDocumentInfo* ReadSceneInfo(FbxString& pType);
    00251
    00255     void WriteSceneInfo(FbxDocumentInfo*);
    00256
    00260     bool WriteThumbnail(FbxThumbnail*);
    00261
    00266
    00275     FbxObject* CreateGenericObject(FbxDocument *pDocument, char* pObjectType, char* pObjectSubType, char* pObjectName, FbxObject::EObjectFlag pFlags=FbxObject::eSavable);
    00276
    00282     bool ReadDescriptionSection(FbxDocument *pDocument, FbxString& pDocumentName);
    00283
    00289     bool ReadReferenceSection(FbxDocument *pDocument, Fbx6TypeReadReferences& pDocReferences);
    00290
    00296     bool ReadDefinitionSection(FbxDocument *pDocument, FbxArray<Fbx6ObjectTypeInfo*>& pObjectContent );
    00297
    00304     bool ReadObjectSection(FbxDocument *pDocument, FbxArray<Fbx6ObjectTypeInfo*>& pObjectContent, Fbx6TypeReadReferences& pDocReferences );
    00305
    00316     bool ReadObject(FbxDocument *pDocument, FbxString& pObjectType, FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId, FbxObject* pReferencedObject, Fbx6TypeReadReferences& pDocReferences);
    00317
    00322     bool ReadConnectionSection(FbxDocument *pDocument );
    00324
    00329
    00334     bool ReadDocumentAnimation(FbxDocument *pDocument);
    00335
    00342     void ReadObjectAnimation(FbxIO& pFileObject, FbxObject* pNode, FbxAnimStack& pAnimStack, int pExceptionFlag);
    00343
    00349     void ReadPropertyAnimation(FbxIO& pFileObject, FbxProperty* pProp, FbxAnimStack& pAnimStack);
    00350
    00356     bool ReadTakeAnimation(FbxScene& pScene, FbxTakeInfo* pTakeInfo);
    00357
    00363     bool ReadNodeAnimation(FbxIO& pFileObject, FbxScene& pScene, FbxAnimStack& pAnimStack, FbxTakeInfo* pTakeInfo);
    00364
    00365
    00370     void ReadLayers(FbxIO& pFileObject, FbxTakeInfo* pTakeInfo);
    00371
    00377     void ReadTimeWarps(FbxIO& pFileObject, FbxSet& pTimeWarpSet, FbxScene& pScene);
    00378
    00382     FbxThumbnail* ReadThumbnail();
    00383
    00389     bool TimeShiftNodeAnimation(FbxScene& pScene, FbxAnimStack& pAnimStack, int pTimeOffsetType, FbxTime pTimeOffset);
    00391
    00396
    00400     void ReadCameraSwitcher(FbxScene& pScene);
    00401
    00405     bool ReadCameraSwitcher( FbxCameraSwitcher& pCameraSwitcher );
    00406
    00410     void ReorderCameraSwitcherIndices(FbxScene& pScene);
    00412
    00417
    00421     void ReadGlobalLightSettings(FbxScene& pScene);
    00422
    00426     void ReadGlobalTimeSettings(FbxScene& pScene);
    00427
    00431     void ReadGlobalCameraSettings(FbxScene& pScene);
    00432
    00436     void ReadShadowPlane(FbxScene& pScene);
    00437
    00441     void ReadAmbientColor(FbxScene& pScene);
    00442
    00446     void ReadFogOption(FbxScene& pScene);
    00448
    00453
    00457     void ReadCharacter(FbxCharacter& pCharacter,int& pInputType, int& pInputIndex);
    00458
    00463     void ReadCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId);
    00464
    00469     void ReadCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId);
    00470
    00474     void ReadCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink);
    00475
    00480     bool ReadCharacterPose(FbxCharacterPose& pCharacterPose); // TBV
    00482
    00487
    00494     bool ReadPose(FbxScene& pScene, FbxPose* pPose, bool pAsBindPose);
    00495
    00501     bool ReadMedia(FbxDocument *pDocument, const char* pEmbeddedMediaDirectory = "");
    00502
    00507     bool ReadGlobalSettings(FbxGlobalSettings& pGlobalSettings);
    00508
    00513     bool ReadExposureControl(FbxExposureControl& pExposureControl);
    00515
    00520
    00527     bool ReadNode                       ( FbxNode& pNode, FbxString& pObjectSubType, Fbx6TypeReadReferences& pDocReferences );
    00528
    00533     bool ReadContainer                  ( FbxContainer& pContainer );
    00534
    00539     bool ReadGenericNode                ( FbxGenericNode& pNode );
    00540
    00545     bool ReadNodeShading                ( FbxNode& pNode );
    00546
    00551     bool ReadNodeCullingType            ( FbxNode& pNode ); // TBV, probablement passe tout en property
    00552
    00557     bool ReadNodeTarget                 ( FbxNode& pNode );
    00558
    00566     bool ReadNodeAttribute              ( FbxNode& pNode , FbxString& pObjectSubType, bool& pCreatedAttribute, Fbx6TypeReadReferences& pDocReferences);
    00567
    00575     FbxNodeAttribute* ReadNodeAttribute( FbxString& pObjectSubType, FbxString& pObjectName, FbxString& pObjectUniqueId, FbxObject* pReferencedObject);
    00576
    00583     bool ReadNodeProperties             ( FbxNode& pNode, bool pReadNodeAttributeProperties );
    00584
    00589     bool ReadLayeredTexture             ( FbxLayeredTexture& pTex );
    00590
    00595     bool ReadGeometryLinks              ( FbxGeometry& pGeometry );
    00596
    00601     bool ReadGeometryShapes             ( FbxGeometry& pGeometry );
    00602
    00607     bool ReadNull                       ( FbxNull& pNull );
    00608
    00613     bool ReadMarker                     ( FbxMarker& pMarker );
    00614
    00619     bool ReadCamera                     ( FbxCamera& pCamera );
    00620
    00625     bool ReadCameraStereo               ( FbxCameraStereo& pCameraStereo );
    00626
    00631     bool ReadCameraStereoPrecomp        (FbxCameraStereo& pCameraStereo);
    00632
    00637     bool ReadLight                      ( FbxLight& pLight );
    00638
    00644     bool ReadBindingTable               ( FbxBindingTable& pTable );
    00645
    00650     bool ReadBindingOperator            ( FbxBindingOperator& pOperator );
    00651
    00656     bool ReadMesh                       ( FbxMesh& pMesh );
    00657
    00662     bool ReadMeshSmoothness               ( FbxMesh& pMesh );
    00663
    00668     bool ReadMeshVertices               ( FbxMesh& pMesh );
    00669
    00674     bool ReadMeshPolygonIndex           ( FbxMesh& pMesh );
    00675
    00680     bool ReadMeshEdges                  ( FbxMesh& pMesh );
    00681
    00688     //bool ReadSubdiv( FbxSubDiv& pSubdiv, FbxString& pObjectName, FbxObject* pReferencedObject);
    00689     bool ReadSubdiv( FbxSubDiv& pSubdiv);
    00690
    00695     bool ReadDocument                   ( FbxDocument& pSubDocument );
    00696
    00701     bool ReadCollection                 ( FbxCollection& pCollection );
    00702
    00707     bool ReadSelectionSet                ( FbxSelectionSet& pSelectionSet);
    00708
    00709     bool ReadSelectionNode             (FbxSelectionNode& pSelectionNode);
    00710
    00715     bool ReadNurb                       ( FbxNurbs& pNurbs );
    00716
    00721     bool ReadNurbsSurface               ( FbxNurbsSurface& pNurbs );
    00722
    00727     bool ReadPatch                      ( FbxPatch& pPatch );
    00728
    00733     int  ReadPatchType                  ( FbxPatch& pPatch );
    00734
    00735
    00740     bool ReadNurbsCurve                 ( FbxNurbsCurve& pNurbsCurve );
    00741
    00745     bool ReadTrimNurbsSurface           ( FbxTrimNurbsSurface& pNurbs );
    00746
    00751     bool ReadBoundary                   ( FbxBoundary& pBoundary );
    00752
    00758     bool ReadShape                      ( FbxShape& pShape, FbxGeometry& pGeometry);
    00759
    00764     bool ReadImplementation             ( FbxImplementation& pImplementation );
    00765
    00770     bool ReadFileTexture                    (FbxFileTexture& pTexture);
    00771
    00778     FbxSurfaceMaterial* ReadSurfaceMaterial(char const* pName, char const* pMaterialType, FbxSurfaceMaterial* pReferencedMaterial);
    00779
    00784     bool ReadVideo                      (FbxVideo& pVideo);
    00785
    00790     bool ReadThumbnail                  (FbxThumbnail& pThumbnail);
    00792
    00793
    00798
    00803     bool ReadLayerElements              (FbxGeometry& pGeometry);
    00804
    00810     bool ReadLayerElementsMaterial      (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsMaterial);
    00811
    00817     bool ReadLayerElementsNormal        (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsNormal);
    00818
    00824     bool ReadLayerElementsTangent        (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsTangent);
    00825
    00831     bool ReadLayerElementsBinormal        (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsBinormal);
    00832
    00838     bool ReadLayerElementsVertexColor   (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsVertexColor);
    00839
    00846     bool ReadLayerElementsTexture (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsTexture, FbxLayerElement::EType pTextureType);
    00847
    00854     bool ReadLayerElementsChannelUV (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsUV, FbxLayerElement::EType pTextureType);
    00855
    00861     bool ReadLayerElementsPolygonGroup  (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsPolygonGroup);
    00862
    00868     bool ReadLayerElementsSmoothing     (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsSmoothing);
    00869
    00875     bool ReadLayerElementsUserData      (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsUserData);
    00876
    00882     bool ReadLayerElementsVisibility    (FbxGeometry* pGeometry, FbxArray<FbxLayerElement*>& pElementsVisibility);
    00883
    00889     bool ReadLayerElementEdgeCrease     (FbxGeometry*pGeometry, FbxArray<FbxLayerElement*>& pElementsEdgeCrease);
    00890
    00896     bool ReadLayerElementVertexCrease   (FbxGeometry*pGeometry, FbxArray<FbxLayerElement*>& pElementsVertexCrease);
    00897
    00903     bool ReadLayerElementHole           (FbxGeometry*pGeometry, FbxArray<FbxLayerElement*>& pElementsHole);
    00905
    00910
    00915     bool ReadGeometryWeightedMap(FbxGeometryWeightedMap& pGeometryWeightedMap);
    00917
    00922
    00927     bool ReadLink(FbxCluster& pLink);
    00928
    00933     bool ReadSkin(FbxSkin& pSkin);
    00934
    00939     bool ReadVertexCacheDeformer(FbxVertexCacheDeformer& pDeformer);
    00940
    00945     bool ReadCluster(FbxCluster& pCluster);
    00946
    00951     bool ReadConstraint(FbxConstraint& pPosition);
    00953
    00954     // Cache
    00955
    00960     bool ReadCache(FbxCache& pCache);
    00961
    00966
    00973     bool ResolveCameraBackgrounds(FbxScene& pScene);
    00974
    00978     void RemoveDuplicateTextures(FbxScene& pScene);
    00979
    00986     void ReplaceTextures(FbxArray<FbxTexture*> const& pTextureDuplicate,
    00987                          FbxArray<FbxTexture*> const& pTextureReplacement,
    00988                          FbxGeometry* pGeometry, FbxLayerElement::EType pTextureType);
    00989
    00993     void RemoveDuplicateMaterials(FbxScene& pScene);
    00994
    00999     FbxString ConvertCameraName(FbxString pCameraName);
    01000
    01006     int  FindString(FbxString pString, FbxArray<FbxString*>& pStringArray);
    01007
    01012     bool ReadPassword(FbxString pPassword);
    01013
    01017     void PublishProperties(FbxObject& pObject);
    01018
    01024     bool ReadProperties(FbxObject *pFbxObject, FbxIO *pFbxFileObject, bool pReadNodeAttributeProperties=true);
    01025
    01026
    01033     bool ReadPropertiesAndFlags(FbxObject *pFbxObject, FbxIO *pFbxFileObject, bool pReadNodeAttributeProperties=true);
    01034
    01040     bool ReadFlags(FbxObject *pFbxObject, FbxIO* pFbxFileObject);
    01041
    01045     void RebuildTrimRegions(FbxScene& pScene) const;
    01046
    01050     void SetSubdivision(FbxScene& pScene) const;
    01051
    01055     void ConvertShapeDeformProperty(FbxScene& pScene) const;
    01056
    01060     void RebuildLayeredTextureAlphas(FbxScene& pScene) const;
    01061
    01062     //---------------- in progress -------------------------------
    01063     void ReadOptionsInMainSection();
    01064     void ReadTakeOptions();
    01065     bool ReadOptionsInExtensionSection(int& pSectionIndex);
    01066     bool WriteOptionsInExtensionSection(bool pOverwriteLastExtensionSection=false);
    01067     //--------------- end in progress ----------------------------
    01068
    01072     void ReadGlobalSettingsInMainSection();
    01073
    01077     void ReadDefinitionSectionForStats();
    01079
    01080 private:
    01081
    01082     FbxReaderFbx6& operator=(FbxReaderFbx6 const&) { return *this; }
    01083
    01084     FbxIO*                       mFileObject;
    01085     FbxImporter&               mImporter;
    01086     FbxCharPtrSet                 mNodeArrayName;
    01087     FbxObjectStringMap         mObjectMap;
    01088     FbxObjectStringMap         mNodeAttributeMap;
    01089
    01090     bool                        mParseGlobalSettings;
    01091     FbxAxisSystem               mAxisSystem;
    01092     FbxSystemUnit               mSystemUnit;
    01093     FbxTime::EMode          mFrameRate;
    01094
    01095     bool                        mRetrieveStats;
    01096     FbxStatistics             * mDefinitionsStatistics;
    01097     FbxArray<FbxTakeInfo *> mTakeInfo;
    01098     FbxDocumentInfo          * mSceneInfo;
    01099     FbxAnimLayer             * mAnimLayer;
    01100     FbxSet                      mNickToKFCurveNodeTimeWarpsSet;
    01101     FbxSet*                     mNickToAnimCurveTimeWarpsSet;
    01102
    01103     Fbx6ClassTemplateMap        mClassTemplateMap;
    01104     FbxProgress              * mProgress;
    01105     bool                        mProgressPause;
    01106 };
    01107
    01108 #include <fbxsdk/fbxsdk_nsend.h>
    01109
    01110 #endif /* _FBXSDK_FILEIO_FBX_READER_FBX6_H_ */