gltf 存储细节
警告
进行 import、export 时需要注意。
glTF: z+ forward
模型应存储为 Z轴 正方向朝前。
VRM0 | VRM1 | |
forward | z- | z+ |
right | x+ | x- |
在将 vrm-0.x 转换为 vrm-1.0 时,请绕Y轴进行180度的旋转。
Vector3 vrm0;
var vrm1 = new Vector3(-vrm0.x, vrm0.y, -vrm0.z);
glTF: divided vertex buffer
停止共享 bufferView 之间的 primitive。
VRM0 | VRM1 | |
---|---|---|
bufferView | shared(共享) | divided(分割) |
优点 |
接近游戏引擎内存布局,转换较少 | 可用一般的 glTF 加载程序加载 |
缺点 | 在除UniVRM之外的glTF加载器中,内存使用可能激增(虽然可以加载,但顶点缓冲区中可能会出现未使用区域) | 在导出时,可能会增加顶点并改变顺序。在导入时需要费力合并。处理morphTarget较为繁琐。 |
在将 vrm-0.x 转换为 vrm-1.0 时,请绕Y轴进行180度的旋转。
例:
prim0 | prim1 | |
---|---|---|
position | 100 | 100 |
index | 0..100 | 0..100 |
👇
prim0 | prim1 | ||
---|---|---|---|
position | 100 | 100 |
バッファーが連結されている 【连接缓冲区】 |
index | 0..100 | 100..200 |
実装
不要在Vrm
专用的gltfPrimitive之间共享缓冲区加载程序,一般的glTF
加载程序没有问题。