Is there a de facto format for exporting a 3D model from modeling software to a game engine?

I know it varies by engine and situation, but what is the general idea that comes to a skilled game developers mind when this question comes up?

In my mind obj format comes up, but it doesn't support animation.

So, what could be the best format which supports/covers more or less every feature that an modern engine can cover? FBX? Collada?

Some professional insight would help.

  • \$\begingroup\$ I think the term you were looking for is "de facto", not "De-factor". \$\endgroup\$ Jul 4, 2011 at 9:37
  • \$\begingroup\$ @nicol-bolas fixed \$\endgroup\$ Jul 4, 2011 at 9:41

1 Answer 1


There is no "best format"; there is only varying levels of annoying.

Collada does pretty much everything you could possibly want to do, at the cost of doing everything you don't want to do as well. This makes it a useful interchange format, but not something you should probably be looking to load directly into your game.

FBX isn't quite as widely supported, being a proprietary format. And it's... a proprietary format, but at least the format specification is available.

Most game developers need to massage the data, whatever the kind, into something their game can load and throw onto the screen as fast as possible. Therefore, most game engines that support the interchange formats will use an off-line tool to transform them into their game-specific formats.

And that's generally a good way to work. You have a good separation of code: the code that massages the data is separate from the code that loads it into your game. You get fast loading performance, while still having the ability to format the data as you need for maximum speed and use. And you still can see what the data looks like in your original exported file format, which is generally some kind of text file.

  • \$\begingroup\$ "but not something you should probably be looking to load directly into your game." why? \$\endgroup\$ Jul 4, 2011 at 9:50
  • \$\begingroup\$ "..use an off-line tool to transform them into their game-specific formats." Does it have to be binary level conversion? \$\endgroup\$ Jul 4, 2011 at 9:51
  • 4
    \$\begingroup\$ @iamcreasy: "why?" Have you looked at Collada? Do you really want to load that, do that many ASCII-to-float conversions, and then after all that is done, compress the data into the final form used by your game? \$\endgroup\$ Jul 4, 2011 at 10:00
  • 2
    \$\begingroup\$ @iamcreasy: It doesn't have to be a binary file, but it's not a bad idea for it to be one either. You can load it directly as a memory image in some cases. You could even load vertex data directly into a mapped buffer object pointer. Load times in games are bad enough without someone making them worse. \$\endgroup\$ Jul 4, 2011 at 10:01
  • 1
    \$\begingroup\$ @iamcreasy It has to be binary data, everything else is a waste for an engine \$\endgroup\$ Jul 4, 2011 at 22:03

Not the answer you're looking for? Browse other questions tagged .