跳转至

title: VRChat 网格与骨骼优化 created: 2026-05-01 updated: 2026-05-01 type: reference tags: [vrchat, mesh, bone, optimization, lod, smr]


🔷 VRChat 网格与骨骼优化

三角面优化、LOD 方案、SMR/MR 选择、骨骼精简的完整指南。

1. 网格优化

三角面/顶点预算

评级 三角面阈值 实际优化建议
🟢 Excellent (PC) ≤ 32,000 控制在 15k~25k
🟡 Good (PC) ≤ 70,000 控制在 30k~50k
🟢 Excellent (Quest) ≤ 8,000 控制在 5k~7k

💡 顶点数应 ≤ 三角面数 × 0.5(合理布线)

优化技巧

技巧 说明 收益
删除隐藏面 背部、脚底、被衣物覆盖的内部网格 减少 10~20% 三角面
法线贴图替代 硬表面细节用法线贴图而非几何体 大幅降低三角面
减少细分 平面区域降低细分等级(圆柱 16 段 → 12 段) 减少 20~30% 顶点
移除不可见部分 衣服内部的皮肤网格 减少 5~15% 三角面

Mesh Renderer vs Skinned Mesh Renderer

类型 特点 适用场景
MeshRenderer (MR) 无骨骼绑定,支持 Static Batching,DrawCall 极低 静态配饰、不可动物件
SkinnedMeshRenderer (SMR) 绑定骨骼,支持动画与变形,无法静态合并 身体、衣物等需要变形的部分

SMR 优化策略

  1. 非动画部件转为 MR: 帽子配饰、背包扣等不随骨骼变形的部件
  2. 关闭 Update When Offscreen: 未在视锥内时不更新(仅限不需要远处动画的部件)
  3. 限制骨骼权重: ≤ 4 bones/vertex(减少顶点着色器计算)

2. LOD (Level of Detail)

VRCSDK 不原生支持 LODGroup

VRCSDK 不原生支持 Unity 的 LODGroup 组件。替代方案:

方案 实现方式 适用场景
Modular Avatar MA_RemoteObject 动态切换网格 远距离降级
自定义 Shader 距离裁剪(Distance Fade) 视觉无缝过渡
自动剔除 VRChat 客户端视锥剔除 + 遮挡剔除 大部分场景足够

💡 实际建议: VRChat 的自动剔除已经非常高效,除非 Avatar 极其复杂,否则不需要手动配置 LOD。

3. 骨骼系统

端视锥剔除 + 遮挡剔除 | 大部分场景足够 |

💡 实际建议: VRChat 的自动剔除已经非常高效,除非 Avatar 极其复杂,否则不需要手动配置 LOD。

3. 骨骼系统### 标准 VRChat 骨骼链

Root
└── Hips
    ├── Spine → Chest → Neck → Head → Left/Right Eye
    ├── Left Shoulder → Upper Arm → Lower Arm → Hand
    │   ├── Thumb (3节) → Index (3节) → Middle (3节) → Ring (3节) → Little (3节)
    └── Right Shoulder → Upper Arm → Lower Arm → Hand
        └── (同上手指)
    ├── Left Upper Leg → Lower Leg → Foot → Toes
    └── Right Upper Leg → Lower Leg → Foot → Toes

骨骼数限制

  • 硬性限制: ≤ 260 个 Transform(含 PhysBones、碰撞体、空节点)
  • Excellent (PC): ≤ 75 骨骼
  • Excellent (Quest): ≤ 30 骨骼

骨骼精简策略

策略 说明 节省骨骼数
删除装饰骨骼 废弃控制器节点、冗余装饰 5~20
减少物理链骨骼 头发/裙子用 3~4 节代替 10+ 节 10~30
合并同区域骨骼 用单骨骼替代多骨骼链(尾巴、长发) 5~15
删除手指骨骼 戴手套或无需指节动画时合并至 Hand 30(双手各 15)
Dummy Bones 用空节点代替部分 PhysBone 视情况而定

手指骨骼处理

方案 适用场景 说明
保留标准五指 需要手势动画 标准 Unity Humanoid 支持
删除合并至 Hand 戴手套/无指节动画需求 权重合并至 Hand 骨骼
BlendShape 替代 需要握拳等姿态 用表情替代骨骼弯曲
保留 Hand 锚点 需要手势但无需指节 Hand 作为锚点,Gesture Layer 驱动

VRM → VRChat 骨骼映射

VRM 骨骼名 VRChat/Unity 骨骼名
hips Hips
spine Spine
chest Chest
neck Neck
head Head
leftEye / rightEye LeftEye / RightEye
leftUpperArm LeftUpperArm
leftLowerArm LeftLowerArm
leftHand LeftHand
leftUpperLeg LeftUpperLeg
leftLowerLeg LeftLowerLeg
leftFoot LeftFoot
Hand
leftUpperLeg LeftUpperLeg
leftLowerLeg LeftLowerLeg
leftFoot LeftFoot
1. 使用 UniVRM 导入时选择 Humanoid 自动映射
2. T-Pose vs A-Pose 差异需手动调整 Avatar Configuration
3. VRChat 对 Hips 高度敏感,确保 RootHips 坐标分离