Re: [Algorithms] Converting object space vertexes to bind space
Brought to you by:
vexxed72
From: Dan T. <da...@ar...> - 2007-03-23 17:50:21
|
I actually was mulling this over a few months ago and have a question. You can trivially get the inverse bind pose, and the animation, and concatenate that *for each matrix*, but can you actually get every vertex in a smooth skinned model into an "untransformed" space (thats valid)? Been a while since linear, but I couldn't figure it out. You'd have to take a linear combination of the inverse bind pose and transform using that, but I don't think you can take a linear combination of matrices(certainly not with rotations!). I know I coudlnt' get it to work, so I just take advantage of the fact that all my animations are against the same skeleton and pre concatenate the inv. bind pose and the animated skeleton. -Dan Tom Forsyth wrote: > Typically, you leave your mesh in a standard pose - sometimes called the > "rest pose" - rather than transforming it into some sort of bind space. Many > people use the "crucifixion" pose, though the "easy rider" pose is now > becoming more popular as it puts some bend in all the major joints, which > minimises stretching during animation. > > Obviously you know the bone orientations for your rest pose. And you know > the bone orientations for the pose you want to be in. So you can calculate > the delta between them - how to deform a mesh in the rest pose into the pose > you want. This is just the inverse of the rest pose times the required pose. > > Then feed those deltas in as the deformations. At each vertex, blend & > weight the deformations just like you'd expect, and apply them. > > > TomF. > > > > -----Original Message----- > From: gda...@li... > [mailto:gda...@li...] On Behalf Of David > Clyde > Sent: 23 March 2007 01:34 > To: Game Development Algorithms > Subject: [Algorithms] Converting object space vertexes to bind space > > > So, this week I have been implementing a quaternion based hardware skinning > system based on the GPU Gems 4 "Hardware Skinning with Quaternions" similar > to the recent thread on this list with the same name. I have found lots of > interesting information regarding the topic and various methods for > skinning. Sadly there has been one concept this week I have been unable to > wrap my brain around correctly. Looking for code examples online I have > found very few with the original mesh setup included, and those used DirectX > functions to do as such hiding the implementation. > > >From what I can tell the vertexes I am working with (from a Collada > exporter) are in object space. I am currently attempting to transform the > vertexes into a bind space which works whenever they are influenced by only > one bone, but as soon as the vertexes are affected by more than one bone I > seem to become lost as to what to do. My theory is that I need to accumulate > the weighted transformations affecting the vertex similar to what is done in > the vertex shader described in the article except using the inverse bind > matrices for the bones then multiply it out. This isn't giving me the > results I expected though so figured I would see if I am even on the correct > track as I have been racking my brain over this for a while now. > > Thanks, > Dave Clyde > > > -- > No virus found in this incoming message. > Checked by AVG Free Edition. > Version: 7.5.446 / Virus Database: 268.18.12/724 - Release Date: 16/03/2007 > 12:12 > > |