Convert animation

Community Forums/Developer Stations/Convert animation

PowerPC603(Posted 2012) [#1]
Hi,

I'm currently in the process of learning animation in 3DS Max.
I've successfully created a butterfly following a tutorial on YouTube and animating it also works as expected.
This was the tutorial I followed: http://www.youtube.com/watch?v=SU2XxjNk7HI

Since the animation uses bones, it can become very processor intensive for my game.
When my butterflies (I created 100 copies of it in the scene using CopyEntity) are not animating yet, I get 88fps.
When I start animating them, fps drops to 60fps.
These butterflies are only planes with 9 vertices, which get deformed by the bones.

I understood that deforming the mesh using bones is done by the CPU and can be quite slow when there are many animated models in a scene.

As I'm trying to create a game like World of Warcraft (not as big, as it's a one-mans's project, and it will be single player only, no networking at all, this would seriously complicate things), there can be many monsters nearby which are all animating.

My question:
Is there a way to convert my bone-animated model to some other type of animation where the b3d-file holds the position of the vertices instead of having each vertex linked to a bone?
So, actually convert my bone-animated model to a keyframe animation?

I thought the .X fileformat does this (it doesn't support bones) where each frame holds a static deformed mesh.

Somewhere I read that this would be the way to animate lots of models as this is not as processor intensive as the new position of the vertices don't need to be calculated, but merely be read from the animated model itself.

It would be nice to make a model of a monster, animate it using bones and then convert it to a series of static meshes where the deformation is already pre-calculated during export, so the b3d file only holds a deformed mesh for every frame, and therefore, BMax + Xors3D don't have to calculate each vertex's position and rotation every frame during animation.

It would be hard to model the mesh and deform it myself, frame by frame, as you can easily forget moving or transforming some vertices.

I'm using the b3d pipiline to export my models from 3DS Max 9 to Blitz3D (or BMax + Xors3D).

I tried deselecting the bone-export during export, but then the animation was gone as well.
I also tried exporting using the panda .X exported, but no animation there either.

Last edited 2012

Last edited 2012


AdamRedwoods(Posted 2012) [#2]
I don't know Blitz3D, as I use Blitzmax+miniB3D, but it looks like b3d files uses bones, and MD2 files may use baked animations, so you may try that file format.


PowerPC603(Posted 2012) [#3]
I'm using BMax + Xors3D, as I probably need several years to complete my game, and by then, DX7 won't run anymore on newer OS's.
By the time it will be complete, I'll have to start over when I would choose Blitz3D.

I also need alot of different item-types (weapons, armor pieces, potions, skills, crafting materials, and a whole lot more), so using OO is almost neccessary.
All these things will be derived types from one base-type. That makes it easier to move items from one menu to another (from your skills-window to the shortcut bar for example, or any item from your inventory).

That's why I'm choosing BMax + xors3D.
According to Xors3D's documentation, MD2 isn't supported.
Only B3D is fully supported.
.X, .OBJ, .3DS, .FBX and .MS3D are partially supported.

I guess I'm stuck with the B3D fileformat, as the documentation doesn't describe which features of those other formats are supported.

I already tried exporting a morph animation using the B3D pipeline, but it attached 9 bones to my mesh (one bone for each vertex).
When my modeling skills get a bit higher and I can create a monster mesh (over 5000 vertices), the pipeline would put 5000 bones in my model using the morph-mesh export function.

I guess the performance would be equal in both cases:
- 5000 bones, each with one vertex assigned to it (morph export)
- perhaps 10 bones for the entire model, where 500 vertices could be assigned to each bone (regular boned-animation export)

Also, when using the morph-export function, the model was invisible at first in Xors3D.
The model became visible once it started animating.


Isn't there a way to convert to model in 3DS MAX to a mesh, which holds all the morphed frames?
Would the B3D fileformat support such vertex animation, without bones?
Or does B3D only support boned animations, and therefore, even if 3ds max could convert the animation to vertex animation, Xors3D won't be able to deal with it?



I tried putting 1000 of those butterflies on-screen and place the camera further away, so the engine doesn't have to render a screen full of animating butterflies.
I still got 28fps.

In the real game, there will never be such high amounts of animating monsters near the player. I'm only stress-testing some things right now to determine how far I can go.
But I'll definately need good performance during some parts of the game, where about 50 monsters are closeby.

Last edited 2012


AdamRedwoods(Posted 2012) [#4]
According to the blitz docs, B3D is only boned animation, no vertex animation.

I would suggest seeing if the developers at Xors are interested in creating an MD2 or .X animation importer for your situation.

Some links here in this forum discussing animation files:
http://www.blitzbasic.com/Community/posts.php?topic=94465#1083806
MD3 vs MD2
http://www.blitzbasic.com/Community/posts.php?topic=81877

Last edited 2012


PowerPC603(Posted 2012) [#5]
Ok, I'll try to create some higher poly meshes first and animate them.
Then I have something better to test with.

The current butterfly is only 9 vertices, 8 triangles and 2 bones. Not really something you can use to stress-test.