Model badly deformed when imported

Started by neo187, September 19, 2011, 10:47:42 PM

Previous topic - Next topic

neo187

Hi Raft

Do you have any hints for a model that appears completely deformed when imported? Basically the hands and the feet get stretched far away from the body and all the body stretches in weird ways when it moves.

The export seems to have been successful, this is the log:

-- --
Skeleton created out of jME OGRE skeleton, 25 joints
Created skeleton animation clip: Walk
Loaded ogre file: girlnpc.mesh.xml, scale: 1, rotation: null
        1 sub objects, 1 skin animation(s), 0 pose animation(s)
Saved bones-group to ninja.group.bones

The model behaves ok in Bender, all vertices have been assigned weights....

Thank you for your time!

raft

How does it look at bind pose if you don't animate it?

AnimatedGroup.get(0).getSkeletonPose().setToBindPose();
AnimatedGroup.get(0).getSkeletonPose().updateTransforms();
AnimatedGroup.applySkeletonPose();
AnimatedGroup.applyAnimation();

neo187

It looks fine. It's only when animated that it goes mayhem. Also I can't manage to launch it from the emulator, I get a OutOfMemory run time exception... The model isn't really that complex, it's only got 1600 vertices with a 512x512 JPEG texture, and there's only a cube in the scene for now...

The app does launch from my phone but it goes very slow, with the model getting distorted when animated...

Thanks for your time Raft

neo187

#3
UPDATE:

Ok so I resolved the out of memory issue, it turns out the the model mesh was double sided, disabling that got rid of the memory problem. Also I cleared all translations and rotations of the model before exporting it

The model appears now a bit less deformed, especially when I disable the "Fix Up Axis To Y" option in the OGRE exporter, but then it faces the Y axis when animated (lies flat on floor)....

Also the Bones exporter keeps flashing a "rotation axis not normalized" warning before successfully exporting it.... Maybe that has got something to do with it?

This is the complete log from the export:


20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
20-Sep-2011 09:58:55 com.jmex.model.ogrexml.anim.SkeletonLoader loadSkeleton
WARNING: Rotation axis not normalized
-- total 25 joint(s) --
0 name: foot_L, parent:
1 name: spine.base, parent:
2 name: foot_R, parent:
3 name: toe_L, parent:
4 name: toe_R, parent:
5 name: ankle_R, parent: 2:foot_R
6 name: spine.top, parent: 1:spine.base
7 name: leg.upper_L, parent: 1:spine.base
8 name: ankle_L, parent: 0:foot_L
9 name: leg.upper_R, parent: 1:spine.base
10 name: shoulder_R, parent: 6:spine.top
11 name: shoulder_L, parent: 6:spine.top
12 name: neck, parent: 6:spine.top
13 name: leg.lower_L, parent: 7:leg.upper_L
14 name: leg.lower_R, parent: 9:leg.upper_R
15 name: arm.upper_L, parent: 11:shoulder_L
16 name: arm.upper_R, parent: 10:shoulder_R
17 name: head, parent: 12:neck
18 name: head.002, parent: 12:neck
19 name: arm.lower_L, parent: 15:arm.upper_L
20 name: arm.lower_R, parent: 16:arm.upper_R
21 name: hand_R, parent: 20:arm.lower_R
22 name: hand_L, parent: 19:arm.lower_L
23 name: fingers_L, parent: 22:hand_L
24 name: fingers_R, parent: 21:hand_R
-- --
Skeleton created out of jME OGRE skeleton, 25 joints
Created skeleton animation clip: Walk
Loaded ogre file: girlnpc.mesh.xml, scale: 1, rotation: null
        1 sub objects, 1 skin animation(s), 0 pose animation(s)
Saved bones-group to ninja.group.bones

raft

Quote from: neo187 on September 20, 2011, 10:40:25 AM
Also the Bones exporter keeps flashing a "rotation axis not normalized" warning before successfully exporting it.... Maybe that has got something to do with it?
No, jME prints that silly warning all the time. It checks if length of vector is exactly one and if not prints that warning.

Quote from: neo187 on September 20, 2011, 10:40:25 AM
..but then it faces the Y axis when animated (lies flat on floor)....
What do you mean by this?

Also some screenshots may help

neo187



On the left is the animated mesh in Blender and on the right the mesh in the emulator, lying flat and with deformed hands/arms....

Is there a plugin for 3DSMax to export a mesh as an ogre file? I could try to see if I get the same issue exporting from Max....

Thanks for your help!

raft

Yes, there is OgreMax. I really recommend it.

neo187

#7
Quote from: raft on September 20, 2011, 01:03:50 PM
Yes, there is OgreMax. I really recommend it.

Right, installed OgreMax and re rigged the character using a Max biped. No more deformations, the model animates ok, so thanks for the tip!

However the imported model is extremely tiny and upside down. I can rotate it and scale it upon loading it but when it animates it goes back to its tiny size and to being upside down. I'm guessing that rescaling at each frame is not a good idea.... should I enlarge and capsize the model or is there a better solution? Maybe there is some export option in OgreMax that shrinks it...

Thanks for your help.

raft

You should scale or rotate the model while converting from Ogre format to Bones format. Both script files and JMEOgreImporter class has support for that

neo187

Quote from: raft on September 20, 2011, 06:10:52 PM
You should scale or rotate the model while converting from Ogre format to Bones format. Both script files and JMEOgreImporter class has support for that

Ok I can see that the main method of JMEOgreImporter also takes a scale and rotation method, but how do you feed those exactly from the command line? I'm guessing they'll be right after the -out and -in values... I tried "-rotation" and "-scale" followed by some values but no luck?

raft

those script files provides help if no argument is given. anyway here is an example:

jmeOgre2Bones -scale 2 -rotation x180 -out mine.bones -in mine.ogre.xml

neo187

Quote from: raft on September 20, 2011, 06:41:14 PM
those script files provides help if no argument is given. anyway here is an example:

jmeOgre2Bones -scale 2 -rotation x180 -out mine.bones -in mine.ogre.xml

Brilliant. I just couldn't find this setup anywhere in the docs... Thanks immensely, you're a really patient and devoted man ;)

One last thing and then I'll let you go (for today at least lol)... Did you set up the Ninja's animations in a specific way for them to loop continuously like they do in the Ninja's demo? Cos my one just stops after playing once...


raft

yes it loops. animation index is increased every frame and when it reaches one, it starts over from zero

why don't you have a look at ninja demo's code? ;)

neo187

well I'm actually using the Ninja demo, i have just replaced the ninja model with my own and have tweaked a few things... while with the Ninja model all animations loop with my one they just stop, that's why I thought it was a setting of the model? Mmm.. I'll try play with it a bit more....

raft

no, no such information is imported from model. neither looping nor animation speed or duration. it's all in control of application