教程教程阅读约 5 分钟

VRM 转 FBX、GLB 转 FBX 及反向转换: 保留动画的 3D 格式转换工具

在浏览器中把任何 3D 模型转换为 GLB、FBX、USDZ、OBJ 或 STL,保留它的骨架、蒙皮权重、每个关键帧和面部形状。

afk.ai/rig/convert
把 VRM 拖到 afk.ai/rig/convert 上:它的预览、选择 FBX、FBX 会保留什么,以及转换后的文件。等待过程已加速。 模型:VRoid Studio 的 AvatarSample_C,由 pixiv 制作。

afk.ai/rig/convert 能把 3D 模型转换成另一种文件格式,同时不丢失让它动起来的东西。拖入一个 VRM,就能得到一个 Unity 能识别为已绑骨角色、并带有面部形状的 FBX。拖入一个带动画的 FBX,就能得到一个用于网页的 GLB。骨架、蒙皮权重和每个动画的每个关键帧都原样保留。

它能转换什么

它能读取 VRM 0 和 1.0、GLB、glTF(连同它的文件,或者打包在 ZIP 中)、FBX、OBJ、STL、PLY、USD 和 USDZ,最大 150 MB。它能写出五种格式,每种格式能保存的模型内容各不相同。转换之前,页面会告诉你是哪些。

格式保留舍弃
GLB骨架、权重、每个动画、面部形状、材质和纹理只有 VRM 独有的附加内容
FBX同上,每个动画各是一个独立的 take只有 VRM 独有的附加内容
USDZ骨架、权重、面部形状和一个动画其他动画:USDZ 只能保存一条时间轴
OBJ网格、材质和纹理,打包在 ZIP 中骨架、动画和面部形状
STL形状,按实际尺寸以毫米为单位其他一切,包括颜色和纹理

怎样把 VRM 转换为用于 Unity 的 FBX

  1. 打开 afk.ai/rig/convert 并登录。
  2. 拖入你的 VRM。它会像在 VRM 应用中那样在预览里播放:头发摆动,表情可以逐个试。
  3. 选择 FBX。页面会针对这个模型列出 FBX 会保留什么、改变什么、舍弃什么。
  4. 转换为 FBX。文件在我们的服务器上生成,并自动下载。一个 VRoid 模型只要几秒;数百个动画则要几分钟。
  5. 导入 Unity。把 FBX 拖进 Assets。在它的 Rig 标签页中,把 Animation Type 设为 Humanoid,然后点击 Apply。
afk.ai/rig/convert,选择了 FBX:VRM 转 FBX,以及它会保留、改变和舍弃的内容

VRM 转 FBX

afk.ai/rig/convert,选择了 FBX:带动画的 GLB 转 FBX,以及它会保留、改变和舍弃的内容

带动画的 GLB 转 FBX

afk.ai/rig/convert 会针对你拖入的模型,列出 FBX 会保留、改变和舍弃什么:这里分别是 VRM 格式的 AvatarSample_C,以及带五个动画的 GLB。

VRM 会发生什么变化

VRM 是一个带有附加内容的 glTF,这些附加内容只有 VRM 应用才能读取。转换工具会保留其他软件能用的一切,并把其余部分变成它们能用的东西。

  • 表情:变成以表情命名的面部形状(混合形状),比如 Joy、Angry 和 Blink。Unity、Unreal、Blender 和 three.js 都能驱动它们。
  • 弹簧骨骼:头发和衣服的摆动会以关键帧的形式烘焙进模型的动画,效果和 VRM 应用中播放的一样。VRM 本身没有动画,所以先在 afk.ai 上给它加一些。
  • 卡通着色:变成使用相同纹理的普通受光材质。如果是 GLB,你也可以要求改成平涂的无光照材质。
  • 朝向:VRM 0 在大多数软件中是背对着的,所以会把它转过来面朝前方。
  • 舍弃:只有 VRM 应用才读取的内容,比如它的骨骼标签、视线跟随、第一人称设置和作者信息。

我们转换了 VRoid Studio 的 AvatarSample_C。13.1 MB 的 VRM 变成了一个 10.5 MB 的 FBX,101 根骨骼、18,347 个顶点、14 个材质及其纹理全部保留,并且面朝前方。它的 14 个表情变成了名为 Neutral、Joy、Angry、Sorrow、Fun、Surprised、Blink 以及嘴型 A、I、U、E 和 O 的形态键,和 VRoid 生成的 54 个面部形状放在一起。

  • AvatarSample_C 的 Neutral 表情Neutral
  • AvatarSample_C 的 Joy 表情Joy
  • AvatarSample_C 的 Angry 表情Angry
  • AvatarSample_C 的 Surprised 表情Surprised
转换工具预览中的 JoyVRM,在 afk.ai 上
同一张脸,作为转换后 FBX 的形态键显示在 Blender 中FBX,在 Blender 中
VRM 的四个表情在转换工具预览中的样子,以及其中一个在转换后的 FBX 中、用 Blender 打开的样子:一个以它命名的形态键。 模型:VRoid Studio 的 AvatarSample_C,由 pixiv 制作。

每个关键帧,逐帧不差

转换工具常常会对动画重新采样、简化曲线,或者让动画晚一帧开始。这个工具不会。每个动画的每个关键帧都落在原来的位置,每个动画都保留自己的面部动作,而且都从零时刻开始,和原文件一样。

FBX 中的每个动画各是一个独立的 take,每根骨骼的每一帧都会写出来,没有任何简化。我们以每秒 240 次的频率对每根骨骼采样来测量。一个 GLB 转成 FBX,再把这个 FBX 转回 GLB,每一步都与转换前的文件相差不超过 0.002 mm 和 0.05 度。

我们在同一个模型上用 afk.ai 的五个动画试过:一个 7.2 MB 的 GLB 在几秒内变成了 29.3 MB 的 FBX。每个动画都是一个独立的 take,每秒 120 帧,每一帧都有关键帧,每个动画里都有头发和外套下摆的摆动。

代价就是 FBX 文件很大。把 afk.ai 全部 193 个免费动画放到一个角色上,生成的 FBX 约 230 MB,需要几分钟。

  • Dance Groove
  • Jumping Jacks
  • Run Anime
转换后 FBX 的三个 take,在 Blender 中渲染:动画保持原样,头发和外套的摆动已烘焙在内。 模型:VRoid Studio 的 AvatarSample_C,由 pixiv 制作。

在 Blender、Unity、Unreal 和 Godot 中使用

  • Blender:依次选择 File、Import、FBX。每个 take 都会导入为一个 Action,面部形状则导入为形态键。
  • Unity:把 Rig 标签页设为 Humanoid。每个 take 都是一个动画片段,面部形状是 Skinned Mesh Renderer 上的混合形状。
  • Unreal Engine:作为 Skeletal Mesh 导入,并开启 Import Morph Targets 和 Import Animations。
  • Godot 和 three.js:GLB 可以直接加载。
  • Apple 设备:USDZ 可以在 Quick Look 和 Reality Composer 中打开。
  • 3D 打印:STL,按实际尺寸以毫米为单位,或者 OBJ。
Blender 的 Shape Key Editor 列出 Neutral、A、I、U、E、O、Blink、Blink_L、Blink_R、Angry、Fun、Joy、Sorrow 和 Surprised,脸上显示的是 Joy

VRM 转出的 FBX:14 个表情变成形态键,Joy 设为 1

Blender 中打开的带动画 FBX:骨架正跳到一半,Outliner 中有五个动作,Action Editor 中每一帧都有关键帧

带动画的 GLB 转出的 FBX:五个 take,每帧都有关键帧,120 fps

在 Blender 5.2 中打开的两个 FBX 文件。 模型:VRoid Studio 的 AvatarSample_C,由 pixiv 制作。

你的模型,任何格式

你在 afk.ai/rig 上绑骨的模型也能以这五种格式下载:带你勾选的动画的 GLB 或 FBX,带一个动画的 USDZ,以及静止的 OBJ 或 STL。你转换过的模型会保存在这个浏览器的 Your Models(我的模型)中,以后可以再用另一种格式下载。你也可以用那里的 + 按钮添加你自己的任何模型,并以任何格式下载。

常见问题

怎样把 VRM 转换为 FBX?

把 VRM 拖到 afk.ai/rig/convert,选择 FBX,然后点击 Convert to FBX。它的骨架、蒙皮权重和纹理都会保留,表情会变成面部形状。

转换会保留我的动画吗?

会。在 GLB 和 FBX 中,每个动画的每个关键帧都会保留。USDZ 只能保存一个动画,所以只保留第一个。OBJ 和 STL 保存的是静止的模型。

我 VRM 的表情在 Unity 中能用吗?

能,作为混合形状使用。每个表情都会变成一个以它命名的面部形状(Joy、Blink、Angry),放在 Skinned Mesh Renderer 上,可以直接用脚本或动画来驱动。

会保留头发物理吗?

会把它烘焙进去。FBX、GLB 和 USDZ 文件无法携带弹簧骨骼,所以摆动会以关键帧的形式写进每个动画,效果和 VRM 应用中播放的一样。在你的引擎中,它无需设置物理就能播放。

能把 FBX 转换为 GLB,或者把 GLB 转换为 FBX 吗?

能,两个方向都可以,也能从 OBJ、STL、PLY 和 USDZ 转换。不支持 Collada(.dae)。

能转换为 VRM 吗?

暂时还不能。VRM 导出(带面部追踪和物理效果)即将推出。

为什么我的 FBX 这么大?

这里生成的 FBX 会保留每根骨骼的每一帧,所以动作是精确的。数百个动画就会有数百 MB。少选一些动画,或者使用小得多的 GLB。

免费吗?

免费,用免费账号即可:每天 10 次转换。文件最大 150 MB。

给你的模型绑骨、做动画

AI 在你的浏览器中为它绑骨,然后数百个动画就能在它身上播放。下载一个 GLB,任何引擎都能用。

给模型绑骨

更多教程