I have implemented a collada viewer with animation, skinning, and pretty much everything else. And it is working. But I don't know what to do about controllers instanced in nodes that are not the root node. Suppose we have a scene that looks like
Code :<node id="root"> <matrix>identity</matrix> <node id="Bone01"> <matrix>...</matrix> <node id="Bone02"> <matrix>...</matrix> </node> <node id="Bone03"> <instance_controller url="#skin"> </instance_controller> </node> </node> </node>
The controller is instanced under Bone03, which is a child of Bone01.
And the controller has joint nodes of Bone01,Bone02,Bone03.
The question is, what should I do about Bone01 transform? Should the geometries under the controller be influenced by the matrix of Bone01? This seems unlikely because bone matrices are made from Bone01,Bone02,Bone03 which are already influenced by the matrix of Bone01. So applying the Bone01 matrix to the controller makes the bone matrices multiplied by the Bone01 matrix twice. On the other hand, if we ignore the Bone01 matrix then there will be no point in having controllers instanced in node hierarchy. There will be no difference between the controller instanced in the root node or in Bone01. And it doesn't seem to work. What should I do?