FBX and collada are both text based formats which are really bloated with data you don't always need.
FBX is almost always binary unless you manually select to make it text-based.
As an advantage over COLLADA, this means that textures can be embedded into .FBX files whereas they cannot in .DAE (COLLADA) files.
I'd recommend using Assimp
I would recommend not, and…
I'm one of the founders
…perhaps you can tell me if my reasoning is valid (in other words, does Assimp support this most-valuable feature?).
I do acknowledge that Assimp does a lot of heavy lifting, such as splitting up vertex buffers to handle limited systems such as iOS and to simplify meshes, but I would consider these far less important than the main feature which makes me a proponent of .FBX: World animation simulation.
There are many types of animation curves (linear, splines, step, etc.) and each type has a few parameters (for example a stepping key-frame denotes that between this key-frame and the next, a single non-interpolated value should be used, however whether that value should come from this key-frame or the next depends on a parameter) and trying to simulate this is non-trivial.
Why do you need to simulate this? Because your only run-time animation interpolation should be linear. You should never be doing switch cases to check the key-frame type and branch etc. Your run-time should be nothing but: Take current key-frame. Take next key-frame. Interpolate linearly.
If you try to do this with raw animation data you are very likely to encounter very bad run-time animations.
The solution is for the tool to simulation the animation and inject key-frames where necessary in order to make a linear-interpolation run-time as accurate as desired.
The Autodesk® FBX® SDK allows you to evaluate animation tracks at any time in the simulation and makes it trivial to reduce complex animation tracks into accurate linear–interpolation-only tracks.
My older engine never split vertex buffers or simplified/split meshes.
It also didn’t convert animation tracks to linear-only.
Ultimately, that engine never encountered a problem with too-large vertex buffers or over-complex meshes because the meshes were designed for the target platforms (simple meshes for iOS, huge meshes for PC).
It did however have problems running complex animations.
This is why I consider it a much more important feature. The Autodesk® FBX® SDK also does coordinate conversions, triangulating of complex shapes (specifically NURBs), etc. It doesn’t do all that Assimp does but there is overlap on the important features.
I am not talking down on Assimp—I am saying that the Autodesk® FBX® SDK offers something I consider more important.
I am writing a book and it includes a chapter on how to make your own 3D formats using interchange formats such as COLLADA, Autodesk® FBX® SDK, and Assimp.
The chapter is written (I started with it because I need a 3D file format in order to write the rest of the book) and I tried to give a fair pro/con comparison of each.
One of the biggest pros for Autodesk® FBX® SDK (which also does have its cons—for one, every new SDK release breaks your old code, but Autodesk® personnel have told me this will stop after the next or next next release) was that it was the only one with this ability (to trivially simplify complex animation tracks into linear–interpolation-only), however if I am wrong and Assimp does this also, please let me know and I will correct my chapter.
I checked prior to writing the chapter and I could not find any such feature listed on Assimp’s page.
Edited by L. Spiro, 08 January 2013 - 05:54 PM.