Rigging - Shoes/Expressions
对于鞋子的绑定,假设已经在场景中导入了creatorBaseSet进行绑定,并且鞋子的建模已经完成。现在是检查鞋子是否有任何建模错误的好时机,例如鞋子是否无意中与面具相交。

还假设您了解在Blender中为ZEPETO进行绑定的基本概念,如指南的索具部分所述。与躯干的绑定工作不同,不需要对绑定进行A姿态的更改。然而,如果鞋子有不同的默认脚位姿,如高跟鞋或厚底鞋,将鞋子绑定到适当姿态的骨架上会提供更顺畅的体验。鞋子需要以T姿态模型导出。
对于高跟鞋或其他改变头像位置的鞋子,可以使用复制的骨架/面具来应用备用姿态。这个复制的绑定允许在模型处于正常位置时在适当姿态的骨架上应用权重。像在索具中应用A姿态或备用姿态一样,过程将遵循几个步骤。
- 将骨架姿态调整以适应鞋子 a. 移动髋骨以放置脚踝应在的一般位置,然后根据此调整脚部其余部分的旋转。


2. 复制骨架和蒙版元素
- 重命名复制的元素以便于组织
3. 在复制的蒙版元素上应用骨架修改器
4. 将修改后的姿势应用为复制骨架的休息姿势
5. 重新添加骨架修改器到复制的蒙版并指向复制的骨架

此时,备用姿势设置已完成,您可以继续为鞋子进行绑定。
鞋子的绑定过程与一般的绑定过程非常相似。设置完成后,该物品将被绑定到正确的骨架上。

利用蒙版的权重数据,通过权重转移操作简化初始绑定数据。然后,在权重绘制模式下开始修正权重。


⚠️ 确保在权重绘制工具选项中启用“自动归一化”。否则,权重可能不会均匀分布在网格上。
权重绘制修正依赖于通过在姿势模式下改变骨骼位置来测试骨骼权重,并在网格弯曲异常时进行修正。重复此过程直到错误最小化。
- 检查皮肤权重影响是否正确设置为4,尽管这应该是Blender的默认设置
- 尝试防止面具在变形时穿过鞋子物品

当权重绘制完成后,确保将物品转移回T姿势骨架。如果没有用T姿势骨架导出,物品将产生错误。在非T姿势骨架的姿势模式下,将骨骼旋转回T姿势的位置,并将臀部位置带回T姿势骨架。应用鞋子的骨架修改器。然后,重新添加鞋子的骨架修改器并指向T姿势骨架。 现在,修正从骨架转移过程中可能出现的任何错误的网格和权重。将T姿势骨架重新摆成高跟鞋形状有助于捕捉这些错误。
使用SH_Guide中提供的引导对象检查鞋子体积完整性需要对引导网格进行快速绑定。通常可以通过从面具到SH_Guide对象的简单权重转移来获得良好的结果,而无需额外的修正。
将骨架的备用姿势保存到T姿势骨架中是有用的。这可以通过Blender中的一些动画工具来完成。
- 在3D视口下方的时间轴中,将时间推进到第2帧。
- 在姿势模式下将T姿势骨架设置为姿势位置,选择所有骨骼并使用‘i’设置关键帧。
- 将关键帧类型设置为“位置、旋转和缩放”。

- 返回时间轴中的第1帧
- 选择所有骨骼并重置它们的变换

- 选择所有骨骼,在第1帧设置另一个关键帧

有了这些关键帧,你可以在原始姿势和备用姿势之间切换,以便参考或纠错,而无需手动更改变换输入。
为了确保装备更改在应用程序中生效,将使用一个名为“表达式”的工具来记录旋转的更改。表达式是记录骨骼旋转或平移变化的空对象。这些值在物品添加到Unity和应用程序中时应用于基础身体。
- 表达式被分组在一个标记为“表达式”的空对象下。创建一个具有此名称的空对象。

2. 从根开始,创建一个空对象并命名为“_hips”
- “_hips” 表达式改变了hips root 的ZEPETO骨架,在全局空间中移动一定量。
- 在“_hips”空变换中,输入Blender全局空间中髋骨位置的变化。

ℹ️ 这将不同于髋骨进入位置的变换,因为骨骼在局部空间中操作。如果平移是一个简单的垂直平移,那么最有可能需要更改的唯一变换值是Z位置。可以使用辅助空对象和捕捉工具检查髋部的全局空间变化。
3. 接下来,创建空对象并重命名这些对象以对应需要更改旋转的骨骼,但在骨骼名称前加上“_”下划线标记。
- 例如 “_foot_L, _foot_R, _toes_L, _toes_R”
- 对于每个空对象,输入其对应骨骼的旋转

4. 为了纠正从 Blender 到 Unity 空间方向的问题,我们将在空对象的 Delta Transforms 中进行一些更改
- Delta Transform 值允许在保持正常变换值在 Blender 中可读的同时应用一般的校正变换。
- 选择所有表情空对象并转到对象选项卡
- 在变换下,展开标记为“Delta Transform”的选项卡
- 将表情的 Delta Transform 的旋转 X 设置为 90
- 将表情的 Delta Transform 的缩放值设置为 0.01

5. Now, parent the bone expressions to the expressions empty

6. Parent the expressions empty to the Hips bone.
- If the expressions object isn’t parented to the hips bone, then the expressions will not be created in the prefab during the convert to ZEPETO Style process
