VRM 是一种 3D 角色格式,由 3D 舞台渲染;Live2D 也走这条管线
3D 舞台跑在 WebGPU 上,在没有 WebGPU 的机器上自动改用 WebGL,并且运行在后台线程里,有助于减少复杂场景对界面响应的影响
VRM 0.x 与 VRM 1.0 模型都能加载,包括两者各异的 look-at 与表情约定,按对应版本的约定处理模型。.vrm 或 .glb 走的是和 Live2D 模型同一套 打开模型… 流程
内置虚拟形象
应用内置两个 VRM 虚拟形象:
| 形象 | 规格 | 许可协议 |
|---|---|---|
| Milky Green | VRM 1.0 | VRM Public License 1.0 |
| RAYNOS-chan | VRM 0.x | Sony Character EULA |
Milky Green 要求必须署名——LAPLACE Live! and Milky Green aka. 明前奶绿——Persona 会把它连同其他第三方声明一起显示在 关于对话框 里。模型自己的许可条款出现在信息区块的许可协议一行,作者要求署名时会被标出
相机
Live2D 模型是一块可以拖动和缩放的平面画布,而 VRM 坐落在一个带轨道相机的 3D 场景里:
| 手势 | 作用 |
|---|---|
| 拖动 | 环绕虚拟形象旋转 |
| 右键拖动 | 平移相机目标点,选中了项目时也一样 |
| Alt / ⌥ + 拖动 | 平移相机目标点 |
| 滚轮 | 推近或拉远 |
移动带缓动,惯性手感和 Live2D 舞台一致;仰角在抵达两极前就停住,相机因此永远不会翻过去。重置相机回到默认取景,这个取景由虚拟形象自己的包围盒推算而来,视场角则把镜头设在 10° 到 90° 之间。相机的位置也可以在舞台详情里输入或拖动调整——见 相机
相机属于 场景 而不属于模型,所以一个场景里的每个 VRM 共用同一台相机
摆放
虚拟形象本身的摆放独立于相机,以世界空间的米为单位,并带有移动、旋转和缩放的舞台手柄。它的位置区块里,X · Y · Z 字段旁是一个 3D 位置控件,旋转字段旁是一个旋转球——见 可视化控件
缩放范围是 0.05× 到 10×。弹簧骨骼物理会随模型一起缩放,所以缩小或放大过的虚拟形象,头发依然动得正确
待机行为
Persona 会为加载后的 VRM 应用待机动作,避免模型一直保持 T-pose:
- 待机动画——循环播放的身体动画,逐模型选择
- 眨眼——每 2–6 秒随机一次
- 呼吸——胸腔与脊椎的缓慢起伏
- 弹簧骨骼——头发与衣物的物理,直接来自模型自己的弹簧骨骼设置
待机动画位于选中模型的待机分区,旁边是选择动画…。它会打开 素材库 并收窄到动画,那里放着九段专门制作的待机循环:
站立 · 背手 · 叉腰 · 抱臂 · 倚靠 · 说话 · 坐姿 · 舞蹈 · 等待
那七段 动作片段 同样可以当待机用,你自己添加的任何片段也可以,包括 你自己录的。这九段专用待机循环可无缝衔接;其他片段的首尾可能不连续
因为这个设置是逐模型而不是逐场景的,同一个场景里的两个虚拟形象可以各摆各的姿势
追踪丢失时
待机分区里还有追踪丢失时,决定面部捕捉断掉的这段时间里,被捕捉驱动的那些参数怎么办:保持最后姿势冻在最后收到的那一帧上直到捕捉恢复,这是默认;回到待机用约 0.3 秒过渡到待机动画写的值,捕捉回来时再过渡回去
Live2D 模型 在这两项之外还能指定一个顶替用的动作,VRM 没有这一项
动作片段
Persona 内置了七段来自 pixiv VRoid Project 的 VRM Animation(.vrma)片段,在任何已加载的 VRM 上都能播——和 Live2D 动作不同,它们不绑定到某个模型:
展示全身 · 打招呼 · 比耶 · 射击 · 转圈 · 模特姿势 · 深蹲
每段片段都是一次性的:它在待机之上淡入,短暂保持最后一帧,然后缓和地回到待机,而不是硬切回去。眨眼会在正在播放的片段之上继续运行。片段出现在动作分区,正是 Live2D 动作组所在的位置
正在播放的那个按钮同时就是停止:再点一下让它按待机的淡入时间提前回到待机,而不必等它播完。自动化 停止时也走这条路,而不是硬切
它们同时也是 素材库 里动画下的行,和你自己添加的任何片段并列,点击其中一行就会在已加载的 VRM 上播放它作为预览
这个分区的顶部还有录制动作,把虚拟形象此刻的动作录成一段新的 .vrma——见 录制动作
导入动画片段
动画分类支持以下格式:.vrma、Mixamo 的 .fbx,以及 MMD 的 .vmd。Mixamo 和 MMD 片段在加载时重定向到 VRM 的人形骨骼上,此后和一段 .vrma 没有区别——当待机用,当一次性动作用,或者在素材库里点一下预览
整具骨骼里只有髋部会位移,而且位移量会按目标模型自己的比例换算,所以一段会走动的片段换到别的体型上,步幅依然合身。不含 Mixamo 骨骼的 .fbx 无法作为动画导入素材库
MMD 舞蹈会保留腿部 IK:Persona 按 VRM 自己的身体比例重新计算脚部和脚尖的 IK,让双腿跟上舞蹈的步伐。它终究是重定向到人形骨骼上,而不是 PMX 模型本身,所以 MMD 的物理不会带过来——头发和衣物仍由 VRM 自己的弹簧骨骼驱动
表情
表情分区列出模型的表情词汇——它的 1.0 预设名与自定义名,0.x 的预设名会被换算成 1.0 的对应名称。点一下应用,再点一下移除,和 Live2D 的表情 一样。面部捕捉 驱动的是同一批表情,麦克风口型同步 则驱动其中的元音预设 aa、ih、ou、ee 和 oh
每个已启用的表情下方都有权重滑块,范围为 1% 到 100%,用于调整表情强度。只有已启用的表情会显示滑块;要关闭表情,请再次点击对应按钮
把全部 52 个 ARKit blendshape 都做成表情的模型具备 perfect sync 能力,它由手机的原始 ARKit 数值一比一驱动,而不经过 Persona 推导出的信号。信息区块的完美同步一行会报出模型在这 52 个里占了几个
分区顶部的记住表情状态默认开启:你应用的表情连同它们的权重会随手保存,切回该模型或重启应用时恢复。VRM 没有 .vtube.json,所以写入的是模型文件旁的 <model>.persona.json 附属文件
服装
带有 LAPLACE_outfit 扩展的模型会在表情下方显示服装组。VRM 标准表情支持变形目标、材质颜色和贴图变换,但不支持网格显隐。此扩展为服装部件提供名称与显隐控制,适用于从 VRChat 等平台转换的模型。Persona 将各项作为表情处理,因此可使用按钮、权重滑块、附属文件保存和 插件 API
面部表情和服装分组显示,便于区分表情调整与换装操作
MToon 材质
多数 VRM 虚拟形象使用 MToon,也就是这套规范自带的卡通着色器。MToon 分区在作者烘焙好的基础之上做微调,逐模型实例生效:
| 控制项 | 范围 | 作用 |
|---|---|---|
| 阴影 | 0 – 1 | 阴影色显现得有多强 |
| 阴影偏移 | −1 – 1 | 移动亮部与暗部的分界 |
| 阴影硬度 | −1 – 1 | 这条分界有多硬 |
| GI 均衡 | −1 – 1 | 环境光把明暗压平到什么程度 |
| 法线强度 | 0 – 2 | 缩放法线贴图;0 会把表面细节完全抹平 |
| 边缘光 | 0 – 2 | 边缘光的强度 |
| 边缘光偏移 | −1 – 1 | 这道边缘从轮廓往里裹多深 |
| 边缘光菲涅尔强度 | 0 – 4 | 越高,这道边缘越贴着轮廓收紧 |
| 边缘光受光比例 | −1 – 1 | 0 是边缘光与材质捕捉都画成平的,1 是让它们跟着场景灯光走 |
| 材质捕捉 | 0 – 4 | 缩放材质捕捉——那层球面叠加的反射。作者没做材质捕捉的材质上无事发生 |
| 描边宽度 | 0 – 2 | 缩放作者设定的描边 |
| 描边受光比例 | −1 – 1 | 0 是描边保持自己的颜色,1 是让灯光给它染色 |
| 自发光 | 0 – 4 | 自发光的强度,留出余量把局部顶过 泛光 阈值 |
| UV 动画 | 0 – 4 | 缩放 UV 的滚动与旋转速度;0 会把一张动起来的贴图冻住 |
重置材质把每个滑块都退回中性值——每个倍率回到 1,每个偏移回到 0,模型就完全按作者做的样子渲染
姿态捕捉
VRM 带有人形骨骼,所以它还能通过 VMC 或 mocopi 自己的协议接收全身动捕的驱动——VSeeFace、Virtual Motion Capture、mocopi 以及其他发送端。Live2D 模型没有这样的骨架,因此这个分区只对 VRM 出现
摄像头 也能充当姿态来源,无需额外硬件:它的身体追踪带动躯干和双腿,手部追踪带动手臂和手指
VRM 上的快捷键
针对表情和动作的 虚拟形象快捷键 动作对 VRM 一样有效:表情按名字绑定,动作片段按它自己的文件绑定。替换模型则不挑格式——一个快捷键可以把某个图层从 Live2D 模型换成 VRM,也能换回来
自动化 也能对它指定的 VRM 图层执行同类操作——切换表情、播放动作、清除所有表情和替换模型——另外还有模型位置,可把虚拟形象移到保存好的摆放
头部、身体、视线和表情还可以直接绑给手柄,见 VRM 上的手柄目标
模型信息
展开信息即可看到加载进来的到底是什么,用的是 VRM 的词汇:
| 行 | 含义 |
|---|---|
| 来源 | 模型是内置的,还是你自己打开的 |
| 文件 | 加载的那个 .vrm,旁边带在文件夹中显示的按钮 |
| 规格 | VRM 0.x,或 1.0 规范的确切版本 |
| 骨骼 | 人形骨骼数量 |
| 弹簧骨骼 | 弹簧骨骼组数量——为零表示没有头发或衣物物理 |
| 表情 | 表情数量 |
| 完美同步 | 模型带有 52 个 ARKit blendshape 中的几个 |
| 作者 | 模型内嵌元数据里写明的作者 |
| 许可协议 | 许可协议的 URL,要求署名时会加上标记 |
| 加载耗时 | 舞台加载这个模型所花的真实时间 |
切换
VRM 是淡入淡出,而不是硬切,除非场景的 显示与隐藏 选了弹出或直接切换。这个淡变是屏幕空间的抖动——模型留在不透明渲染队列里,保持自己的深度排序;改用透明度淡变则会打乱这个排序,让你透过脸看进头的内部
在虚拟形象摆好姿势、面朝相机之前什么都不会渲染,所以舞台永远不会露出一个初始化到一半的模型
最后更新于 2026年9月20日