Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
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
00021
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