D3D9 How to: Animated models? (xfiles?)

Started by
5 comments, last by ATEFred 11 years, 1 month ago

How do I get an animated 3D model into a directx application? I know there's this mesh interface, but is it better to hard code it into a .x file or use a modeling program to export the .x file? It seems that the available exporters are either no longer online (panda) or not good for animated meshes. Are xfiles even the best way to go? Im reading otherwise on these forums. Also I'm using maya, but whatever works best is fine with me.

Basically if xfiles are the way to go (for animation) what is the best way to create one? if not, what is?

Advertisement

Maybe the question was confusing. Im new to direct3d and just figured out how to export and load a static mesh. Autodesk softimage has a built in exporter. It's just that I wasn't sure about these other third party exporters for maya, 3dmax and blender, based on what I've been reading on these forums, which led me to believe that maybe the .x format is not the right way to go. Im just hoping that this softimage exporter will work with an animated mesh as well. Once I create the animated mesh I will post my experience getting it into my application.

theres much information on this topic as developers like to keep it a secret to there benifit , .x is not the right way to go but ive heard fbx is a good format to use for games.

:)

Well softimage doesn't seem to export animation from .x files. I may be missing something, but I tried everything I could think of. I picked up TrueSpace which exports very well, animations and all. The exporter is also built in. It's much different from the autodesk products, however.

I can't help but feel that I'm going about this the wrong way, even though everything works as expected. If anyone has any input on the process of creating a mesh, animating it and getting it into a directx 9 application I would greatly appreciate it.

As long as the vertices in your vertex buffer has indices and weights to a skeleton, there are a few ways to do this.

The easy way is to use the AnimationController that comes with the SDK library. Here you just input the animation sequences, track weights, passed time and the AnimationController will update the vertex buffer (on the CPU!) with a new animated mesh. This is what you usaully do with the Fixed Function Pipelin (you don't write the shaders).

When moving to shaders what you do is that you pass the skeleton to the GPU and then write the vertrex shader to read this skeleton and transform each vertex accordingly. This way the GPU is animating the mesh, not the CPU. This is much faster. With old hardware you will be limited to maximum 35 matrices you can give to the GPU per draw call. If your skeleton consist of 100 bones you must then draw your character in parts. What I do to avoid this limitation is to place my bones in a dynamic texture which can hold 120*4096 bones, which I sample in the vertex shader.

Hello, I have made a exporter for 3ds max 7 ~ 2013. The latest version has just been updated for CAT animation. You can download from my site and use it for free.

The Softimage exporter is good for mesh export but seems to stop the development.

If you don't want to spend too much time with mesh loading, I recommend using open assimp. It's a free library that loads a bunch of file formats, including collada amongst others. This includes loading animations from said collada files.

It's pretty easy to use, though of course to support skeletal animations you need to write a bunch of code to use the keyframe data it provides you with. There are some pretty good tutorials though for this out there.

I use this to load model and animation data from maya/softimage/max, and save out data in my engines format for fast runtime loading.

If you don't want to go through open assimp, there is a pretty good sdk for FBX files which is a pretty common format you can export to from the major modelling packages. Not used it myself, but I've heard good things.

This topic is closed to new replies.

Advertisement