- Main Page
- Classes
- Files
- Directories

- File List
- File Members

# fbxwriterfbx5.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_WRITER_FBX5_H_
    00014 #define _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_
    00015
    00016 #include <fbxsdk.h>
    00017
    00018 #include <fbxsdk/fbxsdk_nsbegin.h>
    00019
    00020 //Writable versions for this file type.
    00021 //Sync the functions PreProcessScene and PostProcessScene with these elements of this list.
    00022
    00023 class FbxWriterFbx5 : public FbxWriter
    00024 {
    00025 public:
    00026     FbxWriterFbx5(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus);
    00027     virtual ~FbxWriterFbx5();
    00028
    00029     virtual bool FileCreate(char* pFileName);
    00030     virtual bool FileCreate(FbxStream* pStream, void* pStreamData);
    00031     virtual bool FileClose();
    00032     virtual bool IsFileOpen();
    00033
    00034     typedef enum
    00035     {
    00036         eASCII,
    00037         eBINARY,
    00038         eENCRYPTED
    00039     } EExportMode;
    00040
    00041     void SetExportMode(EExportMode pMode);
    00042
    00043     virtual void GetWriteOptions();
    00044     virtual bool Write(FbxDocument* pDocument);
    00045
    00046     virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx);
    00047     virtual bool PreprocessScene(FbxScene& pScene);
    00048     virtual bool PostprocessScene(FbxScene& pScene);
    00049
    00050     virtual bool SupportsStreams() const        { return true; }
    00051
    00052 private:
    00053     bool WriteAnimation(FbxScene& pScene);
    00054     bool WriteAnimation(FbxNode& pRootNode, FbxAnimLayer* pAnimLayer);
    00055     void WriteTakeNode(KFCurveNode* pCurveNode, bool pRescaleShininess);
    00056     bool WriteTakeNode(FbxObject& pObj, FbxAnimLayer* pAnimLayer, const char* pBlockName, bool pRescaleShininess = false);
    00057
    00058     bool WriteThumbnail(FbxThumbnail* pThumbnail);
    00059     void WriteSceneInfo(FbxDocumentInfo*);
    00060
    00061     bool WriteExtensionSection(FbxScene& pScene, int pMediaCount);
    00062
    00063     bool WriteNode(FbxNode* pNode);
    00064
    00065     bool WriteCameraSwitcher(FbxScene& pScene);
    00066
    00067     void WriteGobo(FbxScene& pScene);
    00068     void WriteGoboSection(FbxScene& pScene);
    00069     void WriteGobo(FbxGobo& pGobo);
    00070
    00071     void WriteCharacter(FbxScene& pScene);
    00072     void WriteCharacter(FbxScene& pScene, int pCharacterIndex);
    00073     void WriteCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId, FbxScene& pScene, bool pBackwardCompatible);
    00074     void WriteCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId, FbxScene& pScene, bool pBackwardCompatible);
    00075     void WriteFilterSet(FbxCharacter& pCharacter);
    00076     void WriteControlSet(FbxControlSet& pControlSet, FbxScene& pScene, bool pBackwardCompatible);
    00077     void WriteControlSetLinkGroup(FbxControlSet& pControlSet, int pCharacterGroupId, FbxScene& pScene, bool pBackwardCompatible);
    00078     void WriteControlSetLink(FbxControlSet& pControlSet, int pCharacterNodeId, FbxScene& pScene);
    00079     void WriteEffector(FbxControlSet& pControlSet, int pEffectorNodeId, FbxScene& pScene);
    00080     void WriteEffectorAux(FbxControlSet& pControlSet, int pEffectorNodeId, FbxScene& pScene);
    00081
    00082     int  WriteCharacterPose(FbxScene& pScene);
    00083     void WriteCharacterPose(FbxCharacterPose& pCharacterPose);
    00084
    00085     void WritePose(FbxScene& pScene);
    00086     void WritePose(FbxPose& pPose);
    00087
    00088     void WriteConstraint(FbxScene& pScene);
    00089
    00090     void WriteGlobalLightSettings(FbxScene& pScene);
    00091     void WriteShadowPlane(FbxScene& pScene);
    00092     void WriteShadowPlaneSection(FbxScene& pScene);
    00093     void WriteAmbientColor(FbxScene& pScene);
    00094     void WriteFogOption(FbxScene& pScene);
    00095
    00096     void WriteGlobalCameraAndTimeSettings(FbxScene& pScene);
    00097
    00098     bool WriteMedia(FbxScene& pScene, bool pMediaEmbedded, int& pMediaCount);
    00099     bool WriteMediaClip(FbxString& pFileName, bool pEmbeddedMedia);
    00100     void WriteDefaultMedia();
    00101
    00102     bool WriteNode                  (FbxNode& pNode);
    00103     bool WriteNodeBegin             (FbxNode& pNode);
    00104     bool WriteNodeParameters        (FbxNode& pNode);
    00105     bool WriteNodeVersion           (FbxNode& pNode);
    00106     bool WriteNodeShading           (FbxNode& pNode);
    00107     bool WriteNodeAnimationSettings (FbxNode& pNode);
    00108     bool WriteNodeCullingType       (FbxNode& pNode);
    00109     bool WriteNodeLimits            (FbxNode& pNode);
    00110     bool WriteNodeProperties        (FbxNode& pNode);
    00111     bool WriteNodeTarget            (FbxNode& pNode);
    00112     bool WriteNodeAnimatedProperties(FbxNode& pNode);
    00113     bool WriteNodeAttribute         (FbxNode& pNode);
    00114     bool WriteNodeDefaultAttributes (FbxNode& pNode);
    00115     bool WriteNodeChildrenList      (FbxNode& pNode);
    00116     bool WriteNodeEnd               (FbxNode& pNode);
    00117
    00118     bool WriteNull                  ( FbxNull* pNull );
    00119
    00120     bool WriteMarker                ( FbxNode& pNode );
    00121
    00122     bool WriteCamera                ( FbxCamera& pCamera, bool pIsProducerCamera = false );
    00123
    00124     bool WriteCameraSwitcher        ( FbxCameraSwitcher& pCameraSwitcher );
    00125
    00126     bool WriteLight                 ( FbxLight& pLight );
    00127
    00128     bool WriteGeometry              ( FbxGeometry& pGeometry );
    00129     bool WriteGeometryLayer         ( FbxGeometry& pGeometry );
    00130     bool WriteGeometryTextureLayer  ( FbxGeometry& pGeometry, int pIndex );
    00131
    00132     bool WriteMesh                  ( FbxMesh& pMesh );
    00133     bool WriteMeshVertices          ( FbxMesh& pMesh );
    00134     bool WriteMeshNormals           ( FbxMesh& pMesh );
    00135     bool WriteMeshMaterial          ( FbxMesh& pMesh );
    00136     bool WriteMeshTexture           ( FbxMesh& pMesh );
    00137     bool WriteMeshGeometryUVInfo    ( FbxMesh& pMesh );
    00138     bool WriteMeshPolyVertexIndex   ( FbxMesh& pMesh );
    00139     bool WriteMeshPolyGroupIndex    ( FbxMesh& pMesh );
    00140     bool WriteMeshVertexColors      ( FbxMesh& pMesh );
    00141
    00142     bool WriteNurb                  ( FbxNurbs& pNurbs );
    00143
    00144     bool WritePatch                 ( FbxPatch& pPatch );
    00145     bool WritePatchType             ( FbxPatch& pPatch, int pType );
    00146
    00147     bool WriteSkeleton              ( FbxSkeleton& pSkeleton );
    00148     bool WriteSkeletonRoot          ( FbxSkeleton& pSkeleton );
    00149     bool WriteSkeletonLimb          ( FbxSkeleton& pSkeleton );
    00150     bool WriteSkeletonLimbNode      ( FbxSkeleton& pSkeleton );
    00151     bool WriteSkeletonEffector      ( FbxSkeleton& pSkeleton );
    00152
    00153     bool WriteOpticalReference      ( FbxOpticalReference& pOpticalReference );
    00154
    00155     bool WriteTexture(FbxFileTexture& pTexture);
    00156     bool WriteSurfaceMaterial(FbxSurfaceMaterial& pMaterial);
    00157     bool WriteLink(FbxCluster& pCluster);
    00158     bool WriteShape(FbxShape& pShape, FbxString pShapeName, FbxGeometry& pGeometry);
    00159
    00160     bool WriteProperties(FbxObject* pObject);
    00161
    00162     int FindString(FbxString pString, FbxArray<FbxString*>& pStringArray);
    00163     void FindShapeValidIndices(FbxArray<FbxVector4>& pGeometryControlPoints, FbxArray<FbxVector4>& pShapeControlPoints, FbxArray<int>& lValidIndices);
    00164
    00165     void ConvertShapeNamesToV5Format(FbxNode& pNode);
    00166     void RevertShapeNamesToV6Format (FbxNode& pNode);
    00167
    00168     void WritePassword();
    00169
    00170     void FindAnimatedChannels(FbxScene& pScene);
    00171     void ClearAnimatedChannels();
    00172
    00173     void WriteSceneGenericPersistenceSection(FbxScene& pScene);
    00174
    00175     void ForceKFCurveNodesOnTRS(FbxNode* pNode);
    00176     void SetPivotStateRecursive(FbxNode* pNode);
    00177
    00178 private:
    00179     FbxWriterFbx5& operator=(const FbxWriterFbx5&) { return *this; }
    00180
    00181     FbxIO* mFileObject;
    00182     FbxExporter& mExporter;
    00183
    00184     EExportMode mExportMode;
    00185
    00186     FbxSet mTextureAnimatedChannels;
    00187     FbxSet mMaterialAnimatedChannels;
    00188
    00189     struct TextureAnimatedChannels
    00190     {
    00191         bool mTranslation;
    00192         bool mRotation;
    00193         bool mScaling;
    00194         bool mAlpha;
    00195     };
    00196
    00197     struct SurfaceMaterialAnimatedChannels
    00198     {
    00199         bool mAmbient;
    00200         bool mDiffuse;
    00201         bool mSpecular;
    00202         bool mEmissive;
    00203         bool mOpacity;
    00204         bool mShininess;
    00205         bool mReflectivity;
    00206     };
    00207 };
    00208
    00209 #include <fbxsdk/fbxsdk_nsend.h>
    00210
    00211 #endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX5_H_ */