Hi everybody (Hi Dr. Nick!),
I am writing a Java 1.1 compatible COLLADA loader for skeletal animation purposes and I am having a heck of a time understanding the JOINT nodes in the astroBoy_walk.dae file.
Under:
<library_visual_scenes>
<visual_scene>
<node id=“astroBoy_newSkeleton_root”>
Lies the hierarchy of the skeleton (afaik), now this seems pretty straightforward at first, I simply grab the child elements that represent the local bone transformation, and then look for child elements named ‘node’ and that have type=“JOINT”.
Then I noticed that there are elements in this hierarchy that are ‘node’ elements but have type=“NODE”. They do not have an sid attribute, so I am ASSuming they don’t affect the skin since the skin data holding a name array of joints affecting the skin only holds SIDs.
Now, these ‘node’ elements with type=“NODE” have child elements that appear to be local bone transforms.
The first one I run into in the astroBoy_walk.dae file is “astroBoy_newSkeleton_headEnd”, and it has no children, so I would presume I could safely ignore it; however, later on in the joint hierarchy I run into a ‘non JOINT’ node between two ‘JOINT’ nodes.
This happens between the node where the id=“astroBoy_newSkeleton_L_wrist” with sid=“Bone11” and the node where the id=“astroBoy_newSkeleton_L_index_01” with sid=“Bone16”
I do not know what I am supposed to do with the node that is in between (node id=“astroBoy_newSkeleton_L_indexOrient” with no sid)?
Am I supposed to store the local bone transform data of this node of type=“NODE” for use with something later? Do I ignore it completely?
If this wasn’t reference sample from COLLADA itself, I’d be worried it was some sort of exporter artifact or error.
Help?
Thanks,
WTH