If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

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.

Re: Inverse bind-pose matrix or transformation matrix of joint?

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:

Code :

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

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.