[Bf-committers] About compatibility: How to make Maya's Joints and Blender's edit bones work nicely together ?

Gaia gaia.clary at machinimatrix.org
Sun Feb 16 13:46:18 CET 2014


hi.
I have a compatibility problem with Maya's bone system. It is hard to 
explain because i lack terminology. And it took me days to even 
understand what the problem is. So please be patient with me and forgive 
me if i use wrong wording.

An example: Here is a preview of a mesh (a simple human character 
actually) before it gets imported to the target system:

    http://www.pasteall.org/pic/show.php?id=66902

This is obviously distorted... We could find the cause for the massive 
distortion by now: wrong bind pose matrices in the expotr from Blender. 
It all points to Maya where we can define a joint scale for rest pose:

    http://www.pasteall.org/pic/show.php?id=66901

It looks like this Joint scale actually defines the "neutral scale" that 
is when a mesh is bound to the rig, it will not deform when in rest 
pose. Nevertheless this scale is obviously used to calculate the bind 
pose matrices upon exporting the character to Collada.

Now my problem is this:

1.) Blender does not allow to define a "neutral scale" for edit bones. 
But the importer expects the bind pose matrices are taking this scale 
into account. Which is not possible with an export made from Blender.

2.) In Blender we have a scale for Pose bones. But this scale would 
affect the mesh when it is bound to the rest pose. This implies when i 
define a pose bone scale, then the mesh gets deformed also in rest pose 
as soon as i bind it to the rig. this is not what i want.

3.) Apparently (see first image) i have to take these scales into 
account when i export the rigged mesh to Collada (it affects the bind 
pose matrices) . Now i could add the necessary scale values into the 
custom properties of each edit bone.  That is no problem as these values 
are fixed, so it could be done once by hand. But the Collada exporter 
will not see these properties, hence it will not be able to take them 
into account and thus it still creates the "wrong" bind pose matrices... 
unless i make it aware of these custom bone properties.

4.) I could try to "prepare" the rig before exporting but i have no idea 
how i should do this. Actually i would need to set the pose bone scales 
and then apply the reverted influence to the mesh so that it remains 
unchanged when it is in rest pose.

====

The only solution i can imagine is:

- Add a Bone scale property to the Edit Bones which is used as the 
"neutral scale in rest Pose". So when a mesh is bound to the rig, it 
does not get deformed when "pose bone scale" == "edit bone scale"
- Take this Bone scale into account when exporting a mesh to collada (or 
elsewhere)

A less clean but doable alternative would be:

- Add a Bone scale to the custom Bone properties.
- Make the Collada exporter aware of this extra scale.

Maybe there are other ways to get this fixed. That's why i ask here how 
this problem could possibly be fixed without adding a feature into 
Blender and without need to create a new Collada exporter just to get 
this issue fixed.

Thanks for any hint on how this can be solved best
cheers,
Gaia


More information about the Bf-committers mailing list