Windows 7 Professional
GeForce 650ti BOOST 2Gb
- newly inserted keyframes dont work in animated COLLADA models exported using Ultimate Unwrap 3D
- models imported from COLLADA files can have bone orientations that are 90 degrees off from the original bone in at least one axis
a. I use a tool called Ultimate Unwrap 3D to convert animated stock asset models in FBX files into COLLADA files. I've found some issues with the import process in Blender most which I can work around, but it'd be great if the importer could be fixed.
b. I've created a simple animated cylinder model using Blender (TestAnimation-original.blend), which I've exported to FBX (TestAnimation-original.fbx) using Blender, then converted to COLLADA using Ultimate Unwrap 3D (TestAnimation-original.dae) which demonstrates the problems using the Blender COLLADA importer.
a. newly inserted keyframes dont work in animated COLLADA models exported using Ultimate Unwrap 3D
When I pose the model and add a new keyframe, the new keyframe appears to be added (you can see the new markers in the dopesheet), but if you go back and run through the animation from the first frame to the most recently added one, the new keyframe does not affect the position of the cylinder. In the file TestAnimation-keyframe-problem.blend, when I added keyframe 5 I had the cylinder bent over a full 90 degrees. You can see that at frame 5 it retains the same transform as it had at key frame 4.
I've done some digging into this, and I think the root issue is that when I import a COLLADA file which stores the animation transforms as 5 separate components (3 axial rotations, scale, and translation). This format is allowed per the COLLADA specification.
i. I've noticed that if the animation transforms are provided in the COLLADA file as a 4x4 <matrix> element, that I am able to add new keyframes. [The Autodesk FBX Converter which does this has other larger issues which cause me to have to edit the entire COLLADA file, so using it is only of academic interest]
ii. I've noticed that when you import the data and look at the dope sheet, you get a set of 5 quaternion transforms. I believe this corresponds to the 5 separate transforms provided in the COLLADA file (3 axial rotations, 1 scale, 1 translation).
iii. This has been an issue at least since Blender 2.63. I've included a file TestAnimation-original.dae which shows the problem.
b. models imported from COLLADA files can have bone orientations that are 90 degrees off from the original bone in at least one axis
Blender 2.70a imports bones in an orientation which doesn't correspond to the orientation of the original model. You can see this if you open the COLLADA model in Blender 2.70a (TestAnimation-bone-angle.blend) and compare it to the same model imported using Blender 2.63 (TestAnimation-keyframe-problem.blend). In the file TestAnimation-bone-angle.blend you can see that the topmost bone is rotated 90 degrees on at least one axis compared to both the original model
This doesn't cause a problem in animation playback, however it causes workflow problems if I try to retarget animations – the result is that, for example, an arm bone can be in an abnormal initial orientation between the actor (source) and target models, which causes the retargeting to twist the target bone into strange orientations. I can work around the issue by copying a proxy bone with the odd orientation and copying it as a child of the actor's bone (which assures transform similarity between source and target) but it's still a workaround which disrupts workflow.