Skip to main content

模型骨架与绑定要求指南

模型骨架与绑定要求指南

当你将一个带绑定的模型 导入 (Import) 到 Resonite 并尝试将其转换为 头像 (Avatar) 时,了解哪些是实现最佳效果的必要条件可能会让人困惑。本页面旨在帮助你了解这些具体要求。

支持的格式

如果你有一个与其他 VR 平台(如 VRChat 等)兼容的绑定模型,那么它通常可以直接使用。只需尝试导入该头像即可。

提醒: 我们目前不支持直接导入 .unitypackage / .vrm / .asset / .mesh / .prefab 文件。

支持的类人头像 (Humanoid Avatar) 格式:

  • FBX
  • GLTF
  • Blender

整体骨架/模型要求

定义

3D 引擎和工具对同一事物往往有不同的称呼。为了便于阅读本指南,以下阐明了它们在 Resonite 中的含义:

  • Segment(节/段): 骨架中的单根骨骼。例如,如果一根手指有 3 根骨骼,那么它就有 3 节。
  • IK(反向动力学): 在 Resonite 中用于驱动骨架姿态的系统。

通用指南

  • 你的模型应处于 A-poseT-Pose
  • 模型的朝向(正前方)应沿 Z 轴正方向
  • 注意: 轴向翻转可以被检测到,但可能会产生错误。
    • 快速验证: 在高级导入设置中勾选“Force T-pose”。如果手部交叉,请沿 Z 轴旋转 180 度;如果一只手在前一只手在后,请沿 Z 轴旋转 90 度。

忽略骨骼

有时你可能希望在 Resonite 的 IK 过程中忽略某根骨骼。你只需在骨骼名称的任何位置添加 <NoIK>不区分大小写)即可。

该骨骼将不被计入 IK 计算,但其子骨骼仍会被考虑。这通常用于扭转骨骼(twist bones)或被误识别为骨架骨骼的衣服/头发骨骼。

骨骼名称 是否用于 IK? 备注
Right Hand 被标记为右手
<No_IK> Right Hand 被标记为右手(下划线导致标签无效)
<NoIK> Right Hand 被 IK 忽略
Right Hand <noik> 被 IK 忽略
bo<nOiK>ne 被 IK 忽略

骨骼要求

Resonite 使用模式匹配和启发式算法来识别模型的骨骼布局。这意味着骨骼名称在很大程度上是不区分大小写的,并且可以在名称周围包含额外数据。

例如,“hips”、“Hips”、“HIPS”和“cheese_hips”都会被识别为臀部骨骼。算法对空格也很宽容,“upper arm”和“upperarm”都会被正确标记为“上臂”。

中心脊柱/臀部 (Central Spine/Hips)

模型骨架的根部应当是单根臀部 (Hips) 骨骼,且朝向上方。

层级结构应遵循:Hips -> Spine -> Chest -> Neck -> Head

顺序 部位 可选名称 无效名称 (❌请勿使用)
1st Hips (臀部) hips, pelvis, root hip
2nd Spine (脊柱) spine, chest  
3rd Chest (胸部) chest, upper chest, ribcage, spine1, spine2  
4th Neck (脖子) neck  
5th Head (头部) head skull

NOTE: 关于上胸部 (Upper Chest): 许多头像在中心脊柱有额外的骨骼,通常称为“Upper Chest”或“Spine2”。Resonite 支持这些结构,在这种情况下,中间的骨骼会被 IK 忽略以确保正常运动。

肩膀与手臂

两条手臂应从上方连接到“Chest”骨骼。使用字母“L”和“R”来区分左右。顺序应为:Shoulder -> Upper Arm -> Lower Arm -> Hand

顺序 部位 可选名称 无效名称 (❌请勿使用)
1st Shoulder (肩膀) shoulder, clavicle, collar, collarbone  
2nd Upper Arm (上臂) upperarm, bicep forearm
3rd Lower Arm (下臂) forearm, lower arm, elbow  
4th Hand (手部) hand, wrist, palm  

手部与手指

手部看起来很复杂,但只需遵循以下规则:

  • 手指: 每根手指必须至少有两节。我们支持每根手指最多 4 节(掌骨、近节、中节、末节)。
  • 识别: 我们需要至少 3 根手指才能识别一只手,且必须包含一根可识别的拇指
  • 几何检测: 如果你的模型有 5 根手指,Resonite 会自动通过几何算法识别手指类型,即使命名不规范。

手指命名推荐结构:手指名1 -> 手指名2 -> 手指名3

手指名称 示例结构 (左手)
Thumb (拇指) thumb1.L -> thumb2.L -> thumb3.L
Index (食指) index1.L -> index2.L -> index3.L
Middle (中指) middle1.L -> middle2.L -> middle3.L
Ring (无名指) ring1.L -> ring2.L -> ring3.L
Pinky (小指) pinky1.L -> pinky2.L -> pinky3.L

代码如下:

public static FingerType? NameToFingerType(List<string> names)
{
    if (names.Contains("thumb") || names.Contains("th") || names.Contains("thm") || names.Contains("thmb"))
        return FingerType.Thumb;
    else if (names.Contains("index") || names.Contains("point") || names.Contains("in") || names.Contains("ind"))
        return FingerType.Index;
    else if (names.Contains("middle") || names.Contains("mid") || names.Contains("mi"))
        return FingerType.Middle;
    else if (names.Contains("ring") || names.Contains("ri") || names.Contains("rin"))
        return FingerType.Ring;
    else if (names.Contains("pinky") || names.Contains("little") || names.Contains("pi") || names.Contains("pin") || names.Contains("pnk"))
        return FingerType.Pinky;

return null;
}

腿部

每条腿应连接到 Hips 骨骼。顺序为:Upper Leg -> Lower Leg -> Foot -> Toes

image.png

NOTE: 关于趾行腿 (Digitigrade Legs): Resonite 原生不支持趾行腿(如动物后腿)。社区成员通常使用 CopyGlobalTransform 组件将动作从隐藏的类人腿同步到视觉上的趾行腿骨骼。

头部、眼睛与下颚

  • 眼睛: 命名为 LeftEye / RightEye(不区分大小写)即可启用自动眼动和眼动追踪支持。
  • 下颚 (Jaw): 命名为 Jaw。虽然支持骨骼驱动下颚,但更推荐使用 Visemes(视素/口型) Blendshapes。

整体摘要与支持工具

如果你想下载参考骨架,可以在 Blender 中查看示例文件

image.png

参考头部

image.png

image.png

  • Mixamo:生成的骨架表现良好,无需修改。
  • Ready Player Me:头像可完美适配,无需更改。