我从 blender 导出了一个 glTF 模型,当我把 .bin 文件放到 hex 编辑器时,似乎他的顶点、UV 和法线都是 "4 字节 "浮点,或者 IEEE 754 浮点,就像下面的例子。
有没有可能导出glTF模型的顶点、UVs和法线都是short_signed不是float,或者只有 "2字节",而不是 "4字节"?
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个字节 "的float十六进制转换为只有 "2个字节",并使之成为短的? (IEEE 754浮点数------>有符号的短)
还是有其他的模型格式,顶点、UV和法线都是有符号的短,或者 "2字节"?
先谢谢你了。
虽然Blender的导出器并不能完全控制二进制数据布局,但glTF格式有一定的灵活性,允许使用uint16、int16等数组类型。你可以通过一个做量化的工具,得到很接近你要求的结果。gltfpack:
gltfpack -i input.glb -o output.glb -vn 14
从gltfpack v0.14开始,默认的法线为 int8;该 -vn 14
上述选项将其改为 int16. 默认情况下,顶点位置是 uint16紫外线是 int16. 请注意,该工具还可以交错顶点属性。