123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 |
- /****************************************************************************************
-
- Copyright (C) 2015 Autodesk, Inc.
- All rights reserved.
-
- Use of this software is subject to the terms of the Autodesk license agreement
- provided at the time of installation or download, or which otherwise accompanies
- this software in either electronic or hard copy form.
-
- ****************************************************************************************/
- //! \file fbxwriterfbx6.h
- #ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_
- #define _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_
- #include <fbxsdk.h>
- #include <fbxsdk/fbxsdk_nsbegin.h>
- class Fbx6TypeDefinition;
- class Fbx6TypeWriteReferences;
- class Fbx6TypeObjectHierarchy;
- typedef FbxArray<FbxTakeInfo*> TakeInfoArray;
- class FbxWriterFbx6 : public FbxWriter
- {
- public:
- FbxWriterFbx6(FbxManager& pManager, FbxExporter& pExporter, int pID, FbxStatus& pStatus);
- virtual ~FbxWriterFbx6();
- virtual bool FileCreate(char* pFileName);
- virtual bool FileCreate(FbxStream* pStream, void* pStreamData);
- virtual bool FileClose();
- virtual bool IsFileOpen();
- typedef enum {eASCII, eBINARY, eENCRYPTED} EExportMode;
- void SetExportMode(EExportMode pMode);
- virtual void GetWriteOptions();
- virtual bool Write(FbxDocument* pDocument);
- virtual bool PreprocessScene(FbxScene& pScene);
- virtual bool PostprocessScene(FbxScene& pScene);
- virtual void PluginWriteParameters(FbxObject& pParams);
- virtual bool Write(FbxDocument* pDocument, FbxIO* pFbx);
- virtual void SetProgressHandler(FbxProgress *pProgress);
- virtual bool SupportsStreams() const { return true; }
- private:
- /*************************** new writer ***************************/
- void ConvertShapePropertyToOldStyle(FbxScene& pScene);
- void ConvertShapePropertyToNewStyle(FbxScene& pScene);
- void BuildObjectDefinition(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions);
- void SetObjectWriteSupport(const Fbx6TypeDefinition& pDefinitions);
- bool WriteDescriptionSection(FbxDocument* pDocument);
- bool WriteReferenceSection(FbxDocument* pDocument, Fbx6TypeWriteReferences& pReferences);
- void WriteObjectDefinition(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions);
- void WriteObjectProperties(FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions);
- void FlattenDocument(FbxDocument* pDocument, Fbx6TypeObjectHierarchy& pDocHierarchy, bool pFirstCall=true);
- void UnFlattenDocument(FbxDocument* pDocument, Fbx6TypeObjectHierarchy& pDocHierarchy);
- bool WriteObjectHeaderAndReferenceIfAny(FbxObject& pObj, const char* pObjectType) const;
- FbxObject* GetObjectIndirection(FbxObject* pObject);
- void WriteObjectConnections(FbxDocument* pDocument);
- void WriteTakesAndAnimation(FbxDocument* pDocument);
- void WriteConstraints(FbxScene& pScene);
- void WriteConstraint(FbxConstraint& pConstraint, FbxScene& pScene);
- void WriteGeometryWeightedMap(FbxGeometryWeightedMap& pGeometryWeightedMap);
- void WriteNodeAttributes(const FbxDocument& pDocument);
- void WriteAllGeometries(FbxScene& pScene);
- void WriteAllGeometryWeightedMaps(FbxScene& pScene);
- int WriteCharacterPose(FbxScene& pScene);
- void WriteCharacterPose(FbxCharacterPose& pCharacterPose);
- void WriteCharacterLinkGroup(FbxCharacter& pCharacter, int pCharacterGroupId, FbxScene& pScene);
- void WriteCharacterLink(FbxCharacter& pCharacter, int pCharacterNodeId, FbxScene& pScene);
- void WriteCharacterLinkRotationSpace(FbxCharacterLink& pCharacterLink);
- void WriteControlSetPlug(FbxScene& pScene);
- /*************************** new writer ***************************/
- bool WriteNodes(FbxScene& pScene, bool pIncludeRoot);
- bool WriteNodes(const FbxDocument& pDocument);
- /*************************** kept functions ***************************/
- bool WriteObjectProperties(FbxObject* pObject);
- bool WriteObjectPropertiesAndFlags(FbxObject* pObject);
- bool WriteContainers(FbxScene& pScene);
- bool WriteNode(FbxNode& pNode);
- bool WriteNodeBegin(FbxNode& pNode);
- bool WriteNodeEnd(FbxNode& pNode);
- bool WriteNodeParameters(FbxNode& pNode);
- bool WriteNodeVersion(FbxNode& pNode);
- bool WriteNodeAnimationSettings(FbxNode& pNode);
- bool WriteNodeShading(FbxNode& pNode);
- bool WriteNodeCullingType(FbxNode& pNode);
- bool WriteNodeAttribute(FbxNodeAttribute* pNodeAttribute);
- bool WriteNodeProperties(FbxNode& pNode);
- bool WriteNodeType(FbxNode& pNode);
- bool WriteNull(FbxNull* pNull);
- bool WriteMarker(FbxNode& pNode);
- bool WriteSkeleton(FbxSkeleton& pSkeleton);
- bool WriteSkeletonRoot(FbxSkeleton& pSkeleton);
- bool WriteSkeletonLimb(FbxSkeleton& pSkeleton);
- bool WriteSkeletonLimbNode(FbxSkeleton& pSkeleton);
- bool WriteSkeletonEffector(FbxSkeleton& pSkeleton);
- bool WriteGenericNodes(FbxScene& pScene);
- bool WriteGeometry(FbxGeometry& pGeometry);
- bool WriteMesh(FbxMesh& pMesh);
- bool WriteMeshSmoothness(FbxMesh& pMesh);
- bool WriteMeshVertices(FbxMesh& pMesh);
- bool WriteMeshPolyVertexIndex(FbxMesh& pMesh);
- bool WriteMeshEdges(FbxMesh& pMesh);
- bool WriteNurb(FbxNurbs& pNurbs);
- bool WriteNurbsSurface(FbxNurbsSurface& pNurbs);
- bool WriteNurbsCurve(FbxNurbsCurve& pNurbsCurve);
- bool WriteTrimNurbsSurface(FbxTrimNurbsSurface& pNurbs);
- bool WriteBoundary(FbxBoundary& pBoundary);
- bool WriteSubdiv(FbxSubDiv& pSubdiv);
- bool WritePatch(FbxPatch& pPatch);
- bool WritePatchType(FbxPatch& pPatch, int pType);
- bool WriteDeformers(FbxScene& pScene);
- bool WriteSkin(FbxSkin& pSkin);
- bool WriteVertexCacheDeformer(FbxVertexCacheDeformer& pDeformer);
- bool WriteCluster(FbxCluster& pCluster);
- bool WriteShape(FbxShape& pShape, FbxString pShapeName, FbxGeometry& pGeometry);
- void FindShapeValidIndices(FbxArray<FbxVector4>& pGeometryControlPoints, FbxArray<FbxVector4>& pShapeControlPoints, FbxArray<int>& lValidIndices);
- bool WriteFbxLayerElementNormals(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementBinormals(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementTangents(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementMaterials(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementTextures(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementTexturesChannel(FbxLayerContainer& pLayerContainer, FbxLayerElement::EType pTextureType, FbxMultiMap& pLayerIndexSet);
- bool WriteFbxLayerElementUVsChannel(FbxLayerContainer& pLayerContainer, FbxLayerElement::EType pTextureType, FbxMultiMap& pLayerIndexSet);
- bool WriteFbxLayerElementPolygonGroups(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementVertexColors(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementUVs(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementSmoothing(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementUserData(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementVisibility(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementVertexCrease(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementEdgeCrease(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteFbxLayerElementHole(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- bool WriteLayers(FbxLayerContainer& pLayerContainer, FbxMultiMap&);
- int MapLayeredTextureIndexToConnectionIndex(FbxNode* pNode, void* pLET, int pIndex);
- bool WriteMaterials(FbxDocument* pDocument);
- bool WriteSurfaceMaterial(FbxSurfaceMaterial& pMaterial);
- bool WritePose(FbxScene& pScene);
- // Write Connections
- bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrcObject, FbxDocument* pDstDocument);
- bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrc,FbxObject* pDst);
- bool WriteFieldConnection(FbxDocument* pDocument, FbxObject* pSrc,FbxProperty& pDst);
- bool WriteFieldConnection(FbxDocument* pDocument, FbxProperty& pSrc,FbxObject* pDst);
- bool WriteFieldConnection(FbxDocument* pDocument, FbxProperty& pSrc,FbxProperty& pDst);
-
- void WriteObjectConnections(FbxDocument* pDocument, FbxObject* pObject, bool pRecursive);
- bool WriteCamera(FbxCamera& pCamera);
- bool WriteCameraStereo(FbxCameraStereo& pCameraStereo);
- bool WriteLight(FbxLight& pLight);
- bool WriteCameraSwitcher(FbxScene& pScene);
- bool WriteCameraSwitcher(FbxCameraSwitcher& pCameraSwitcher);
- bool WriteTextures(FbxDocument* pDocument);
- bool WriteTexture(FbxFileTexture& pTexture);
- bool WriteTimeWarps(FbxDocument* pDocument, FbxAnimStack* pAnimStack);
- bool WriteThumbnails(FbxDocument* pDocument);
- bool WriteThumbnail(FbxThumbnail& pThumbnail);
- bool WriteCaches(FbxDocument* pDocument);
- bool WriteCache(FbxCache& pCache);
- bool WriteBindingTables(FbxDocument* pDocument);
- bool WriteBindingTable(FbxBindingTable& pTable);
- bool WriteBindingOperators(FbxDocument* pDocument);
- bool WriteBindingOperator(FbxBindingOperator& pOperator);
- bool WriteImplementations(FbxDocument* pDocument);
- bool WriteImplementation(FbxImplementation& pImplementation);
- bool WriteCollections(FbxDocument* pDocument);
- bool WriteCollection(FbxCollection& pImplementation);
- bool WriteDocuments(FbxDocument* pDocument);
- bool WriteDocument(FbxDocument& pSubDocument);
- bool WriteLayeredTextures(FbxDocument* pDocument);
- bool WriteLayeredTexture(FbxLayeredTexture& pTexture);
- void WriteGobo(FbxScene& pScene);
- void WriteGoboSection(FbxScene& pScene);
- void WriteGobo(FbxGobo& pGobo);
- bool WriteVideos(FbxDocument* pDocument);
- bool WriteVideo(FbxVideo& pVideo, FbxString& pFileName, bool pEmbeddedMedia);
- bool WriteAnimation(FbxDocument* pDocument);
- bool WriteAnimation(FbxDocument* pDocument, FbxAnimLayer* pAnimLayer);
- bool WriteFCurves(FbxObject& pObject, FbxAnimLayer* pAnimLayer, const char* pBlockName, bool pKeepBlockOpen=false, bool pRescaleShininess=false);
- void WritePose(FbxPose& pPose);
- bool WriteSelectionNode(FbxScene& pScene);
- void WriteSelectionNode(FbxSelectionNode& pSelectionNode);
- bool WriteSelectionSet(FbxScene& pScene);
- void WriteSelectionSet(FbxSelectionSet& pSelectionSet);
-
- bool WriteThumbnail(FbxThumbnail* pThumbnail);
- void WriteSceneInfo(FbxDocumentInfo*);
- void WriteGlobalSettings(FbxGlobalSettings& pGlobalSettings);
- bool WriteExtensionSection(FbxScene& pScene, int pMediaCount);
- int FindString(FbxString pString, FbxArray<FbxString*>& pStringArray);
- /****************** Function that write in the v5 section******************/
- void WriteGlobalLightSettings(FbxScene& pScene);
- void WriteShadowPlane(FbxScene& pScene);
- void WriteShadowPlaneSection(FbxScene& pScene);
- void WriteAmbientColor(FbxScene& pScene);
- void WriteFogOption(FbxScene& pScene);
- void WriteGlobalCameraSettings(FbxScene& pScene);
- void WriteGlobalTimeSettings(FbxScene& pScene);
- /****************** Function that write in the v5 section******************/
-
- void WritePassword();
- void WriteLayeredAnimation(FbxScene& pScene);
- private:
- void WritePropertyTemplate(FbxClassId pClassId, FbxDocument* pDocument, bool& pVisitedNodeClass);
- void WriteProperty(FbxProperty& pProperty, bool lSetNodeAttributeFlag);
- void ConnectTimeWarp(FbxAnimCurveNode* pCurveNode, KFCurveNode* pFCurveNode);
- FbxWriterFbx6& operator=(const FbxWriterFbx6&);
- FbxScene* mScene;
- FbxIO* mFileObject;
- FbxExporter& mExporter;
- Fbx6TypeObjectHierarchy* mDocumentHierarchy;
- Fbx6TypeWriteReferences* mDocumentReferences;
- bool mWriteNonDefaultPropertiesOnly;
- bool mWriteEnhancedProperties;
- EExportMode mExportMode;
- FbxMultiMap mTextureAnimatedChannels;
- FbxMultiMap mMaterialAnimatedChannels;
- FbxMultiMap mTimeWarpsCurveNodes;
- struct TextureAnimatedChannels
- {
- bool mTranslation;
- bool mRotation;
- bool mScaling;
- bool mAlpha;
- };
- struct SurfaceMaterialAnimatedChannels
- {
- bool mAmbient;
- bool mDiffuse;
- bool mSpecular;
- bool mEmissive;
- bool mOpacity;
- bool mShininess;
- bool mReflectivity;
- };
- FbxNode* mCurrentNode;
- struct ModifiedPropertyInfo { FbxObject* mObj; FbxString mPropName; };
- FbxArray<ModifiedPropertyInfo*> mModifiedProperties;
- void ReplaceUnsupportedProperties(FbxScene* pScene, bool pPreprocessPass, int pFormatV);
- void StoreUnsupportedProperty(FbxObject* pObject, FbxProperty& pProperty);
- bool IsLeafRoll(const FbxString& pNameWithoutNameSpacePrefix);
- FbxProgress* mProgress;
- bool mProgressPause;
- };
- bool IsNameUnique(FbxScene& pScene, FbxObject* pObject);
- #include <fbxsdk/fbxsdk_nsend.h>
- #endif /* _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_ */
|