What 3d file format to use?

Hi, I have a small engine up and running and need to start loading large worlds to test its capabilities. Eventually I will write my own loader for my own 3d file format but in the short term I would like to quickly test large worlds. Which is the best 3d file format to use? I have found loaders for Quake MD3, MD2, Milkshape format, ASE, 3DS… What are the pros and cons of these formats?

It depends on what type of modeler you have and what kind of stuff you want to do with your 3d file. If you just want to load a world then it is pretty easy to write a loader for .ASE and .ASC files. These files can be viewed with notepad so they you can easily see all the data and how it is organized. However I believe, but I may be wrong, if you want moving parts (like IK linked joints) you need to load a different format such as .3ds, .cob etc.

The important is what do you which this formats. ASE is a very easy one to work with. I have found that the Lightwave LWO format is great, and has a lot of things precalculated like bounding boxes, averaged vertex normals, etc. Its up to you.

The best solution is make your own
format.Or use Wave Front Obj,MD2,MD3.
The 3ds format is very difficult.
PS o you have specification of lwo
format?If yes ,then send it to me.

Thanks for the very helpful tips. So far I am using vertex arrays with three series of parameters:

  • face indices:
    (defines which vertices make up each triangle)

  • vertices:
    (holds coordinates for each vertex)

  • normals:
    (precalculated normals for every vertex)

  • texture coordinates:
    (texture coordinates for every vertex)

I run into problems when using more than 1 texture, as this implies a (to me) funky piece of coding, where I have to say “for trianggels 1 to 73, use this texture, then for 74 to 181, use this other texture, etc”.

So in the near term I am simply looking for a 3d file format that will:

  1. Index vertices to save memory space (ie.- the coordinates of a single vertex used in five triangles will only be written once and indexed).

  2. Allow easy useage of multiple textures.

  3. Have pre-calculated normals (speeds up rendering).

In the longer term I would, of course, like to manage a whole scene graph with this format, including animations, changes of state, morphing, dynamic lights etc. The ASE format looks interesting but which 3d programme saves to ASE? Is ASC as good as ASE?

ASC only saves objects and not scenes. ASE saves the entire scene. So far as I know the only program that will export ASE files is 3d Studio Max. Another option could be if you have or can get TrueSpace is to save the object as .3ds or .cob but use the save as ASCII option.

can i have some quake filespecs, or where do i find them ?


i just want to say, that i released a site with a little tutorial about importing from an ase-file. i think that this is a great format, because you can find everything you need. if you are interested: rafflesia.cxa.de


Ah, you were wrong when you said 3ds max is the only program that exports ASE. You can get a program called 3D Explorer that converts almost any 3D file format to any other 3D format. It can also convert it straight to a vertex, texture coord, and normal array in the form of cpp file.

But it doesn’t export to ASE…

Rafflesia I’m looking at your site right now, it looks great, thanks. (Strangely enough, it is quite slow even though I am accessing from Switzerland).

I looked at the ASE specs and they look promising, I like the fact you can actually read it in notepad. Now is there a freeware or shareware prog that actually saves to ASE?

3D exploration can export to a opengl cpp file that does exactly what your looking for I think. It writes out all the vertices, normals, faces, texture coords, and textures used into a packed matrix.


as far as i know there is no freeware prog for ase. and as already said, 3d-expolation can import it, but not export. and the export in cpp-opengl code is great if you want to hide your models or just have a few of them. but i think, if you try to make a engine with a lot of models, is this the wrong way (you have to re-compile your code if you change one object).
so if you can´t get a prog to export ase, i would like to look at nehe´s (http://nehe.gamedev.net/)site. there is a tutorial about importing milkshape objects. and milkshape is freeware as far as i know.


www. wotsit. org has specifications on various file formats.

Thanks people, I am currently using 3dExplorer to export to OpenGL code but of course that is limited for the reasons Rafflesia has pointed out. ASE format sounds good but I don’t want to be stuck with 3dsMax, which I find expensive and complicated. Current best choices seem to be reduced to Quake md3 or Milkshape3d format, but are there any legal restrictions concerning md3?

BTW you might like to know 3dExplorer is no longer free. There is a 30-day time limit on the latest demo version now…

[This message has been edited by Keermalec (edited 07-03-2001).]

Concerning the legality issues concerning the md3 format, I think those issues were laid to rest when that format and the md4 format (at least an early version of it) was made publicly available by Ritual Entertainment in the F.A.K.K. 2 FakkTools source code. And if you still have any doubts in using that format, it would be simple enough to raise the version number and change the extension.