[solved] Creating humans with makehumans and importing them in JME

Forgot to mention, GLTF works exactly like ogre if you change to blender render and assign your textures.

Edit: Almost exactly. GLTF places the anim and skeleton under a armature node (same as blender) where Ogre places them under the main node.

I just noticed something, you have transparency selected for the model under the material tab for all materials. May want to change that.

I ran the model with gltf export and the animation only plays the top part for some reason. Whether its a strip or action. Used every setting. Nothing worked.

With Ogre, no problems.

Thanks you for the detailed explaination !

I did that, but the only difference i see is that the animation is now named “GaelAction” instead of “my_animation”.
When i try to activate it, i still have the same exception:

java.lang.ArrayIndexOutOfBoundsException: -3
	at com.jme3.animation.CompactVector3Array.deserialize(CompactVector3Array.java:95)
	at com.jme3.animation.CompactVector3Array.deserialize(CompactVector3Array.java:42)
	at com.jme3.animation.CompactArray.get(CompactArray.java:132)
	at com.jme3.animation.BoneTrack.setTime(BoneTrack.java:232)
	at com.jme3.animation.Animation.setTime(Animation.java:130)
	at com.jme3.animation.AnimChannel.update(AnimChannel.java:348)
	at com.jme3.animation.AnimControl.controlUpdate(AnimControl.java:362)
	at com.jme3.scene.control.AbstractControl.update(AbstractControl.java:128)
	at com.jme3.scene.Spatial.runControlUpdate(Spatial.java:736)
	at com.jme3.scene.Spatial.updateLogicalState(Spatial.java:879)
	at com.jme3.scene.Node.updateLogicalState(Node.java:230)
	at com.jme3.scene.Node.updateLogicalState(Node.java:241)
	at com.jme3.app.SimpleApplication.update(SimpleApplication.java:242)
	at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:151)
	at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:197)
	at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:232)
	at java.lang.Thread.run(Thread.java:748)

Which version of Ogre command line tools do you use ?

https://wiki.jmonkeyengine.org/jme3/advanced/ogrecompatibility.html

0.6.0
same script is in the SDK 3.2 under tools>orgexml

Two things.
Try deleteing the old script in AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\io_export_ogreDotScene.py

Then install the new script.

Restart the SDK.

Then do the export.

Edit: There is no configuration needed to run the ogre script either. Just use defaults.

Ok, to show whats going on, you can see this post I just found:

This is because the ogre script you are using is wrong. You probably think your using the correct one but I doubt it.

If you open up your skeleton.xml file you will see this under the animation part: (search for rotate in the file)

            <keyframe time="0.000000" >
              <rotate angle="1.315924" >
                <axis x="-0.242766" y="-0.346705" z="-0.906013" />
              </rotate>
            </keyframe>

Notice that the translate tag is missing in the above keyframe element but when you use the correct ogre script as seen below, the translate tag is set.

            <keyframe time="0.0" >
              <translate x="0.000000" y="0.000000" z="0.000000" />
              <rotate angle="0.000000" >
                <axis x="1.000000" y="0.000000" z="0.000000" />
              </rotate>
              <scale x="1.000000" y="1.000000" z="1.000000" />
            </keyframe>

As the link shows, the bad ogre script strips out translate elements that have content of xyz = 0.

Find the right script and your problem is solved. Otherwise you have to add a zero translate element to each keyframe missing a translate tag. By the looks of it though, your missing way more data than just that one translate element.

1 Like

To bad I didn’t find this when I first went through this nightmare myself. Took me a week of hell to figure out what was going wrong.

Just to add to this when @mitm was helping me with a modelling/blender issue a few days ago I had tried 2 different types of exporters but neither worked. I uninstalled blender and reinstalled it fresh before putting in the correct exporter. You ( @Ga3L ) may want to give that a whirl as well.

1 Like

A big thank you all !

The animation is now working !

As Mitm discovered, the problem was the Ogre script which was not the good one, and also the way Blender handle it, so here the differents reasons why i got lost in this nightmare:

  • Ogre scripts i found in official website were not up to date, so it didn’t worked. Some needed to install .exe file (the command line tools for Ogre), which seems to be no longer necessary with the last script from the SDK.

  • When you install the script with the JME SDK, it asks you for the script folder, but actually you need to provide the addon folder:
    Wrong path: C:\Program Files\Blender Foundation\Blender\VERSION\scripts
    Good path: C:\Program Files\Blender Foundation\Blender\VERSION\scripts\addons
    if you provide the wrong path, it will put the script there and blender won’t see it (and if you already had a bad script, you won’t realize that nothing changed for blender).

  • When you uninstall blender, it don’t uninstall scripts, there is still some scripts in those locations:
    → C:\Program Files\Blender Foundation\Blender\VERSION
    → %appdata%\Roaming\Blender Foundation\Blender\VERSION\config\scripts
    I had to delete them as well to ensure a fresh reinstall of Blender

Have good holidays all !

1 Like