tag:blogger.com,1999:blog-8216868933119618528.post4311180585992317947..comments2017-11-18T10:07:42.020-08:00Comments on An eye into my World -Tricks, Thoughts, Ideas, Solutions: Skeletal Animation and GPU Skinning - The CruxMuhammad Mobeen Movaniahttps://plus.google.com/113362317128563236289noreply@blogger.comBlogger10125tag:blogger.com,1999:blog-8216868933119618528.post-43693053692339753052016-02-14T22:42:56.390-08:002016-02-14T22:42:56.390-08:00Hi Stewart,
Yes get the absolute transform for ...Hi Stewart,<br /> Yes get the absolute transform for each bone in its initial bind pose position (by multiplying the local bone transform to the parent's transform). Calculate the inverse of this matrix which we call the inverse bind pose matrix. The multiply the animation matrix of each bone to its inverse bind pose matrix which gives the skinning matrix. Apply this matrix to each vertex and you have a nice skeletal deformation. Glad it helped you too.<br /><br />Regards,<br />MobeenMuhammad Mobeen Movaniahttps://www.blogger.com/profile/02716826252349695343noreply@blogger.comtag:blogger.com,1999:blog-8216868933119618528.post-25912379609603065702016-02-04T06:11:10.744-08:002016-02-04T06:11:10.744-08:00Thank you so much, this helped a lot. If I underst...Thank you so much, this helped a lot. If I understand it correctly, for every frame of animation you go through the bones starting at the root, compute their absolute matrix for that frame using their parents absolute matrix for that frame and whatever rotation you want, then get the skin matrix by using that absolute matrix in the inverse bind matrix for the bone? That's what I'm doing now and it seems to work, I just want to know if I'm not doing more than I need to (eg computing too much per frame). Thank you again for the article.Stewart Connorhttps://www.blogger.com/profile/04358914784364784455noreply@blogger.comtag:blogger.com,1999:blog-8216868933119618528.post-2578389094608584432015-06-12T07:29:21.948-07:002015-06-12T07:29:21.948-07:00Thanks Fredrik. Glad you liked it. Sure share the ...Thanks Fredrik. Glad you liked it. Sure share the link so that I may forward others to your article.Muhammad Mobeen Movaniahttps://www.blogger.com/profile/02716826252349695343noreply@blogger.comtag:blogger.com,1999:blog-8216868933119618528.post-85540060503746251552015-06-11T05:51:24.935-07:002015-06-11T05:51:24.935-07:00This is GOLD! Thank you! Finally some clean detail...This is GOLD! Thank you! Finally some clean details on the subject. I will probably write an article on the subject later, can I reference this article if I do?Fredrik Haikarainenhttps://www.blogger.com/profile/02666776530838004266noreply@blogger.comtag:blogger.com,1999:blog-8216868933119618528.post-79185536745738533312014-11-25T03:57:40.194-08:002014-11-25T03:57:40.194-08:00If it works the animation result should be same as...If it works the animation result should be same as in the modelling package. Muhammad Mobeen Movaniahttps://www.blogger.com/profile/02716826252349695343noreply@blogger.comtag:blogger.com,1999:blog-8216868933119618528.post-26020635241228191012014-11-24T09:02:03.040-08:002014-11-24T09:02:03.040-08:00I would like some clarification to match these mat...I would like some clarification to match these matrices to Assimp's matrices.<br /><br />Assimp provides the following data:<br />-a hierarchy of aiNodes which contain a transform<br />-an array of bones, that have to be matched with aiNodes and contain the inverse bind pose but they call it offsetmatrix (also the weights & indices to be attached to vertices)<br />-an array of animations, each with an array of channels (joints really) with SRTs. <br /><br />From my understanding, the array of channels's SRTs (usually interpolated but that's for later) would be used as "localtransforms" in your above code. <br /><br />The offsetmatrices would be stored during init and used as inv bind poses. I don't need to calculate it as shown above since I already obtain it for free.<br /><br />"globaltransforms" is calculated myself by traversing the hierarchy with above code.<br /><br />Finaltransforms is globaltransforms multiplied with inv bind pose and voilĂ , I can send this to my shader.<br /><br />Is my understanding correct or did I miss something?<br />It seems I don't need the transforms that were in ainodes.Firangi4uhttps://www.blogger.com/profile/10316547135454148344noreply@blogger.comtag:blogger.com,1999:blog-8216868933119618528.post-12491880758013419102014-05-21T20:52:09.074-07:002014-05-21T20:52:09.074-07:00You are always welcome Chris I am glad it has help...You are always welcome Chris I am glad it has helped you. When I was working on this, I could not find any reference on what are the bare minimum steps to implement character skinning. After looking out to all available resources, several demos and tutorials, I realized that it was simpler than what others were saying that's when I decided to write this blog post.Muhammad Mobeen Movaniahttps://www.blogger.com/profile/02716826252349695343noreply@blogger.comtag:blogger.com,1999:blog-8216868933119618528.post-31678678015485316652014-05-21T13:37:08.659-07:002014-05-21T13:37:08.659-07:00Thank you so much ! The tip about multiplying by t...Thank you so much ! The tip about multiplying by the inverse of the bindpose matrix is crucially important, but none of the other tutorials that I've looked at bother to mention this. You saved me hours of frustration and dead ends - thanks again !!<br />Chris Fhttps://www.blogger.com/profile/16094466491612325141noreply@blogger.comtag:blogger.com,1999:blog-8216868933119618528.post-72243911330289601102014-01-29T03:01:47.386-08:002014-01-29T03:01:47.386-08:00Hi Siphonife,
I beg to disagree (I am a human be...Hi Siphonife,<br /> I beg to disagree (I am a human being like all others). I had a hard time finding the crux of skinning when I came to it, I thought of posting it online for others.<br /><br />Muhammad Mobeen Movaniahttps://www.blogger.com/profile/02716826252349695343noreply@blogger.comtag:blogger.com,1999:blog-8216868933119618528.post-84831895839552866282014-01-28T06:57:53.608-08:002014-01-28T06:57:53.608-08:00You are a god. I hope this will help me understand...You are a god. I hope this will help me understand skinning. It really does seem like a little amount of code compared to all other sources out there. The harder part is supporting mesh and animation formats... Right now I'm stuck lerping between sampled animations.Siphonifehttps://www.blogger.com/profile/17867129346213056389noreply@blogger.com