跳转至

title: VRM 模型导入 VRChat 指南 created: 2026-05-01 updated: 2026-05-01 type: reference tags: [vrchat, vrm, univrm, conversion, import]


🔄 VRM 模型导入 VRChat 指南

UniVRM 导入、骨骼映射、材质转换、常见问题排查的完整指南。

1. VRM 格式概述

VRM 是基于 glTF 的 VR 虚拟形象格式,广泛用于 VRoid Studio 等 3D 虚拟形象工具。

VRM 包含的内容

  • 网格数据: 身体、衣物、配饰的 Mesh
  • 骨骼层次: VRM 标准骨骼命名
  • 材质: MToon 材质(二次元着色)
  • BlendShape: 表情/口型预设
  • SpringBone: 物理骨骼(头发、裙子等)
  • Meta 信息: 模型作者、许可信息

2. UniVRM 导入流程

导入步骤

  1. 安装 UniVRM Unity 包(与 SDK 版本兼容)
  2. .vrm 文件拖入 Unity Assets/ 目录
  3. UniVRM 自动解析并生成 Prefab
  4. 将 Prefab 拖入场景
  5. 添加 VRCSDK 组件(AvatarDescriptor 等)

导入后检查清单

  • Rig 设置为 Humanoid
  • 骨骼映射正确(无 Unmapped Bones)
  • T-Pose 姿势正确(非 A-Pose 偏移)
  • 材质未丢失(黑色模型检查)
  • 贴图未错位(UV 范围 0-1)

3. 骨骼映射

nmapped Bones) - [ ] T-Pose 姿势正确(非 A-Pose 偏移) - [ ] 材质未丢失(黑色模型检查) - [ ] 贴图未错位(UV 范围 0-1)

3. 骨骼映射### VRM → Unity Humanoid 标准映射

VRM 骨骼名 Unity Humanoid 骨骼
hips Hips
spine Spine
chest Chest
upperChest UpperChest
neck Neck
head Head
leftEye LeftEye
rightEye RightEye
jaw Jaw
leftShoulder LeftShoulder
leftUpperArm LeftUpperArm
leftLowerArm LeftLowerArm
leftHand LeftHand
leftThumbProximal Left Thumb Proximal
leftThumbIntermediate Left Thumb Intermediate
leftThumbDistal Left Thumb Distal
leftIndexProximal Left Index Proximal
leftIndexIntermediate Left Index Intermediate
leftIndexDistal Left Index Distal
leftMiddleProximal Left Middle Proximal
leftMiddleIntermediate Left Middle Intermediate
leftMiddleDistal Left Middle Distal
leftRingProximal Left Ring Proximal
leftRingIntermediate Left Ring Intermediate
leftRingDistal Left Ring Distal
leftLittleProximal Left Little Proximal
leftLittleIntermediate Left Little Intermediate
leftLittleDistal Left Little Distal
leftUpperLeg LeftUpperLeg
leftLowerLeg LeftLowerLeg
leftFoot LeftFoot
leftToes LeftToes
(右侧同理) (Right 前缀)
werLeg` LeftLowerLeg
leftFoot LeftFoot
leftToes LeftToes
(右侧同理) (Right 前缀)
问题 原因
:--- :---
部分骨骼 Unmapped VRM 使用了非标准骨骼名
手指骨骼缺失 VRM 模型不包含手指骨骼
T-Pose 偏移 导入时未正确识别标准姿态
Hips 高度异常 Root 与 Hips 未分离

4. 材质转换

MToon 材质说明

VRM 使用 MToon 着色器,导入后可能出现以下问题:

问题 原因 解决方案
面部过暗/过曝 Unity GI 与 UniVRM 烘焙逻辑不同 调整 Shading Grade Map 或关闭 Receive GI
法线朝内(模型变黑) DirectX/OpenGL 法线规范差异 Inspector 勾选 Fix Normals
背面消失 MToon 依赖 Stencil 渲染背面 开启 Cull Off 或分离背面
轮廓线异常 VRChat 对 Stencil 支持不稳定 改用 Vertex Extrusion 或 Z-Offset

推荐 Shader 替换

原始 Shader 推荐替换 说明
MToon(PC 用) Poiyomi Toon 功能更丰富,PC 高质量
MToon(Quest 用) LilToon 轻量移动端优化
MToon(保持原样) MToon(最新版) 最简单,但功能有限

5. 物理系统转换

SpringBone → VRCPhysBone

VRM 的 SpringBone 需要转换为 VRChat 的 VRCPhysBone:

VRM SpringBone VRCPhysBone 说明
m_stiffnessForce Stiffness 刚度
m_gravityPower Gravity 重力
m_dragForce 无直接对应 通过 Pull + Spring 组合模拟
m_springForce Spring 弹力
m_hitRadius Radius 碰撞半径
m_center Root Transform 中心骨骼
碰撞球体 VRCPhysBoneCollider 转换碰撞体

转换要点

  1. 保留 SpringBone 原始参数作为 PhysBone 的初始参考值
  2. 必须添加碰撞体(VRM 碰撞球体 → VRCPhysBoneCollider)
  3. 调整 Integration Type 为 Stable(VRM 默认不使用 Verlet)
  4. 检查 Limit 角度(VRM 无角度限制,需手动设置)

6. BlendShape 转换

tegration Type 为 Stable(VRM 默认不使用 Verlet) 4. 检查 Limit 角度**(VRM 无角度限制,需手动设置)

6. BlendShape 转换### VRM BlendShape → VRChat 表情

VRM BlendShape VRChat 对应 转换方式
joy Happy Animator 参数映射
angry Angry Animator 参数映射
sorrow Sad Animator 参数映射
fun Surprised Animator 参数映射
blink 自定义 Bool FX Layer Toggle
blink_l / blink_r 自定义 Bool 独立控制左右眼
a / i / u / e / o Viseme Lip Sync 参数

转换方法

  1. 在 Animator 中为每个 BlendShape 创建 State
  2. 使用 BlendShape 驱动参数
  3. 通过 Expression Parameters 和 Menu 控制

7. 导入后优化流程

1. UniVRM 导入 .vrm → Prefab
2. 检查 Rig = Humanoid + 骨骼映射
3. 检查材质 + 贴图(无黑色/错位)
4. 检查 UV 范围(≤ 1.0)
5. 转换 SpringBone → VRCPhysBone
6. 添加 VRCPhysBoneCollider
7. 配置 VRC_AvatarDescriptor
8. 配置 Animator 图层
9. 配置 Expression Parameters + Menu
10. 检查性能评级 → 优化