Home | Documentation | Atomic Chat | Github

Better FBX support


#1

We’re having a lot of negative feedback regarding FBX support lately. Since FBX is the closest we have to a standard and pretty much all the engines either use it preferably (like Unity) or support it properly out of the box (CE), this is a must-have in my opinion.
@JoshEngebretson was talking about the official FBX SDK the other day, but Mikulas Florek released the awesome OpenFBX which we could consider too since it’s working fine with very minor limitations and is decently licensed.


#2

It would be cool to at least add this to AtomicTool as a switch option to use that instead of assimp


#3

Thanks Alan! I’m glad to see you’re fixing this issue, and if there is any way I could help I would love to, but I have minimal back end (if that’s what you call this) coding experience.


#4

Assimp, which is used internally for FBX import, has significant issues with some versions of the FBX format.

Autodesk provides a tool which addresses incompatibility between FBX format versions and converts between them: http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=22694909

Format versions 7.2 - 7.4 (FBX 2012/2015 respectively) are more compatible. The Roboman FBX is version 7.4 for example. Assimp has known issues with 7.5 (ie. not supporting it)

There are also a number of import settings which aren’t exposed to the editor UI: https://github.com/AtomicGameEngine/AtomicGameEngine/blob/master/Source/ToolCore/Import/OpenAssetImporter.cpp#L84

There is a JSON configuration that was added for project FBX settings: https://github.com/AtomicGameEngine/AtomicGameEngine/blob/master/Source/ToolCore/Import/ImportConfig.cpp

This is a bandaid. OpenFBX is a great initiative, otherwise the official Autodesk FBX SDK would be an option. The issue with the later is that it really can’t be hosted in a public GitHub repo.

Edit: This recent Assimp PR may be of use for 7.5 support: https://github.com/assimp/assimp/pull/1354


#5

According to Mikulas, Assimp will never be able to fully support FBX unless they change their internal data structure, what’s a considerable change and probably we shouldn’t count on it. I really think that OpenFBX is the best path to take at the moment. Hopefully in the future something like gltf will take its place as the de facto ‘standard’, but so far FBX is by far the most important format we should support in my opinion.

To quote Mikulas:

[if your engine] can’t even import FBX properly, you can’t expect people to really use it

That sounds harsh but I agree.
Also, note that not only Mikulas himself is using OpenFBX in production, but Lumix already has quite a few users happy with his implementation.