Hi,
There's an excellent post by mv348 explaining the transformations involved in the mesh deformation. Here is the link:
http://forums.autodesk.com/t5/FBX-SDK/a-confusion-about-cluster-evaluation-in-Viewscene/td-p/4271172...
In that post, the global shift of the bone node is described by: Bdelta = Bf (Bi)^(-1). (Bf is the final global bone transform and and Bi is the initial)
The matrices in FBX are column major and matrix vector multiplication is:
v' = M*v (M is matrix and v is a vector).
With that said, shouldn't the equation be like the following?
Bi * Bdelta = Bf therefore, Bdelta = (Bi^-1)* BF
Solved! Go to Solution.
Solved by regalir. Go to Solution.
Hi,
I think that the confusion is simply due to the terminology used. What mv348 calls "initial" transform, has to be understood as: "global transform at the moment the skin binding is created". With this in mind, (Bi) is then the global link (bone) transformation at bind time. Therefore, if we go back to the equation and follow a vertex transformations in the order they occurs we see that:
vf = (Mi)^(-1) Ai (Af)^(-1) Bf (Bi)^(-1) Mi * v (where v is the vertex defined in the local space of the mesh).
So,
First step : v'' = Mi * v , v is converted from the mesh local space into the world (at binding time)
Second step : v''' = (Bi)^(-1) * v'' , v''' is now expressed in the local space of the bone (at binding time)
Third step : v'''' = Bf * v''' , v'''' is back to the world (at current time)
and so on ...
From the above decomposition we see that Bdelta = Bf * (Bi)^(-1) effectively represents the delta between the binding time and the current time.
Hope this short post answered your question.
Can't find what you're looking for? Ask the community or share your knowledge.