Hmm. I’m really thinking there’s no solution to this problem. I took a closer look at the Collada exports from Poser, and they seem to have the same problems with rotation accuracy. When I was seeing more accurate rotations, those were derived from custom poses that I had exported from Poser as quaternions, then applied in Blender using a custom script, then exported using ChickenR91.
Which makes me wonder if it’s time to think about this problem differently. What works best with Poser and Blender is a custom pose format. Why can’t such a thing be written for Panda? I wonder what you can tell me about setting joint rotations within Panda. I haven’t gotten to the point of exploring such things yet, being preoccupied with the Poser exporter. Can Panda set rotations as quaternion? If so, that would give me a way around this .egg export problem. I could export the figure in .egg format and the animation in a custom pose format.
The pose format I used with the Blender pose loader was simply:
Body,0.0,0.0,0.0,0.942072,0.000000,0.000000,0.000000,1.0,1.0,1.0
GoalCenterOfMass_4,0.0,0.0,0.0,1.000000,0.000000,0.000000,0.000000,1.0,1.0,1.0
CenterOfMass_4,0.0,0.0,0.0,1.000000,0.000000,0.000000,0.000000,1.0,1.0,1.0
Waist,0.0,0.0,0.0,0.882482,0.120103,0.449894,-0.066300,1.0,1.0,1.0
Hip,0.0,0.0,0.0,0.974456,-0.216040,-0.013217,-0.059617,1.0,1.0,1.0
Abdomen,0.0,0.0,0.0,0.999313,-0.026236,0.000687,0.026151,1.0,1.0,1.0
Chest,0.0,0.0,0.0,0.990249,-0.139308,0.000000,0.000000,1.0,1.0,1.0
Neck,0.0,0.0,0.0,0.979262,-0.105704,-0.156430,0.073498,1.0,1.0,1.0
Head,0.0,0.0,0.0,0.996846,-0.015065,-0.054289,0.055900,1.0,1.0,1.0
Which is just joint name, translation, rotation as quaternion, xyz scale. Application of the pose uses the following approach:
quat = (rest_matrix * quat_as_matrix * rest_matrix_invert).toQuat()
Which requires the ability to set rotations as quaternions, as well as a reliably accurate method of converting between quaternion and matrix forms. Of course, this works in Blender because Blender applies its own rest matrix information upon creating an armature (as shown in the code samples I posted on page 1 of this thread). If Panda only considers the Transform matrix submitted in the .egg file, this process might not help me at all because I am submitting identity matrices.
Still, it’s a thought, and I’m running out of ideas, here. Would Panda cooperate to allow me to implement a custom pose format like this?