3d file formats

Published May 19, 2007
Advertisement
3d file formats:

Something that I've always struggled with is choosing a good 3d file format for games. In my programming life I have used:

*vrml
*3ds
*x
*collada
*custom format
*obj

That's the order in which I used them. Here's what I think of each one:

*vrml - quite alot of 3d apps can export vrml. Many don't do a good job. It's been some years since I last looked at this format, and from what I remember there was loads of features which weren't relevant to 3d games. I think it supports weighted bone animation.
*3ds - an old format with no weighted bone animation support. It's well supported though - almost an industry standard.
*x - specific to directx, so using this format in opengl is a pain. Very relevant to 3d games though and seems to be well supported
*collada - a new format in xml, that is attempting to be the industry standard for interchange between 3d apps. You can use "fcollada" to read/write the files. The format is attempting to support "everything".
*custom format - i wrote my own exporter for Blender3D, which used xml, was dead easy to import, and supported everything I needed. However if I wanted to use another 3d app, then i'd have to write an exporter for that one.
*obj - probably the most widely supported format out there. Doesn't feature hierarchies or animation or per-vertex colours (!!), etc.

It's always difficult to try and shape the non-custom files to your own requirements.

Currently I'm using the obj format - which doesn't allow for hierarchies or animation. You may ask then that that's a strange choice given my rejection of the other formats. My idea is to have 2 files:

*mesh files
*model files

The mesh files are the obj (or similar) files that simply describe the mesh data.
The model files reference the mesh files, and provide additional data - such as the hierarchies, behavior, properties, etc. The model files can simply be xml files, and can initially be authored by hand. Later on I'll obviously need some editor for easy construction of these files. The great thing about this system is that it can be used for both models (cars, characters, etc) and worlds/levels.

eg.

   car_body.obj   100
] posy=[0] posz=[100]>car_wheel.obj
100] posy=[0] posz=[100]>car_wheel.obj




In the above example, in though there are 2 car wheels, I'll only need to load the car_wheel.obj file once.
Previous Entry The name
Next Entry Coming along
0 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement

Latest Entries

Been too long!

1067 views

Eclipse oh no :(

1146 views

New Eclipse

1004 views

3d engine

922 views

Coming along

1060 views

3d file formats

941 views

The name

981 views
Advertisement