13 #ifndef _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_
14 #define _FBXSDK_FILEIO_FBX_WRITER_FBX6_H_
20 class Fbx6TypeDefinition;
21 class Fbx6TypeWriteReferences;
22 class Fbx6TypeObjectHierarchy;
45 #ifndef FBXSDK_ENV_WINSTORE
47 #endif // FBXSDK_ENV_WINSTORE
56 void ConvertShapePropertyToOldStyle(
FbxScene& pScene);
57 void ConvertShapePropertyToNewStyle(
FbxScene& pScene);
58 void BuildObjectDefinition(
FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions);
59 void SetObjectWriteSupport(
const Fbx6TypeDefinition& pDefinitions);
60 bool WriteDescriptionSection(
FbxDocument* pDocument);
61 bool WriteReferenceSection(
FbxDocument* pDocument, Fbx6TypeWriteReferences& pReferences);
62 void WriteObjectDefinition(
FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions);
63 void WriteObjectProperties(
FbxDocument* pDocument, Fbx6TypeDefinition& pDefinitions);
65 void FlattenDocument(
FbxDocument* pDocument, Fbx6TypeObjectHierarchy& pDocHierarchy,
bool pFirstCall=
true);
66 void UnFlattenDocument(
FbxDocument* pDocument, Fbx6TypeObjectHierarchy& pDocHierarchy);
67 bool WriteObjectHeaderAndReferenceIfAny(
FbxObject& pObj,
const char* pObjectType)
const;
70 void WriteObjectConnections(
FbxDocument* pDocument);
71 void WriteTakesAndAnimation(
FbxDocument* pDocument);
73 void WriteConstraints(
FbxScene& pScene);
77 void WriteNodeAttributes(
const FbxDocument& pDocument);
78 void WriteAllGeometries(
FbxScene& pScene);
80 void WriteAllGeometryWeightedMaps(
FbxScene& pScene);
82 int WriteCharacterPose(
FbxScene& pScene);
89 void WriteControlSetPlug(
FbxScene& pScene);
92 bool WriteNodes(
FbxScene& pScene,
bool pIncludeRoot);
96 bool WriteObjectProperties(
FbxObject* pObject);
97 bool WriteObjectPropertiesAndFlags(
FbxObject* pObject);
99 bool WriteContainers(
FbxScene& pScene);
101 bool WriteNode(
FbxNode& pNode);
102 bool WriteNodeBegin(
FbxNode& pNode);
103 bool WriteNodeEnd(
FbxNode& pNode);
104 bool WriteNodeParameters(
FbxNode& pNode);
105 bool WriteNodeVersion(
FbxNode& pNode);
106 bool WriteNodeAnimationSettings(
FbxNode& pNode);
107 bool WriteNodeShading(
FbxNode& pNode);
108 bool WriteNodeCullingType(
FbxNode& pNode);
110 bool WriteNodeProperties(
FbxNode& pNode);
112 bool WriteNodeType(
FbxNode& pNode);
113 bool WriteNull(
FbxNull* pNull);
114 bool WriteMarker(
FbxNode& pNode);
118 bool WriteSkeletonLimbNode(
FbxSkeleton& pSkeleton);
119 bool WriteSkeletonEffector(
FbxSkeleton& pSkeleton);
120 bool WriteGenericNodes(
FbxScene& pScene);
123 bool WriteMesh(
FbxMesh& pMesh);
124 bool WriteMeshSmoothness(
FbxMesh& pMesh);
125 bool WriteMeshVertices(
FbxMesh& pMesh);
126 bool WriteMeshPolyVertexIndex(
FbxMesh& pMesh);
127 bool WriteMeshEdges(
FbxMesh& pMesh);
133 bool WriteSubdiv(FbxSubDiv& pSubdiv);
136 bool WritePatchType(
FbxPatch& pPatch,
int pType);
138 bool WriteDeformers(
FbxScene& pScene);
139 bool WriteSkin(
FbxSkin& pSkin);
164 int MapLayeredTextureIndexToConnectionIndex(
FbxNode* pNode,
void* pLET,
int pIndex);
183 bool WriteCameraSwitcher(
FbxScene& pScene);
199 bool WriteBindingOperators(
FbxDocument* pDocument);
215 void WriteGoboSection(
FbxScene& pScene);
216 void WriteGobo(
FbxGobo& pGobo);
224 bool WriteFCurves(
FbxObject& pObject,
FbxAnimLayer* pAnimLayer,
const char* pBlockName,
bool pKeepBlockOpen=
false,
bool pRescaleShininess=
false);
226 void WritePose(
FbxPose& pPose);
228 bool WriteSelectionNode(
FbxScene& pScene);
231 bool WriteSelectionSet(
FbxScene& pScene);
239 bool WriteExtensionSection(
FbxScene& pScene,
int pMediaCount);
244 void WriteGlobalLightSettings(
FbxScene& pScene);
245 void WriteShadowPlane(
FbxScene& pScene);
246 void WriteShadowPlaneSection(
FbxScene& pScene);
247 void WriteAmbientColor(
FbxScene& pScene);
248 void WriteFogOption(
FbxScene& pScene);
250 void WriteGlobalCameraSettings(
FbxScene& pScene);
251 void WriteGlobalTimeSettings(
FbxScene& pScene);
254 void WritePassword();
256 void WriteLayeredAnimation(
FbxScene& pScene);
260 void WriteProperty(
FbxProperty& pProperty,
bool lSetNodeAttributeFlag);
261 void ConnectTimeWarp(
FbxAnimCurveNode* pCurveNode, KFCurveNode* pFCurveNode);
268 Fbx6TypeObjectHierarchy* mDocumentHierarchy;
269 Fbx6TypeWriteReferences* mDocumentReferences;
271 bool mWriteNonDefaultPropertiesOnly;
272 bool mWriteEnhancedProperties;
279 struct TextureAnimatedChannels
287 struct SurfaceMaterialAnimatedChannels
302 void ReplaceUnsupportedProperties(
FbxScene* pScene,
bool pPreprocessPass,
int pFormatV);
304 bool IsLeafRoll(
const FbxString& pNameWithoutNameSpacePrefix);
The animation layer is a collection of animation curve nodes.
This class describes image mapping on top of geometry.
Callback to operate on the embedded data while it is processed.
bool IsNameUnique(FbxScene &pScene, FbxObject *pObject)
A gobo is a filter placed over a spot light to project light patterns through fog on a surface...
The Animation stack is a collection of animation layers.
bool IsFileOpen() override
Test if the file is open.
bool SupportsStreams() const override
Returns true if this writer supports FbxStream I/O.
This class is an composite of animation curves and is called as animation curve node.
Abstract class for implementing I/O operations through a stream of data.
This class contains material settings.
Utility class to manipulate strings.
FbxDocument is a base class for FbxScene and FbxLibrary classes.
Contains a collection of FbxLayer objects.
Class for clusters (links).
This node attribute contains methods for accessing the properties of a camera switcher.
This class facilitates the testing/reporting of errors.
FbxWriterFbx6(FbxManager &pManager, FbxExporter &pExporter, int pID, FbxStatus &pStatus)
This object represents the shading node implementation.
This class contains scene thumbnails and user-defined summary data.
This class contains functions for accessing global settings.
bool PostprocessScene(FbxScene &pScene) override
Post-processes the scene.
Base class for weighted animation constraints.
A character pose is a character and an associated hierarchy of nodes.
FBX SDK selection set class.
The base class of most FBX objects.
FbxTrimNurbsSurface describes a NURBS surface with regions trimmed or cut away with trimming boundari...
Represents an element in the scene graph.
Class to export SDK objects into an FBX file.
A patch is a type of node attribute with parametric surface.
This node attribute contains methods for accessing the properties of a light.
This class contains the description of a 3D scene.
This class contains the description of a Pose and provide some methods to access Pose info in one FBX...
bool Write(FbxDocument *pDocument) override
Writes content to the specified file with given stream options.
Base class of other writers used internally.
A NURBS surface is a type of parametric geometry.
This class represents a link between a given FBX node and the associated node in the character hierar...
A shape describes the deformation on a set of control points, which is similar to the cluster deforme...
Class for progress reporting.
bool PreprocessScene(FbxScene &pScene) override
Pre-processes the scene.
FbxBoundary describes a trimming boundary for a trimmed NURBS object.
Internal class used to differentiate objects during run-time.
EType
Layer Element type identifier.
FbxSelectionNode is an auxiliary class for Selection Set.
Class to hold user properties.
FbxLayeredTexture is a combination of multiple textures(FbxTexture) blended sequentially.
A FbxObject derived container for FbxObject.
FbxIO represents an FBX file.
A binding table represents a collection of bindings from source types such as FbxObject, or FbxLayerElements to corresponding destinations, usually a third party shader parameters.
void SetEmbeddedFileCallback(FbxEmbeddedFileCallback *pCallback) override
FbxArray< FbxTakeInfo * > TakeInfoArray
This node attribute contains methods for accessing the properties of a camera.
This object represents a binding operation on a FbxObject or FbxProperty.
A NURBS surface is a type of parametric geometry.
A Non-Uniform Rational B-Spline (NURBS) curve is a type of parametric geometry.
This node attribute contains the properties of a null node.
bool FileCreate(char *pFileName) override
Creates a new file.
void SetProgressHandler(FbxProgress *pProgress) override
Pass a progress handler to the writer.
This class specializes a node attribute to represent the elements forming "bone" chains.
A Character is a person or animal with pre-defined skeleton system.
void PluginWriteParameters(FbxObject &pParams) override
Writes extension plug-ins name, version and parameters, so that we can remember if a plug-in was used...
This class provides the structure to build a correspondence between 2 geometries. ...
The base class of geometric objects that support control point deformations (e.g. ...
This class is the base class to all types of node attributes.
Class to manipulate a map that can contain multiple times the same key.
void SetExportMode(EExportMode pMode)
bool FileClose() override
Closes the file.
Simple class to hold RGBA values of a thumbnail image.
This object contains methods for accessing point animation in a cache file.
void GetWriteOptions() override
Setup write options.
A mesh is a geometry made of polygons.
This node attribute contains methods for accessing the properties of a stereo camera.