Another query about 'joints' with no 'sid' and type 'node'

The answer to my previous question was to treat all nodes in the skeletal hierarchy as joints in the skeleton irrespective of whether they had an ‘sid’ or were not of type ‘joint.’

Looking at the astroBoy_walk.dae file is still confusing me though because there are several of these bones of type ‘node’ that have child nodes of type ‘joint’, but when I process the skinning information there’s no bind pose for these strange (for lack of a better term) bones.

I have bind pose matrices for every bone affecting the skin, but none for those that don’t affect the skin (although they affect other bones)… I am sorry, but I am confused - what am I supposed to do with the matrices of these joints which are not of type ‘joint’?

Again, this is from the sample collada file for astroBoy

 WTH

All nodes in a skeleton hierarchy are part of the skeleton. Nodes that are not influences (joints) are either static (rigid) or perhaps animated for some other reason.

The important thing is that each node may contribute local coordinate system transformations to the skeleton hierarchy. If you skip any nodes then your skeleton will be malformed.

That’s what I thought until I saw that the bind poses matrices only existed for the joints with sIDs.

How can the joints without sIDs possibly have animation data if they don’t have bind pose matrices?

If they are NOT allowed to be animated, I can see how they don’t need bind poses.

Thanks Marcus,

 WTH

Nodes transforms without SID attributes are not referenced by anything (e.g. animation) in the content so they are static in that respect.

I’m sorry if I am being dense about this but if they’re static, and they’re not going to be animated, what am I supposed to do with their transforms?

If they’re part of the hierarchy, they would need to be accumulated, yes/no?

If they are accumulated then I would also need the inverse bind pose for that ‘joint’ that is not a joint, but they don’t have inverse bind poses…

Sorry, I am finding this very confusing.

An example of what I’m confused about is the “L_middleOrient” bone in the skeleton of astroboy_walk.dae.

It is of type ‘node’ not ‘joint’, has a transform beneath it, and isn’t attached to the skin, but has no bind pose data, no inverse bind pose data, but has children which DO affect the skin, have bind pose data and inverse bind pose data…

Is L_middleOrient’s transform supposed to be used as the ‘bind pose’ for this ‘not affecting the skin’ bone? If so, am I supposed to compute the inverse bind pose? That doesn’t seem logical since it would seem to defeat the purpose of leaving it out of the bind pose and inverse bind pose data that exists for the rest of the skeleton. (BTW, another very confusing thing is that the inverse bind pose matrices are referred to as ‘bind poses’ in the skin data - wtf? lol…)

Thanks,

 WTH

Yes. Concatenate them as you would normally.

All node transforms are local and so relative to their parent coordinate system.

Yes, but why isn’t there inverse bind pose data for this node then?

 WTH

Because they are not a joint of the skeleton that influences the skin.