I have a very simple animation that targets ANGLE and individual X Y Z fields. I managed to animate these joints correctly by linear interpolating the target fields and updating the target joints transform.
Now I have a more complicated animation (max exported) which used IK solver nodes, the nodes were collapsed before exporting, but now I have <animation> <sources>'s which have <accessor> <param>'s which have names X Y Z and ANGLE, the target element is a <rotate> element within a <node>. I tried converting these AxisAngle pairs to quaternions and interpolating between them for a given time, then using the interpolated result as the joints transform for this in between time. But im unsure if this is how I should be using the axis angle, the resulting animation is incorrect. Ive tried using the resulting quaterion as the replacement for the joints local transform, I also tried concatenating it with the result from the last.
The target skeleton joints transforms (<rotate><scale><translate>) seem to all animate, some target joint nodes seem to have multiple XYZ AXIS <animation> <channel>'s which seem strange. The following 3 <animation> <channel>'s for joint node “SecondLegEnd” for the first time key, seem to do a -13.2825 degree rotation, a 1 1 1 scale, and then a +13.2825 degree, wouldnt these cancel each other out being done all at the same key time? Oddly enough when this file is imported into Maya it runs fine.
<animation id="SecondLegEnd-node-sar">
<source id="SecondLegEnd-node-sar_SecondLegEnd-node_ScaleAxisR-output">
<float_array id="SecondLegEnd-node-sar_SecondLegEnd-node_ScaleAxisR-output-array" count="404">-1 -6.1e-005 -0.000524 -13.2825 ...</float_array>
<technique_common>
<accessor count="101" source="#SecondLegEnd-node-sar_SecondLegEnd-node_ScaleAxisR-output-array" stride="4">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
<param name="ANGLE" type="float"/>
</accessor>
</technique_common>
</source>
</animation>
<animation id="SecondLegEnd-node-scale">
<source id="SecondLegEnd-node-scale_SecondLegEnd-node_scale-output">
<float_array id="SecondLegEnd-node-scale_SecondLegEnd-node_scale-output-array" count="303">1 1 1 ...</float_array>
<technique_common>
<accessor count="101" source="#SecondLegEnd-node-scale_SecondLegEnd-node_scale-output-array" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
</animation>
<animation id="SecondLegEnd-node-sa">
<source id="SecondLegEnd-node-sa_SecondLegEnd-node_ScaleAxis-output">
<float_array id="SecondLegEnd-node-sa_SecondLegEnd-node_ScaleAxis-output-array" count="404">-1 -6.1e-005 -0.000524 13.2825 ...</float_array>
<technique_common>
<accessor count="101" source="#SecondLegEnd-node-sa_SecondLegEnd-node_ScaleAxis-output-array" stride="4">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
<param name="ANGLE" type="float"/>
</accessor>
</technique_common>
</source>
</animation>