Skip to main content

VRM 开发相关

VRM 的特征 (面向开发者)

  • vrm-0.x vrm-1.0 右手坐标系(Y-UP)➡️ Coordinate(面向开发者,暂无翻译)
  • vrm-0.x vrm-1.0 以m(米)为单位➡️你不用担心1代表是1米还是1厘米。
  • vrm-0.x vrm-1.0人型模型且骨骼结构已固定 ➡️ 便于使用通用的人型动作和动作捕捉技术。
  • vrm-0.x vrm-1.0 T-Pose(0.x Z- 1.0 Z+)为初始姿势 ➡️ 可直接用于 TPS/第三人称射击游戏 等用途。
  • vrm-0.x 在初始姿势下保证无旋转、缩放➡️ 可减轻考虑初始姿势的代码编写负担。

TIP:
从技术角度讲,VRM-0.X 是通过预先烘焙好的 T-Pose 来实现 FK(正向运动学) 的 humanoid motion 共享机制。
T-Pose bake 在 Vrm-0.X 中称为 正规化/规范化。
VRM-1.0 是通过 未烘焙(baked) 的 T-Pose 来实现 humanoid motion 共享的机制。因此,VRM-Animation 补充了不同 T-Pose 之间的 retarget(重定位) 方法。
       •VRM 1.0
       •VRM Animation
为了支持 VRM-1.0,需要实现 FK 的重定位功能。与VRM-0.x(仅替换每个骨骼的 rotation 旋转数据 )相比,RunTime 的实现难度稍高。
       •关于姿势数据的兼容性(面向开发者,无翻译)

  • vrm-0.x 保证了在初始姿势下,骨骼和网格会完全重合(蒙皮绑定矩阵中仅包含移动变换)➡️ 可以在处理 Mesh 前减少 Bake 等操作的负担。
  • (日英两种语表达含义互相冲突,没法翻译,本句留空。)
  • vrm-0.x vrm-1.0 表情、视线的控制方式进行了统一➡️BlendShapeProxy(面向开发者,无翻译)
  • vrm-0.x vrm-1.0 预设了非基于物理的晃动效果 ➡️ 在不干扰物理模拟的情况下实现晃动,不会乱动或干扰游戏机制。
  • vrm-0.x vrm-1.0 包含了 VR 的相关设置➡️FirstPerson(面向开发者,无翻译)
  • vrm-0.x vrm-1.0 可以在文件内写入许可证信息➡️避免使用在不符合模型作者意愿的地方。

与传统游戏开发不同,VRM 更适用于在运行时动态加载,而不是将其作为项目资产提前打包或加载。

在 UniVRM 中运行时加载

可以在运行时使用 UniVRM 加载功能。UniVRM 不创建 Asset(Prefab),而是直接在场景上创建 GameObject。加载的 GameObject 可以像安装的 Prefab 一样处理。

在 UniVRM 中运行时导出

可以在运行时使用 UniVRM 导出功能。您可以使用此功能实现角色创建工具。

Assets/VRM.Samples/Scenes/VRMRuntimeExporterSample.unity

上面就是一个例子。

UniVRM 以外的处理的 VRM 的方法

showcase