As you are probably already aware, the FBX SDK 2013.1 is now available for download! Here is the release notes found in the readme.txt file :
* Renamed all classes with prefix “Fbx”. Also renamed all structures with the same prefix.
* Global functions and enumerations now start with the “Fbx” prefix.
* By default, the file fbxsdk_compatibility.h will be included when including fbxsdk.h. This file defines a lot of the old class names to help with the transition. However, if you want to use the new API, you can define FBXSDK_NEW_API in your project and the compatibility file will not be included, but will most likely result in a lot of errors to fix in your application.
It is highly recommended that you start by fixing compilation errors before defining FBXSDK_NEW_API in your project, but it is also highly recommended to fully fix your code since the compatibility file might be removed in a future release.
* Moved and renamed all enumerations into classes when possible.
* Moved files into appropriate folders, and grouped them.
* Removed KFbxMemoryAllocator class, instead use handlers setters functions found in fbxalloc.h, such as FbxSetMallocHandler.
* Removed all KFCurveFilter classes, please use FbxAnimCurveFilter classes instead.
* FbxFile is now exposed! See fbxfile.h for the list of available functions.
* A new class, FbxFileUtils, now expose all static functions related to file handling, such as remove or rename, etc.
* A new class, FbxPathUtils, now expose all static functions related to file path handling, such as IsRelative or Clean, etc.
* Completely re-designed how Character Poses are stored in FBX.
* The FbxLight class has been augmented to support area lights and barn doors.
* The FbxGeometryBase class has been augmented to support render options such as PrimaryVisibility, CastShadow and ReceiveShadow.
* Many FBX SDK functions that were asking for file paths as inputs were updated to support UTF-8. Their parameter names were updated to reflect this change.
* It is now possible to retrieve the “long” version string of the FBX SDK via the function FbxManager::GetVersion(true). This will allow developers to get the version string of this library along with the name and the revision number.
* Fixed various issues with sample codes.
* Now sample codes compile with warning level 4.
* Fixed an issue with animation evaluation that wasn’t updated correctly when told to.
* Fixed an issue with constraints being lost after export.
* Fixed an issue with animation evaluation sometimes returning twice the value amount.
* Fixed an issue with RemovePolygon function on mesh class when mapping is by polygon.
* Initial property values of LclTranslation, LclRotation and LclScaling affect the evaluator’s result when there are actually animation curves connected to these properties. This has been corrected.
* Fixed an issue with writing cache data on Mac when a space was present in the file path.
* Fixed a crash with xstring use in VS2010, caused by an assert.
* Improved precision in time and timecode classes.
* Changed how absolute and relative paths are handled during import. Now if one of the two path is opening successfully, the other is changed to work.
* Fixed an issue with the unroll animation filter.
* Now, when resampling animation, we move the default at the end rather than at the start of the resampling.
I would like to ask if there’s support for loading fbx through abstract input streams, so I can easily handle memory images or issues mentioned above, with nonANSI file paths. I was searching through the forum and it seems like lot of people already asked for this long time ago and I really can’t understand why it’s still not in FBX SDK :(o I really hope I’ve missed something and the possibility is there already.
We do support abstract streams in FBX 2013! Look for the class FbxStream, you can implement yours, and feed it to Import. :)
Can we write rotations as quaternions yet? Or are we still stuck having to write euler values?
Also , is there any way of not writing all the tags in the binary file? After implmenting the instance feature the file sizes are still large. I reckon this is mainly because of all the ascii tags written which identify the variables that are stored. Its also not really any faster to load a file with instances versus whole geometry unless the model instanced is very big.
Also, when using your instance sample and having it write out 1000 cubes, the ascii file produced is smaller than the resultant binary file. Please explain. Surely the bianry file should be smaller.
We’ve investigated the cause of the file size, and apparently it is because of two main reasons:
1. The sample had an issue, where it was creating a new material for each instance of the mesh. This has been corrected for the next release.
2. In ASCII, a zero double value is written “0”, as opposed to binary which write the whole 8 bytes, even if it is zero.
The FBX SDK supports quaternions since a while now. However, rotations in the files are stored as Euler values, and the FBX SDK provides API to get and set such values between Euler and Quaternion. We also support Dual Quaternion skinning evaluation if you need it. The fact that we write Euler values in the file should not stop you from using quaternions with the API.