http://hi.baidu.com/zyb_debug/blog/item/fbe409eeb8a8b5e5cf1b3e0b.html


阅读 Advanced Animation

谈到SkinWeights里面的TransformMatrix的时候一笔带过,我始终不理解这个matrix有何用处,因为我感觉所有的顶点变换都被 Frame里面的阶层体系做了,那么SkinWeights里面的matrix有什么用。

经过我一个晚上的思考,看了GameDev论坛的帖子,终于理解了。

首先讲建模,建模建出来的是一些顶点,这些顶点组成了最原始的mesh。

最原始的mesh中有SkinWeights信息

SkinWeights

{

名字;

影响的顶点数;

顶点的索引;//就是影响了几个顶点

顶点权重;//乘以Frame TransformMatrix的百分比

最后就是一个4*4的矩阵;

}

这个4*4矩阵是这时骨骼在 Mesh中的位置的逆矩阵,也就是相对于 local坐标系。

我说的明白点,手腕是个骨骼,手指尖是手腕影响的顶点。就是一个点,vetex,在自身坐标系下。

那么用 手指尖这个点 * SkinWeightsMatrix 得到的就是个位置,什么位置?就相当于把手腕连带指尖移到坐标原点。当然,手腕在坐标原点的位置。

 

至于Frame中存储的阶层体系矩阵就是现在骨骼的位置。

找到现在手腕骨骼的矩阵, 手指尖Vertex* SkinWeighsMatrix*(肩膀的Matrix*胳膊肘的matrix*手腕的matrix),

那么手指尖自然就变换到了相应的位置。

 

我说得这么通俗,不知道传达到思想没?

参考链接

http://www.gamedev.net/community/forums/topic.asp?topic_id=479158

http://www.gamedev.net/community/forums/topic.asp?topic_id=392242

最后感慨下,GameDev的论坛果然是好地方

Posted on 2009-09-17 22:45 zyb_debug 阅读(1421) 评论(1)  编辑 收藏 引用

Feedback

# re: 理解SkinWeights 骨骼动画  回复  更多评论   

2009-09-18 00:02 by 柒笑侠
GameDev上总会有人在n年前讨论过我们现在遇到的问题……尤其是3D渲染以外的那些不好找资料的……

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理