使用 Pose Wrangler 创建 Blendshape

1134 字
6 分钟
使用 Pose Wrangler 创建 Blendshape

新版 Pose Wrangler 插件已经发布在了 Epic 商城中,新版插件添加了 Driver Bone 的导出模块,及其导入引擎的插件。可以点击这里获取新版插件。新版插件中对 BlendShape 的支持依然是 Experimental,具体的教程视频以及讨论串可以访问这个帖子 {: .prompt-warning }

背景#

Pose Wrangler 是 EpicGames 提供的Maya开源工具,原始的仓库在这里。也可以获取个人 fork 的版本,添加了对导出 fbx 以及 json 的支持。

使用 PoseWrangler 创建 Blendshape 有在 DCC 的准备步骤和导入引擎后的步骤,下面将从 Maya 和 UnrealEngine 两端进行说明。

Maya#

界面#

根据文档,python 脚本编辑器内输入以下代码以打开插件界面,Driver

from epic_pose_wrangler import main
pose_wrangler = main.PoseWrangler()

可以保存到工具架,方便下次使用。

创建解算器#

首先需要在 PoseWrangler 中根据骨骼创建 RBF 解算器,RBF 是指 Radial Based Function,即径向基函数,在建模领域主要应用于肌肉、表情等形变方向。

  1. 点击 Create Solver 以创建解算器,初次创建的解算器会自动进入编辑状态
  2. 如果没有进入编辑状态,点击 Edit Solver 以进入编辑状态(编辑完成需要手动点击 Finish Editing)

Tips:可以通过导入预设的 json 文件,以减少工作量。

创建 Pose#

在创建完骨骼对应的解算器后,进入针对当前解算器的编辑状态。

  1. 在大纲视图中选中驱动骨骼后,点击 Add Driver Transform
  2. 点击 AddPose 以添加 Pose
  3. 在 Maya 内的编辑视口内控制骨骼,调整为需要编辑的 Pose
  4. 调整完成后,点击 Update Pose 更新 Pose
  5. 修改 Pose 对应的名称

Note: 在 Pose 列表为空时,添加驱动骨骼时将会创建名为 default 的默认 Pose,如果需要使用插件编辑 blendshape,那么该 Pose 需予以保留。v1.0 版本中的默认 Pose 的命名 base_pose 在 v2.0 中将不支持。

创建 Blendshape#

  1. 选中当前的解算器和需要修型的 Pose
  2. 在大纲视图中选中需要添加 Blendshape 的 Mesh 后,点击 Create Blendshape
  3. 创建了 Blendshape 后会自动创建原 Mesh 的副本, 并且选中该副本进入编辑 Blendshape 的状态
  4. 编辑完该 Pose 后,点击 Finish Editing 完成对 Blendshape 的编辑

导出 fbx#

  1. 点击 Bake Poses To Timeline 将当前解算器所对应的 Pose 作为帧动画烘焙到时间轴上。该动画会在导入引擎后产生 Anim Sequence 文件,我们需要使用 Anim Sequence 文件来创建引擎内可使用的 Pose 资产。
  2. 选中骨骼和几何体导出为 fbx,确保 Animation 和 Blendshape 能够被导出。

UnrealEngine#

导入 fbx#

  1. 在 fbx 的导入选项中,确保勾选 Import morph targets
  2. 如果需要将曲线导入骨骼中,要在 fbx 的导入选项中,确保勾选 Add Curve Metadata to Skeleton

如果正确的话,此时可以在 Skeletal Mesh 的 Morph Target Preview 标签窗口下看到所有在 Maya 中创建的 Blendshape。

准备 Pose 资产#

需要借助动画蓝图中的 Pose Driver 节点驱动 Blendshape,而使用 PoseDriver 节点需要在引擎内创建 Pose 资产。

  1. 首先需要确保,导入到引擎的动画序列中拥有动画曲线的信息
  2. 在 ContentBrowser 里找到导入引擎中的动画序列 ,右键可以创建 Pose 类型的资产。以这种方式创建的 Pose 资产会将动画序列中的每一帧提取为一个 Pose ,其顺序与在 Maya 中 Pose Wrangler 的 Pose 列表一致
  3. 按顺序输入 Pose 的名称即可

动画蓝图#

测试用动画蓝图只包含两个节点

  • InputPose 用于指定当前的 Pose
  • Pose Driver 将会根据 Pose 资产中定义的一系列 Pose 去驱动指定的骨骼

测试用的 Pose Driver 节点的参数较为简单:

  1. 指定 Pose 资产
  2. 指定源骨骼为 Maya 中编辑的骨骼
  3. RBF 参数中的解算半径设为自动
  4. Pose Target 这里直接从 Pose 资产中拷贝

预览#

将该动画蓝图作为 Skeletal Mesh 的后处理动画蓝图即可预览

效果如下:

无 Blendshape有 Blendshape
without blendshape
without blendshape
with blendshape
with blendshape

TroubleShooting#

  • 确保当前所使用的 PoseWrangler 的版本是 2.x 版本,非 2.x 版本没有创建 blendshape 的选项
  • 需确保 Maya 中的各节点没有使用命名空间
  • 需确保骨骼和 Mesh 的原点都位于(0,0,0)
  • 创建的 Pose 时, 默认的 TPose 需更名为 default

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

使用 Pose Wrangler 创建 Blendshape
https://yohiro.games/posts/blendshape-with-pose-wrangler/
作者
Yohiro
发布于
2023-10-11
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Yohiro
去码头整点薯条。
分类
标签
站点统计
文章
27
分类
5
标签
55
总字数
110,877
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录