Model Loader Advice

Started by
1 comment, last by Vincent_M 11 years, 3 months ago

I've written a few model loaders from scratch over the years, but I always run into a snag when trying to import models using different plug-ins for different editors. For example, just when I think my MD5 or OBJ importer works, it'll crash my game when I try importing a model from one of my modelers if they don't use the same DCC tool with the same version of the same exporter I use. Same with MD5 and X...

I've been able to write a model loader that'll load up Half Life 2 maps (when converted to OBJ), and my MD5 loader has been able to load, render, and animate DOOM3 models, but still, I run into compatibility issues, and I haven't been lucky finding MD5 exporters for DCC packages my modelers use.

All of these file formats are text-based formats, and if the text formatting is off by a little bit, I'm in bad shape. I believe my text parsing skills aren't that great. I've thought about using ASSIMP to get around this or writing a COLLADA importer from scratch, but that seems overwhelming to me. Does anyone know of any good C++ text-parsing tutorials that I could read to improve my text loading skills?

Also, what model formats would you recommend? I've thought about FBX, but it looks like an in-depth file format similar to COLLADA.

Also, are there any good tutorials out there for handling animation blending? I've looked around and right now, I have it setup to where my MD5 models can have 2 animation channels playing at once, and each channel can transition between animations, but I still get weird issues when my characters go from walk to stand, etc.

EDIT: Btw, it looks like Autodesk's FBX model format is more like a next-gen version of Microsoft's X format that's no longer supported natively by Direct3D (deprecated in DX10). Instead of using curly braces, it uses an XML-based format. Has anyone succeeded in writing a pretty stable importer for this without having to use the Autodesk APIs?

Advertisement

In the end, you're probably going to want to create your own custom format. I'd recommend you just use ASSIMP (it's not that complicated) to import stuff for now and then use it to make a converter later

That's what my code does for now. It imports some sort of model format, but saves it out in a binary format that stores the data in the same way that my code holds the data. The format is more serialized and necessary for the end-product. I'll try ASSIMP again, but I had trouble getting it to build for iOS.

This topic is closed to new replies.

Advertisement