
变形动画系统
简介
在此新版本中,Evergine 已在其模型资产中添加了对变形动画的支持。它还在支持的渲染平台上使用了计算着色器。得益于出色的并行性能,这被证明比 CPU 变形快 4 倍。
了解变形动画
变形动画基于变形目标,也称为混合形状或形态键。它们是 3D 计算机图形学中用于创建逼真面部表情和动画的技术。本质上是一系列预定义的 3D 模型,代表不同的面部或身体表情。每个变形目标定义了其顶点相对于基础姿态(通常是中性姿态)的位移。这允许组合多种表情,每种表情具有不同的权重,从而使角色的面部或身体能从一个形状平滑过渡到另一个。这种插值过程实现了复杂且逼真的运动,使变形目标成为角色动画的宝贵工具。

计算着色器
通过计算着色器而非CPU进行变形,利用了GPU的高度并行处理能力和可扩展性,同时有助于降低CPU负载。然而,当应用程序的渲染API不支持计算着色器,或应用程序强制使用CPU(禁用UseComputeSkinning属性)时,Evergine 会自动切换到CPU模式。
在 Evergine Studio 中使用变形目标。
导入您的 3D 模型。
导入您的 3D 模型。在使用变形目标之前,您需要一个带有变形目标的 3D 模型。像往常一样将您的 3D 模型导入 Evergine,拖放到您想要的文件夹中。目前,GLTF、FBX和Collada文件支持变形目标。
打开您的 3D 模型。
打开您导入的 3D 模型以打开其模型查看器。如果您的资产具有变形目标,它们将列在右侧的变形目标面板中。它还会显示每个姿态的默认权重。

在场景中编辑姿态。
如果您在场景中实例化该模型(拖放到场景查看器中),它将创建通常的模型实体层级。如果您选择一个带有变形目标的实体,您将在SkinnedMeshRenderer组件中看到一个新面板。该面板允许您直接在编辑器中控制所有变形目标。
找到您想要修改的姿态并调整其滑块。
这将保存模型所有变形目标的权重。
通过代码使用变形目标。
在您的 C# Evergine 项目中,您可以通过控制网格的变形目标权重来控制其变形,就像上一节一样。您可以在SkinnedMeshRenderer组件中,使用以下属性修改它们:
- float[] MorphTargetWeights。如果此属性为 null 或空,表示该网格没有任何变形目标。否则,该数组将为每个变形目标包含一个浮点值。其顺序与在Model Viewer和SkinnedMeshRenderer编辑器面板中看到的顺序相同。
