VRM版本转换: 1.0转0.x,也能转回来

拖入一个.vrm,得到另一个版本。VSeeFace只读取0.x,一些较新的软件需要1.0。几何体不变;表情、弹簧骨骼和元数据按另一个版本的规范重写,页面会列出没能保留的内容。

能带过去的和带不过去的

能带过去

  • · 每一个网格、每一根骨骼和每一份权重,两个版本规范一致的部分逐字节保留
  • · 表情,在两套命名规则之间重命名
  • · 弹簧骨骼和碰撞体
  • · 元数据和许可协议,在两套字段之间对应转换

带不过去

  • · 一个版本有、另一个版本没有的字段:列在结果下方
  • · 目标版本没有定义的约束和视线(LookAt)类型

怎样切换VRM的版本

  1. 拖入.vrm。页面会读取它的版本,并提供另一个版本。
  2. 转换器在我们的服务器上重写虚拟形象扩展,并把模型转到目标版本要求的朝向。
  3. 预览结果,看一下哪些内容没有保留,然后下载文件。两个文件都会在3天后删除。

为什么两个版本不能混用

VRM 0.x和1.0用不同的扩展存储同一个虚拟形象,表情名称和许可协议字段都不一样,在glTF空间里骨骼的朝向也正好相反。为其中一个版本写的软件,读另一个版本时要么读成乱码,要么根本读不出来。VSeeFace、VNyan和大多数较早的软件读取0.x;VRoid Studio从2023年起默认导出1.0,所以刚导出的VRoid模型在VSeeFace里打不开。

手动转换时最容易忽略的是朝向:不转半圈,虚拟形象就会背对镜头站着,每个动画片段都会镜像播放。

会保留下来的内容

几何体、骨骼、权重、贴图和材质都不改动。表情会重命名,弹簧骨骼和碰撞体会重写,许可协议会对应到另一套字段上。目标版本没有对应字段的内容都会列在结果下方,下载之前就能知道。

问题

VRoid导出的模型在VSeeFace里打不开。

那是1.0文件,而VSeeFace读取0.x。在这里转换一下就能打开。

软件需要1.0,我的模型是0.x。

同一个页面也能反向转换:拖入0.x文件即可。

会丢失什么?

只有目标版本无法表达的字段,结果里会列出来。几何体和贴图从不改动。

我的文件是哪个版本?

拖到VRM查看器或这里:两者都会读取文件声明的版本并显示出来。

我手上是FBX或GLB,不是VRM。

那要先在FBX转VRM转换器上转换为VRM;这个页面只改变已经是VRM的文件的版本。

我的文件会怎样处理?

上传、重写,保留3天用于预览和下载,之后删除。

还不是VRM?

已绑定骨骼的FBX、GLB或.blend可以在FBX转VRM转换器上变成VRM;VRM可以在VRM转FBX转换器上变成用于引擎的FBX。