FBX C++ API Reference
fbxio.h File Reference

Go to the source code of this file.

Classes

class  FbxIODefaultRenderResolution
 Render and resolution information. More...
 
class  FbxIOFileHeaderInfo
 FBX header information used at beginning of the FBX file to get or set important values like the file format version number (mFileVersion). More...
 
class  FbxIO
 FbxIO represents an FBX file. More...
 
struct  FbxIO::FbxAutoResetXRefManager
 

Macros

#define FBX_FILE_VERSION_2000   2000
 Defines the current FBX file version number in four digits. More...
 
#define FBX_FILE_VERSION_2001   2001
 
#define FBX_FILE_VERSION_3000   3000
 
#define FBX_FILE_VERSION_3001   3001
 
#define FBX_FILE_VERSION_4000   4000
 
#define FBX_FILE_VERSION_4001   4001
 
#define FBX_FILE_VERSION_4050   4050
 
#define FBX_FILE_VERSION_5000   5000
 
#define FBX_FILE_VERSION_5800   5800
 
#define FBX_FILE_VERSION_6000   6000
 
#define FBX_FILE_VERSION_6100   6100
 
#define FBX_FILE_VERSION_7000   7000
 
#define FBX_FILE_VERSION_7099   7099
 
#define FBX_FILE_VERSION_7100   7100
 
#define FBX_FILE_VERSION_7200   7200
 
#define FBX_FILE_VERSION_7300   7300
 
#define FBX_FILE_VERSION_7400   7400
 
#define FBX_FILE_VERSION_7500   7500
 
#define FBX_FILE_VERSION_7700   7700
 
#define FBX_FILE_VERSION_7600   7600
 
#define FBX_53_MB55_COMPATIBLE   "FBX53_MB55"
 
#define FBX_60_COMPATIBLE   "FBX60_MB60"
 
#define FBX_2005_08_COMPATIBLE   "FBX200508_MB70"
 
#define FBX_2006_02_COMPATIBLE   "FBX200602_MB75"
 
#define FBX_2006_08_COMPATIBLE   "FBX200608"
 
#define FBX_2006_11_COMPATIBLE   "FBX200611"
 
#define FBX_2009_00_COMPATIBLE   "FBX200900"
 
#define FBX_2009_00_V7_COMPATIBLE   "FBX200900v7"
 
#define FBX_2010_00_COMPATIBLE   "FBX201000"
 
#define FBX_2011_00_COMPATIBLE   "FBX201100"
 
#define FBX_2012_00_COMPATIBLE   "FBX201200"
 
#define FBX_2013_00_COMPATIBLE   "FBX201300"
 
#define FBX_2014_00_COMPATIBLE   "FBX201400"
 
#define FBX_2016_00_COMPATIBLE   "FBX201600"
 
#define FBX_2018_00_COMPATIBLE   "FBX201800"
 
#define FBX_2019_00_COMPATIBLE   "FBX201900"
 
#define FBX_2020_00_COMPATIBLE   "FBX202000"
 
#define FBX_DEFAULT_FILE_VERSION   FBX_FILE_VERSION_7700
 
#define FBX_DEFAULT_FILE_COMPATIBILITY   FBX_2020_00_COMPATIBLE
 

Enumerations

enum  { FBX_NO_SECTION = -1, FBX_MAIN_SECTION, FBX_EXTENSION_SECTION_0 }
 

Functions

int FbxFileVersionStrToInt (const char *pFileVersion)
 Convert the FBX file version string to an integral number for <= or >= tests purposes. More...
 

Macro Definition Documentation

#define FBX_FILE_VERSION_2000   2000

Defines the current FBX file version number in four digits.

The first digit is the major version number a the last three digits are the minor version number (e.g. 7100 = 7.1). The following is the version history of FBX:

  • Version 2000 - New KFCurve and embedded FBX, no FCurve/FCurve node storing. No more .takf file like in earlier version, no history.
  • Version 2001 - Version incremented to support FbxTime save in native (integer, not double) format.
  • Version 3000 - FiLMBOX 3.0 version, nothing changed in current class since version 2001. FBX SDK 3.0 and 3.6
  • Version 3001 - FiLMBOX 3.0 encrypted version, only a trial. Encrypted files could only be written in debug versions. Cannot switch to a higher version number now because any file with a version number >= 3001 is read as encrypted. Hence, this value now only gives file type. (3000 or less -> binary, 3001 or more -> encrypted) FiLMBOX 3.2, FiLMBOX 3.5 and "Online" 3.51 have been released with version 3000.
  • Version 4000 - MotionBuilder 4.0, new type in KFCurve tangents, supported in FiLMBOX 3.5 but not by earlier versions. Version number is now stored in section footer. Before September 3rd 2002, the version number was always 3000 in main section footer. Now the main section footer has version number 4000. The minimum version number in footer of an extension section is 4000.
  • Version 4001 - ASCII Header is 4.1. MotionBuilder 4.01, to fix FCurveNode problem with layer types in version 4000 the main section footer has version number 4001. Now the footer for extension sections has version number 4001.
  • Version 4050 - ASCII Header is 4.5. MotionBuilder 4.1 or 4.5 before January 22nd 2003. This is because EvaluationProperties now have color. Now the main section footer has version number 4050. Now the footer for extension sections has version number 4050.
  • Version 5000 - ASCII Header is not compatible anymore with MotionBuilder 4.0, 4.01 and 4.02 and FBX SDK 3.6 and 3.7 MotionBuilder 4.03 and 4.1 or 4.5 from January 22nd 2003 FBX SDK 3.6.1. New extended header to improve FBX file version management. Now the extended header and the main section footer have version number 5000. Now the footer for extension sections has version number 5000.
  • Version 5800 - This was a temporary version while waiting for version 6000 renders the previous versions incompatible with MotionBuilder 6.0. For now, however, this format is needed to allow some tools/plugins (For example Maya) to correctly detect that the file has some features that are not completely backward compatible (For example: pivots defined with _pre/_post nodes which require a special processing). By incrementing only the minor version we do not compromise the integrity of the files.
  • Version 6000 - Header version is now 6.0. Extended header now contain a creation time stamp that can be retrieve without parsing the main section of the file. A creator tag (string) is now stored in the Extended header. This contain the originator (MB/FBXSDK) of the file and the build number of the originator. First release of the file format using the KProperties to store/retrieve information.
  • Version 6100 - Added support for multiple attributes (mainly multiple geometry) at the node level. The pointer to the node attribute have been replaced by a connection between the node and its attribute(s).
  • Version 7000 - First version of the 7.0 series; most likely very short-lived, developed for Protein, before ADP. Supports reference cloning, external documents, blobs, unique IDs (per file), property templates. So many changes that it was decided to break from 6.0 to keep Motion Builder intact.
  • Version 7099 - Temporary version for FBX 2011 alpha releases.
  • Version 7100 Official file version for FBX 2011, add support for animation to FBX 7. First version of FBX SDK with FBX 7 files as the default file format.
  • Version 7200 Added support for multiple blend shape deformers and In-Between blend-shapes on each geometry. Moved shape(FbxShape) to its own section other than as a part of geometry section. Add support to store blend shape deformer(FbxBlendShape), blend shape channel(FbxBlendShapeChannel), Substance(FbxProceduralTexture) and Lines(FbxLine). Add support to store 3 different smooth binding modes of FbxSkin, including classic linear, dual quaternion and blended mode of previous two modes. Added the CLAMP_PROGRESSIVE tangent mode. The KFCurve::KeyAttrDataFloat data array now stores as integer values (ASCII mode) to to eliminate float to int precision errors. FbxLayeredTexture now stores alphas for its sub textures.
  • Version 7300 Changed the way the CharacterPoses are written. Changed light property name HotSpot and ConeAngle to InnerAngle and OuterAngle
  • Version 7400 Normals, tangents and binormals save the 4th component into a separate array
  • Version 7500 Added support for large files (>2GB). NOTE: This breaks forward compatibility (i.e. older products won't be able to open these files!!)
  • Version 7700 Changed FBXSDK_TC_MILLISECOND from 46186158 to 141120 to support accurately frame rates like ~23.976, ~29.97, 72 and 96 fps. This new value is already used in Maya 2018 and will be in MotionBuilder 2019. Althought the changes only affect the timing, it is big enough to break the compatibility with version 7500. However, to minimize adoption issues, the change in this version is triggerable with a global setting. By default, we keep using the old value and "opt in" for the new one. Over time, the "opt in" will become the default and the file version will be bumped to 8000 (so previous versions of the FBX SDK can detect that the new file is incompatible). In the meantime, it is expected that 7700 files saved with the new precision, will still be read by previous FBX SDKs (2016,2017 and 2018) BUT with totally bad timings.

Definition at line 132 of file fbxio.h.

#define FBX_FILE_VERSION_2001   2001

Definition at line 133 of file fbxio.h.

#define FBX_FILE_VERSION_3000   3000

Definition at line 134 of file fbxio.h.

#define FBX_FILE_VERSION_3001   3001

Definition at line 135 of file fbxio.h.

#define FBX_FILE_VERSION_4000   4000

Definition at line 136 of file fbxio.h.

#define FBX_FILE_VERSION_4001   4001

Definition at line 137 of file fbxio.h.

#define FBX_FILE_VERSION_4050   4050

Definition at line 138 of file fbxio.h.

#define FBX_FILE_VERSION_5000   5000

Definition at line 139 of file fbxio.h.

#define FBX_FILE_VERSION_5800   5800

Definition at line 140 of file fbxio.h.

#define FBX_FILE_VERSION_6000   6000

Definition at line 141 of file fbxio.h.

#define FBX_FILE_VERSION_6100   6100

Definition at line 142 of file fbxio.h.

#define FBX_FILE_VERSION_7000   7000

Definition at line 143 of file fbxio.h.

#define FBX_FILE_VERSION_7099   7099

Definition at line 144 of file fbxio.h.

#define FBX_FILE_VERSION_7100   7100

Definition at line 145 of file fbxio.h.

#define FBX_FILE_VERSION_7200   7200

Definition at line 146 of file fbxio.h.

#define FBX_FILE_VERSION_7300   7300

Definition at line 147 of file fbxio.h.

#define FBX_FILE_VERSION_7400   7400

Definition at line 148 of file fbxio.h.

#define FBX_FILE_VERSION_7500   7500

Definition at line 149 of file fbxio.h.

#define FBX_FILE_VERSION_7700   7700

Definition at line 150 of file fbxio.h.

#define FBX_FILE_VERSION_7600   7600

Definition at line 152 of file fbxio.h.

#define FBX_53_MB55_COMPATIBLE   "FBX53_MB55"

Definition at line 159 of file fbxio.h.

#define FBX_60_COMPATIBLE   "FBX60_MB60"

Definition at line 160 of file fbxio.h.

#define FBX_2005_08_COMPATIBLE   "FBX200508_MB70"

Definition at line 161 of file fbxio.h.

#define FBX_2006_02_COMPATIBLE   "FBX200602_MB75"

Definition at line 162 of file fbxio.h.

#define FBX_2006_08_COMPATIBLE   "FBX200608"

Definition at line 163 of file fbxio.h.

#define FBX_2006_11_COMPATIBLE   "FBX200611"

Definition at line 164 of file fbxio.h.

#define FBX_2009_00_COMPATIBLE   "FBX200900"

Definition at line 165 of file fbxio.h.

#define FBX_2009_00_V7_COMPATIBLE   "FBX200900v7"

Definition at line 166 of file fbxio.h.

#define FBX_2010_00_COMPATIBLE   "FBX201000"

Definition at line 167 of file fbxio.h.

#define FBX_2011_00_COMPATIBLE   "FBX201100"

Definition at line 168 of file fbxio.h.

#define FBX_2012_00_COMPATIBLE   "FBX201200"

Definition at line 169 of file fbxio.h.

#define FBX_2013_00_COMPATIBLE   "FBX201300"

Definition at line 170 of file fbxio.h.

#define FBX_2014_00_COMPATIBLE   "FBX201400"

Definition at line 171 of file fbxio.h.

#define FBX_2016_00_COMPATIBLE   "FBX201600"

Definition at line 172 of file fbxio.h.

#define FBX_2018_00_COMPATIBLE   "FBX201800"

Definition at line 173 of file fbxio.h.

#define FBX_2019_00_COMPATIBLE   "FBX201900"

Definition at line 174 of file fbxio.h.

#define FBX_2020_00_COMPATIBLE   "FBX202000"

Definition at line 175 of file fbxio.h.

#define FBX_DEFAULT_FILE_VERSION   FBX_FILE_VERSION_7700

Definition at line 178 of file fbxio.h.

#define FBX_DEFAULT_FILE_COMPATIBILITY   FBX_2020_00_COMPATIBLE

Definition at line 179 of file fbxio.h.

Enumeration Type Documentation

anonymous enum

Used internally by readers to evaluate what is the current section

Enumerator
FBX_NO_SECTION 

indicate not in a valid section

FBX_MAIN_SECTION 

indicate currently in the main section

FBX_EXTENSION_SECTION_0 

indicate currently in the extention section 0

Definition at line 197 of file fbxio.h.

198 {
199  FBX_NO_SECTION = -1,
202 };
indicate not in a valid section
Definition: fbxio.h:199
indicate currently in the main section
Definition: fbxio.h:200
indicate currently in the extention section 0
Definition: fbxio.h:201

Function Documentation

int FbxFileVersionStrToInt ( const char *  pFileVersion)

Convert the FBX file version string to an integral number for <= or >= tests purposes.

Parameters
pFileVersionFile version string. Some examples:
1 int version;
2  version = FileVersionStrToInt(FBX2012_00_COMPATIBLE); // version = 201200
3  version = FileVersionStrToInt(FBX60_COMPATIBLE); // version = 6000
4  version = FileVersionStrToInt("FBX200900"); // version = 200900
5  version = FileVersionStrToInt("Toto"); // version = 0
6  version = FileVersionStrToInt(""); // version = -1
Returns
the file version number or 0 if an unsupported string value is passed.