模型骨架与绑定要求指南
模型骨架与绑定要求指南
当你将一个带绑定的模型 导入 (Import) 到 Resonite 并尝试将其转换为 头像 (Avatar) 时,了解哪些是实现最佳效果的必要条件可能会让人困惑。本页面旨在帮助你了解这些具体要求。
支持的格式
如果你有一个与其他 VR 平台(如 VRChat 等)兼容的绑定模型,那么它通常可以直接使用。只需尝试导入该头像即可。
提醒: 我们目前不支持直接导入 .unitypackage / .vrm / .asset / .mesh / .prefab 文件。
支持的类人头像 (Humanoid Avatar) 格式:
- FBX
- GLTF
- Blender
整体骨架/模型要求
定义
3D 引擎和工具对同一事物往往有不同的称呼。为了便于阅读本指南,以下阐明了它们在 Resonite 中的含义:
- Segment(节/段): 骨架中的单根骨骼。例如,如果一根手指有 3 根骨骼,那么它就有 3 节。
- IK(反向动力学): 在 Resonite 中用于驱动骨架姿态的系统。
通用指南
- 你的模型应处于 A-pose 或 T-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。
NOTE: 关于趾行腿 (Digitigrade Legs): Resonite 原生不支持趾行腿(如动物后腿)。社区成员通常使用 CopyGlobalTransform 组件将动作从隐藏的类人腿同步到视觉上的趾行腿骨骼。
头部、眼睛与下颚
- 眼睛: 命名为
LeftEye/RightEye(不区分大小写)即可启用自动眼动和眼动追踪支持。 - 下颚 (Jaw): 命名为
Jaw。虽然支持骨骼驱动下颚,但更推荐使用 Visemes(视素/口型) Blendshapes。
整体摘要与支持工具
如果你想下载参考骨架,可以在 Blender 中查看示例文件。
参考头部
- Mixamo:生成的骨架表现良好,无需修改。
- Ready Player Me:头像可完美适配,无需更改。




No comments to display
No comments to display