views:

1835

answers:

4

It's been about two years since I last developed games, and I am interested in starting a new project. What is the most common open-source 3D model format?

I am looking for a format that would preferably have a lot of either public domain or open-licensed models existing. Last I checked, MD5 was the most common animated model format, and 3DS was the most common static model format. Is this still true?

On a similar note, are there any free libraries that can be used for that purpose?

+11  A: 

Check out FBX and Collada.

Both are "interchange" formats, meaning in theory they can contain anything a 3D application might produce. So exporting FBX or Collada from one application and importing into another one should transfer everything that is possible.

Of course the above makes the formats quite complex. And issues or bugs in exporters/importers don't quite make up to this ideal. But it's getting there.

FBX is closed format by Autodesk, with freely available SDK and import/export tools. Now that they control almost all 3D applications, I expect it to be more consistent/better across their apps. Collada is an open format originally invented by Sony. Based on XML, which can be a good or a bad thing.

Both of those are not meant to be the final formats that an application or game would use. They are really big & fat & slow (meant for interchange). For the final format, I'd suggest as simple as possible binary format. E.g. a mesh would be a vertex buffer dump + index buffer dump + some header with info. So you'd take FBX or Collada files exported from a 3D application, read them using FBX or Collada SDKs and produce final format.

NeARAZ
While these interchange formats appear great at first, most modeling packages implement them so naively that they are in practice useless for exchanging data between apps that aren't based on the same basic concepts. E.g. anything relating to cameras, animations and multitexturing will be lost.
Ronny Vindenes
@RvV: yes, that's why I said "in theory". However, there does not appear to exist anything better so far...
NeARAZ
A: 

Ok... I'm doing simple OpenGL ES programming and when I say simple, the most complicated things I do aren't much more than glorified beveled cubes and L-shapes. However, getting all that vertex data into an app is either a) hand-coded (UGH!) or b) 3rd-party game engine (double-UGH!!!) Now I've been using a program on the mac called Cheetah3D which is a pretty good modeler (not great, but solid... good) and the one thing it has that I haven't seen elsewhere is the ability to save a file as a c header file. It exports all the arrays for you and even gives you the code to render them (albeit in a commented out block as a reference.) While this is great for 90% of what we do, there are some things the modeler can't, like allowing me to specify the same vertex for two different faces and use a different normal for each one... or even to mix flat and curved normals (or rather how they render) in the same model.

All that said, I need something better. How would you get your simple models (more accurately just the vertices, triangle indexes and normals, nothing else) into your program without having to rely on a full-on game library?

MarqueIV
A: 

After working with the C3D format the past few weeks, I'd like to put this on the table. Its in the public domain, with SDKs for C++, Visual Basic and others. Also, it is very well documented.

I've grown somewhat of a distaste for FBX as you aren't allowed to redistribute it, and the SDK is in the order of 400 MB. Also, initialization is very slow. Quite the opposite is true for C3D.

Paul Lammertsma
A: 

3DS is still the defacto standard for still models.

Will