是否可以导出带有符号短“2 字节”而非浮点“4 字节”的 glTF 模型顶点、UV 和法线?

Is it possible to export glTF models vertices, UVs and normals with signed short "2 bytes", not float "4 bytes"?

我从 blender 导出了一个 glTF 模型,当我将 .bin 文件放入十六进制编辑器时,它的顶点、UV 和法线似乎是“4 字节”浮点数或 IEEE 754 浮点数,如下例所示.

是否可以导出顶点、UV 和法线中 short_signed 不是浮点数或仅“2 字节”而不是“4 字节”的 glTF 模型?

Example:

Vertices are in float:
X = 34 80 45 C2 ----short_signed----> xx xx
Y = C1 F9 65 42 ----short_signed----> xx xx
Z = 94 F6 76 41 ----short_signed----> xx xx

UVs are in float:
X = AD 69 0E 3F ----short_signed----> xx xx
Y = 5D FE 63 3F ----short_signed----> xx xx

Normals are in float:
X = 66 96 66 BF ----short_signed----> xx xx
Y = 56 66 DE 3E ----short_signed----> xx xx
Z = 00 00 80 3F ----short_signed----> xx xx

如果不可能,请给我任何方法将这个“4字节”的十六进制浮点数转换为“2字节”,并将其缩短? (IEEE 754 浮点 --------> signed short)

或者在顶点、UV 和法线中是否有另一种带有符号短或“2 字节”的模型格式?

提前致谢。

虽然 Blender 的导出器不能完全控制二进制数据布局,但 glTF 格式具有一定的灵活性,可以允许 uint16、int16 和其他数组类型。您可以使用执行量化的工具非常接近您要求的结果,gltfpack:

gltfpack -i input.glb -o output.glb -vn 14

自 gltfpack v0.14 起,默认法线为 int8;上面的 -vn 14 选项将其更改为 int16。默认顶点位置为 uint16,UV 为 int16。请注意,此工具还会交错顶点属性。