# VRM 开发相关

- [programming(面向开发者，暂无翻译)](https://vrm.dev/api/)

### **VRM 的特征 (面向开发者)**

- `vrm-0.x` `vrm-1.0` 右手坐标系（Y-UP）➡️ [Coordinate(面向开发者，暂无翻译)](https://vrm.dev/api/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` 在初始姿势下保证无旋转、缩放➡️ 可减轻考虑初始姿势的代码编写负担。

<p class="callout info">**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](https://docs.vrcd.org.cn/books/vrm-vrm/page/vrm-10)  
 •[VRM Animation](https://docs.vrcd.org.cn/books/vrm-vrm/page/vrm-animation-vgc)  
为了支持 VRM-1.0，需要实现 FK 的重定位功能。与VRM-0.x（仅替换每个骨骼的 rotation 旋转数据 ）相比，RunTime 的实现难度稍高。  
 •[关于姿势数据的兼容性（面向开发者，无翻译）](https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm_animation-1.0/how_to_transform_human_pose.ja.md)</p>

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

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

### **在 UniVRM 中运行时加载**

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

- [runtime load（面向开发者，无翻译）](https://vrm.dev/api/runtime-import/)

### **在 UniVRM 中运行时导出**

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

- [samples（面向开发者，无翻译）](https://vrm.dev/api/sample/)

`Assets/VRM.Samples/Scenes/VRMRuntimeExporterSample.unity`

上面就是一个例子。

### **UniVRM 以外的处理的 VRM 的方法**

[showcase](http://localhost:3000/showcase/?flags=8)

- [https://github.com/ruyo/VRM4U](https://github.com/ruyo/VRM4U)
- [https://github.com/saturday06/VRM\_IMPORTER\_for\_Blender](https://github.com/saturday06/VRM_IMPORTER_for_Blender)
- [https://github.com/virtual-cast/babylon-vrm-loader/](https://github.com/virtual-cast/babylon-vrm-loader/)
- [https://github.com/pixiv/three-vrm/](https://github.com/pixiv/three-vrm/)
- [https://github.com/V-Sekai/godot-vrm](https://github.com/V-Sekai/godot-vrm)