五指山市网站建设_网站建设公司_VPS_seo优化
2025/12/23 21:38:46 网站建设 项目流程

【Unity】骨骼动画

蒙皮模型

蒙皮模型的结构

直接将蒙皮模型拖进场景中并观察其子节点,最简单的蒙皮模型中由骨架和蒙皮网格两部分组成。

  • 骨架

    由一堆空物体组成,每个空物体代表一根骨骼。

  • 蒙皮网格

    蒙皮网格相比普通网格多了一些数据:

    1. 一组模型空间转骨骼空间矩阵,每个矩阵对应一个骨骼。
    2. 每个顶点所要跟随的骨骼矩阵索引。
    3. 每个顶点所要跟随的骨骼矩阵权重。

    为了支持这些新属性,蒙皮网格需要使用专门的 SkinnedMeshRenderer 组件。

顶点与骨骼的关联

蒙皮网格的顶点会跟随骨骼,效果就好比把该顶点挂为该骨骼的子物体,因此当骨骼发生变换时,顶点也会跟着变换,从而实现了提线木偶版的效果。

具体实现是 Unity 通过在计算着色器中用矩阵变换实现的,其通过矩阵计算新顶点位置的方式如下:

新顶点位置 =(世界空间到模型空间 * 骨骼空间到世界空间 * 初始模型空间到骨骼空间)* 初始顶点位置
  • 骨骼空间到世界空间:随着骨骼的变换而改变,这就是带动顶点的关键。
  • 初始模型空间到骨骼空间:一般由模型文件提供,或者也可以用世界空间桥接计算。

网格和骨架的关联

蒙皮网格仅记录对一组骨骼的索引,但具体这些骨骼对应哪些 Transform,则是由蒙皮网格渲染器完成的。实际上模型文件里有对骨架进行描述,Unity也是因此才能用空物体生成骨架,而蒙皮网格不过是通过指定根骨骼的方式,连接骨架和网格。

骨架共用的原理

由上文可见,网格和骨骼并不是一个强绑定关系,而且蒙皮网格渲染器(下面简称渲染器)关联网格和骨骼这一操作也只在渲染器启动时发生,所以只要在渲染器启动前准备好符合条件的空物体,渲染器也会将其识别为骨骼。实际上渲染器中也有提供修改根骨骼这一操作,便是起实现骨架共用的作用。

骨骼动画

动画即控制一个或多个属性,使其在时间的流逝中发生变化。而骨骼动画字如其名,即控制骨骼的动画。骨骼只是一个空物体,挂在它上面的只有 Transform 组件,因此能修改的也只有位置,旋转,缩放信息。通过调整这些属性来使特定的骨骼空间发生变动,从而导致蒙皮网格中的顶点相对世界的位置发生变化,便营造出来模型动了的感觉。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询