关于 骨骼动画之理解蒙皮算法
2016-12-25 16:08
399 查看
把三维骨骼顶点联系至骨骼的位置的过程,称为蒙皮。
蒙皮用的网格是通过顶点联系上骨骼,每个顶点可以绑定一个或者多个骨骼(一般最多允许4根骨骼)。若某顶点只绑定至一根骨骼,它就会完全跟随该骨骼移动。若绑定至多个骨骼,该顶点的位置就等于把它逐一绑定绑定个别骨骼,在通过权重加权平均。
能把网格顶点从原来位置(绑定姿势)变换至骨骼的当前姿势的矩阵称为蒙皮矩阵。
蒙皮矩阵不是基变更变换(change of basis)。
基的变更:把物体从一个坐标系转换到另外一个坐标系的过程,明显,蒙皮矩阵并不是基的变更。
蒙皮矩阵把顶点变形至新位置,顶点在变换前后都在模型变换空间中。
求蒙皮矩阵时的一个诀窍是:顶点绑定到关节的位置时,在该关节空间中是不变的(其实变的只是骨骼,所以才叫骨骼动画)。具体可以参考以下从《游戏引擎架构》书籍的截图:
通俗点一点理解就是:模型加载到内存中的位置是在模型空间中的坐标(并不是其绑定的骨骼坐标系下)在做骨骼动画时,动的其实是骨骼,而绑定到该骨骼的顶点会跟随骨骼做动画,所以顶点相对于骨骼位置是不变的(在关节空间下是不变的,变的只是骨骼的位置),因此可以利用这个特性,求出蒙皮矩阵。
一.骨骼文件
在skeleton文件中,保存着骨骼的绑定姿势下的骨骼坐标和骨骼动画数据,应该会有以下类似数据:
在第一部分数据中,骨骼的绑定数据中的position/rotation/scale都是相对于父骨骼的坐标,在读取数据后,需要求出绑定姿势的世界坐标变换;第二部分表示骨骼之间的父子关系;第三部分是具体的骨骼动画,其中的position是在父空间下,rotation/scale都是相对于节点自己的坐标系下。
一.软件蒙皮算法流程
1. 应用动画
2. 蒙皮应用
2.1 计算蒙皮矩阵:根据以上的计算公式:New V = Bind V * BindMatrixInverse * C BindMatrix;附上Ogre的蒙皮矩阵算法:
以上矩阵就是Ogre计算从绑定姿势下转换到当前姿势下的变换矩
蒙皮用的网格是通过顶点联系上骨骼,每个顶点可以绑定一个或者多个骨骼(一般最多允许4根骨骼)。若某顶点只绑定至一根骨骼,它就会完全跟随该骨骼移动。若绑定至多个骨骼,该顶点的位置就等于把它逐一绑定绑定个别骨骼,在通过权重加权平均。
能把网格顶点从原来位置(绑定姿势)变换至骨骼的当前姿势的矩阵称为蒙皮矩阵。
蒙皮矩阵不是基变更变换(change of basis)。
基的变更:把物体从一个坐标系转换到另外一个坐标系的过程,明显,蒙皮矩阵并不是基的变更。
蒙皮矩阵把顶点变形至新位置,顶点在变换前后都在模型变换空间中。
求蒙皮矩阵时的一个诀窍是:顶点绑定到关节的位置时,在该关节空间中是不变的(其实变的只是骨骼,所以才叫骨骼动画)。具体可以参考以下从《游戏引擎架构》书籍的截图:
通俗点一点理解就是:模型加载到内存中的位置是在模型空间中的坐标(并不是其绑定的骨骼坐标系下)在做骨骼动画时,动的其实是骨骼,而绑定到该骨骼的顶点会跟随骨骼做动画,所以顶点相对于骨骼位置是不变的(在关节空间下是不变的,变的只是骨骼的位置),因此可以利用这个特性,求出蒙皮矩阵。
一.骨骼文件
在skeleton文件中,保存着骨骼的绑定姿势下的骨骼坐标和骨骼动画数据,应该会有以下类似数据:
在第一部分数据中,骨骼的绑定数据中的position/rotation/scale都是相对于父骨骼的坐标,在读取数据后,需要求出绑定姿势的世界坐标变换;第二部分表示骨骼之间的父子关系;第三部分是具体的骨骼动画,其中的position是在父空间下,rotation/scale都是相对于节点自己的坐标系下。
一.软件蒙皮算法流程
1. 应用动画
2. 蒙皮应用
2.1 计算蒙皮矩阵:根据以上的计算公式:New V = Bind V * BindMatrixInverse * C BindMatrix;附上Ogre的蒙皮矩阵算法:
以上矩阵就是Ogre计算从绑定姿势下转换到当前姿势下的变换矩
相关文章推荐
- 关于骨骼动画max数据导出到dx中一些问题总结
- 关于骨骼动画及微软示例Skinned Mesh的解析
- 关于骨骼动画的实现
- 关于Cocos Creator用js脚本代码播放骨骼动画的步骤和注意事项
- 关于ImageView的scaleType理解(播放动画)
- 关于骨骼动画及微软示例Skinned Mesh的解析
- 转载并记录一遍关于骨骼动画的cocos2d论坛帖子。
- 关于3d建模软件中骨骼动画的一些概念
- 从Sprite3D理解3D骨骼动画原理
- 关于骨骼动画及微软示例Skinned Mesh的解析
- 关于骨骼动画及微软示例Skinned Mesh的解析
- 关于骨骼动画及微软示例Skinned Mesh的解析
- 关于骨骼动画D3D自带Skinned Mesh的讲解
- 我对骨骼动画的理解(最精减的骨骼动画类)
- 关于骨骼动画及微软示例Skinned Mesh的解析
- 关于骨骼动画及微软示例Skinned Mesh的解析(一)
- 关于骨骼动画及微软示例Skinned Mesh的解析(一)
- 关于骨骼动画及微软示例Skinned Mesh的解析
- 关于jquery动画中的淡入淡出的理解
- 关于骨骼动画及微软示例Skinned Mesh的解析