Inverse bind-pose matrix or transformation matrix of joint?

Hi guys,

Just want to clarify my problem and seek for some help.
I did make(hack) the animation possible by the approach which I think could definitely be able to refined.

I read the calculation in specification for skinning (page 38 and 175) and the thread stuck in the design discussions about how to calculate the inverse bind-pose matrix.
I think if I want to animate the skeleton and meshes, I have to change the transformation matrix of a certain joint. By doing this, the meshes should deform as well as the bone.However, I cannot find any (appropriate) way to do this using Collada DOM.

What I was doing now is to rotate the inverse bind matrix which I can get from a joint(node) instance.It turns out the vertices influenced by the joint was moved as I desired to. The problem is that I have to recursively do this for all its children based on the local coordinate of the joints.
I think there must be a way that Collada DOM to do the job for me. So I feel still missed something. Please someone who knows what is happening give me a hint about where I should take a further look.

Really appreciate the help.


The DOM is a low level import/export API not a run-time engine. Engine features like skinning and animation calculations are part of your application engine that you develop.

Thanks a lot.I think I understand the things the other way around. I have gotten the model work,somehow. Could you please tell me that how the coordinate of each joint is defined in COLLADA?

In COLLADA, a joint is a local coordinate system, i.e. a <node> element. COLLADA uses XML to represent these local coordinate systems hierarchically. e.g:

<node id="J1">
  <node id="J2">
    <node id="J3"/>

Each <node> can have an arbitrary set of transformation elements (e.g. <translate>, <rotate>, <scale>, <matrix>, <lookat>, <skew>) that define its local coordinate system. In your engine, these transformation elements can be converted to 4x4 matrices and concatenated together, per <node>. This local coordinate system might be called object space, node space, or joint space.

Then each <node> coordinate system can be concatenated with its parent <node> on up to the root to compute its world coordinate system.

I hope that helps.