title: Unity 核心知识在 VRChat 中的应用 description: 模型基础、骨骼权重、SkinnedMeshRenderer 与物理碰撞体原理
Unity 核心知识在 VRChat 中的应用
VRChat 模型并不是一个单纯的 3D 网格,而是一个高度特化的 Unity 场景对象。理解 Unity 的核心组件,是进行任何模型修改、优化和交互开发的前提。
1. SkinnedMeshRenderer (蒙皮网格渲染器)
这是所有模型(身体、头发、衣服)必须挂载的组件。它负责将 3D 网格 (Mesh) 根据骨骼的运动进行实时变形,并显示出来。
| 核心参数 | 作用说明 | VRChat 开发意义 |
|---|---|---|
| Materials | 网格表面的贴图与着色器 | 决定了模型的渲染性能 (Draw Call)。材质球过多会导致帧率暴跌。 |
| Root Bone | 骨骼层级的根节点 (通常是 Hips) |
决定了模型的整体位置。如果设置错误,模型可能会飘在空中或掉入地底。 |
| Bounds | 网格的可见边界框 | 控制摄像机的裁剪。如果边界太小,模型转动时身体会突然“消失”。 |
⚠️ 风险点:VRChat 的 Avatar 优化器会严格扫描此组件。如果
Bounds设置过小,会导致“隐形 BUG”。
2. 骨骼 (Bones) 与 权重 (Weights)
骨骼 (Transform Hierarchy)
骨骼是模型的“关节”。一个标准的 VRChat 人形模型必须包含 Hips, Spine, Chest, Neck, Head, Shoulders, Arms, Hands, Legs 等节点。
- Unity 概念:每个骨骼就是一个普通的空物体 (Transform)。
- VRChat 意义:动画、物理骨骼 (PhysBone) 都是挂载在这些节点上的。
权重绘制 (Weight Painting)
这是模型制作中最核心的“不可见”知识。
- 概念:一个顶点 (Vertex) 可以受多个骨骼的影响。比如肩膀的顶点,既受 Chest 影响,也受 Shoulder 影响。
- 权重值:总和必须为 1 (或 100%)。
- Chest: 0.8 + Shoulder: 0.2 = 肩膀弯曲时,顶点会跟随胸部移动 80%,跟随肩部移动 20%,从而实现自然的“挤压”效果。
- 常见 BUG:
- 穿模:裙子的权重没有画好,导致走路时裙子直接穿透大腿。
- 扭曲:关节弯曲时,网格出现奇怪的尖刺或断裂(通常是权重分布不均)。
的“挤压”效果。
- 常见 BUG:
- 穿模:裙子的权重没有画好,导致走路时裙子直接穿透大腿。
- 扭曲:关节弯曲时,网格出现奇怪的尖刺或断裂(通常是权重分布不均)。## 3. 碰撞体 (Colliders) 与 物理系统
你看到的“绿色球体”就是碰撞体。
| 类型 | 可视化外观 | 用途 |
|---|---|---|
| Sphere Collider | 绿色球体 | 简单的圆形阻挡区域。常用于胸部、胯部防穿模。 |
| Capsule Collider | 绿色胶囊体 | 长条形的阻挡。常用于大腿、手臂。 |
| Box Collider | 绿色方块 | 方形阻挡区域。较少用于角色,多用于场景。 |
物理交互原理: PhysBone (物理骨骼) 会检测自己范围内的顶点是否与 Collider 发生重叠。一旦重叠,物理引擎会施加一个排斥力,把顶点“推”出去,从而防止穿模。
4. Gizmos (辅助图形)
你在 Unity 场景中看到的绿色球体、彩色坐标轴、连线等,都是 Gizmos。 - 特性:仅在 Unity 编辑器中显示,打包后绝对不可见,不占用任何运行时性能。 - 作用:辅助开发者调试碰撞体范围、骨骼位置、光照方向等。
📖 学习建议:不要害怕场景里的绿球。它们是保护你裙子不穿模的“隐形保镖”。