Mixamo armatures are VERY slow to perform animations in the BGE?

Hi,

It’s maybe just a feeling or its because my scene is empty but he “framerate and profile” shows that my animation bar climbs up to 50% (i know its proportionate) . All the bones in the mixamo armatures are oriented vertically (so deals sometimes with extreme low values on Z axis). So i was wondering if it has some impacts on the animation computations ? I just feel that mixamo armature make the game slow

how many bones in the armature? how many verts on the mesh?

number of bones is a significant factor. try animating the armature with no visual mesh (deform modifier)

as you know, the mixamo armature has not too much of bones and the mesh is very simple (mannequin) .

On the other hand, i export from mixamo.com, the animation with “skin” (mesh) in .fbx . When i import the .fbx ( with some import options i don’t understand) , my imported armature is set with x 90° and scale
[0.01 , 0.01 , 0.01 ] . I don’t know if having the object performing in BGE without apply transform has any performance impact on the animation in BGE, but when i do apply transform , then the animation is messed up. I can import with scale 100, but when i reduce scale , then apply transform, the animation is messed again…

boxe_idl.fbx (2.2 MB)

when i “scale to deltas” and “rotation to deltas” , the animation is not messed up and when i launch the game, my animation makes my animation bar reach 20% only (so i guess the problem was un-applied transforms)

… BUT … in game, the character in 100 times bigger and rotated wrong (so its like the BGE makes an undo)

it seems that there’s something to do with the units, meter vs centimeters …

there exists a setting called “delta transforms”. perhaps its using those values and the bge doesnt like it.

it could be any scaled armature is a problem?

1 Like

the question is : why with mixamo armatures (or any specific i didnt get) applying scale of the characters (object mode) affects the animation . When i do it on some other models, changing scale and apply transform scale doesnt change the animation

EDIT : maybe because there’s no “root” bone in the mixamo armature ? The hip bone is the master and is not positioned the same than the Armature as on object

A. the more bones and vertex in the rig - the more the armature modifier costs
B. the more keyframes and bones- the more animation itself costs of the armature
C. the more IK / constraints a rig has - the more animation the rig costs

[A] can be accelerated quite a bit later using a vertex transform feedback shader but B and C are going to need to be paid no matter what - (could be done faster using threading though I suppose)

i know all that. Maybe import the .fbx i uploaded and see if there’s something special. It’s hard to say if it’s ok, it stays at 60 fps but i don’t feel the fluidity of my game when i use my previous armature. Is there any way to mesure the CPU use in real time in game ?

EDIT : ofc, i’m testing the thing in a new file. Nothing else is running, just press keyboard and play animation. But when i compare to my main game file, my laptop fan start to rise while in my main game , the fan remains quiet . So i suspect (pretty sure) that Mixamo Armatures slow downs the BGE much
But i really don’t know why

in blender or just in general?

in general, you can use:

  • aida64 i personally use this 24/7(payed version) (trial, wil randomly block information)
  • cpuz (free)
  • hwinfo tool(free also used by nasa)

i use msi afterburner and turn on the cpu monitoring and ram monitoring. it can also put that info in the tray as well.

its been my go to for gpu fan curves and such for as long as i have had a dedicated gpus. despite my current gpu being an evga and my next one a gigabyte lol. its that classic compact theme it has. good ol fashion function over fashion.

thx @Cotaks @Daedalus_MDW for suggestions. I notice a CPU extra usage. May i ask you to test the .fbx file on your side ? its an armature + animation. It’s not really for me but a matter of common interest as mixamo assets are like the main ressource for starting a 3th person view game in BGE. On my side, i will keep using my armature as the mixamo armature seem to use unnecessary extra cpu ressource (unless someone figures out what’s wrong with that armature)


±6% cpu usage (ryzen 5 1600)
20% ingame
67 bones,
220 keyframes that animation can be way shorter and looping.
an x amount of objects

compared to:
-+5% cpu, only 8% ingame
55 bones
60 keyframes long where 5 are set
2 objects mesh + sword(sword is bone parented)

on my computer that mixamo armature make the animation bar grows up to 40-50% sometimes. It variates from 20% to 50% sometimes. Like i see on your screenshots, it’s 20% , still 2,5 x more than the 8% . Hard to compare directly.

Also, you might noticed that there’s no bone channel, everything is in 1 big channel in the dopesheet. (can re-bake the animation to force-create them)

Bah, whatever, kind of little irritating things with the BGE

the % does not matter - it’s the Milliseconds vs the CPU core speed.

1 Like

isn’t it the proportion of CPU activity allocated to that task among the whole ? Because then , having a 50% animation shows it’s the heaviest task (which is normally not the case - even in a simple scene)

if I have a 4.4 ghz cpu, and I get .25 ms animation time , and you have a 1.1 ghz cpu and get 1ms
this is expected.

the ms taken doing the thing, and the cpu you have are the relevant details.

the % is not super helpful.

Skinning is expensive no matter which engine you use. More bones, more verts, more trouble.

You say it’s not too many bones and a simple mesh, but it’s 67 bones and 49k tris, with keyframes on every frame for locRotScale – that’s ten keyframes per frame, per bone. You’re not expecting this to run like crap on a piece of crap machine, but you should. It’s stupidly nonoptimal.

If you’re that convinced it’s the software at fault though, just try another engine. Weren’t you migrating to armory just a couple months back?

EDIT : 16.6 ms = 60.2fps , they are both a total . So each row is a proportion of a total, right ?
The problem is that in both case, the bge seems to make it roof to 60fps (~16ms)

So, is this normal ? In the second picture, both characters are animated with same idling animation

? ive got 25.000 vertices and the number of bones are pretty the same on the other armature - same for the animation - 1 key per frame. But after decimate modifier - yes , the “ms” dropped well. But the other armature performs better. When i press P, the results are really not the same.

Never considered seriously to migrate to Armory , nor UPBGE . At this stage of my game dev, it will be irrelevant