3,先选中模型再shift选中骨骼 然后ctrl+p 自动权重 组合
4.在unity怎么做模型 中 让fbx文件拖进资源窗口,然后在属性窗口中设置改模型为humanid 然后setting骨骼对齐。处理对齐后就可以了
5,新建一个animator 放入动画文件就可以动了。
目前实现捏脸功能的方式主要有兩种一个是Blendshape(融合变形),一个是基于骨骼驱动的方式通过修改骨骼矩阵(bindpose)来影响SkinMesh。这两种方式的最终原理都是在shader 生效之前修改顶点
優点:可以控制非常细微的变化,通常用于面部动画
缺点:Blendshape在捏脸制作上工作量非常大,我想把一个结构捏的多么细微就要制作多少张臉这个细微度和工作量是成正比的。这样会导致后期修改不方便更重要的是性能消耗非常大。另外跟我们第三方动画软件不兼容
优點:制作量比较少,性能消耗相对少些和现有动画系统兼容,另外捏脸骨骼和动画骨骼是同一套骨骼就通过MorphemeConnect动画软件跟面部骨骼做了融合。当你捏出来任何形状的脸都可以套用同一个动画这样也减少很大的工作量。
缺点:权重分配受限较多捏脸的细致程度有限。
由於大多数使用unity怎么做模型 开发的游戏都希望最终部署在移动平台上综合考量时间成本,性能消耗和实际需求以下介绍基于骨骼驱动的捏脸方案。(后续会整理出融合变形的方案)
什么是骨骼为什么通过骨骼能够调整脸型?
骨骼是一些具有层次结构的“关节”点(在unity怎麼做模型 中是仅有一个根节点的树状的空物体)构成的其引入最初是希望能籍此方便实现仿生动画,其核心原理简而言之就是通过骨骼帶动“皮肤”(mesh)来运动也就是通过移动骨骼(对骨骼做动画)并根据骨骼和皮肤的关系来计算mesh 跟随骨骼运动后所在的位置。
1.将绑定姿勢(即模型原始状态如人形模型的T型结构)状态下的模型(蒙皮)顶点(世界坐标)变换到各个骨骼空间下。
2.将骨骼变换(移动、旋转、平移)到新位置
3.根据骨骼和蒙皮关系,将绑定姿势下的模型(蒙皮)顶点(骨骼空间下)变换到新的世界位置
1.计算小臂上一点S在小臂空间中的位置。
这个就要根据初始的骨骼位置和mesh上顶点的位置来计算了也就是常说的绑定姿势状态。先说一下该例中每个坐标的意义:
(x2,y2,z2):左肘关节在以左肩关节为原点的坐标系本地坐标
(x3,y3,z3):附着于左小臂上的皮肤上的一点S的世界坐标。
这里为了简单假设所有的关节都没有經过平移和缩放。实际上的变换一般会通过矩阵来表示在unity怎么做模型 中可以通过transform 之间的父子关系及子节点的local 信息组合出模型矩阵(即将骨骼空间坐标转到世界空间下的矩阵),然后通过求其逆矩阵获得绑定姿势矩阵(如果无法理解建议补充矩阵和空间变换的基本图形学知識):
根据绑定姿势矩阵我们可以将蒙皮上的顶点的世界坐标转化到骨骼空间下。
2.计算EL顺时针旋转90°后S点的位置
直接通过左肩SL,左肘關节EL的缩放、旋转、平移信息计算小臂LA空间的模型矩阵使用上一步算出的小臂LA空间坐标乘以该模型矩阵即算出了该点收到骨骼移动的影響后的位置。
模型矩阵反推变换后的蒙皮顶点世界坐标
顶点可能不止受到一个骨骼的影响需要根据权重混合多个骨骼计算出新的世界坐標点。这也是为什么顶点受到骨骼影响越多性能越差的原因。
总结:利用蒙皮与骨骼相对位置不变的性质通过不变的bindpose 矩阵和变化的model 矩陣将蒙皮的世界坐标变换到实际的位置。
更多unity怎么做模型2018的功能介绍请到paws3d爪爪学院查找
3,先选中模型再shift选中骨骼 然后ctrl+p 自动权重 组合
4.在unity怎么做模型 中 让fbx文件拖进资源窗口,然后在属性窗口中设置改模型为humanid 然后setting骨骼对齐。处理对齐后就可以了
5,新建一个animator 放入动画文件就可以动了。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。