1

KhronosGroup glTF 2.0 规范要求为 POSITION 数组指定accessor.maxaccessor.min边界。但是,这些值必须表示为文本字符串,而顶点位置坐标存储为 base64 编码字符串中的单精度浮点数。

我遇到的问题是在线Khronos glTF 验证器和 Microsoft Visual Code 扩展(可能是 Khronos 验证器的一个端口)将这些值与 15 位小数(即双精度)进行比较,如果它们不存在则报告错误完全匹配。这使得调试大型 glTF 文件变得异常困难,因为它会导致数以万计的错误。

更重要的是,我想知道这些错误是否重要。我可以修改我的 glTF 文件生成器,以便可以将顶点位置坐标表示为文本字符串而不会出错,但这似乎是一个荒谬的解决方案。我在这里错过了什么吗?

4

1 回答 1

0

VSCode 扩展通过 npm 包使用实际的 Khronos glTF Validator,而不是端口。验证器是用 Dart 编写并转译为 JavaScript,VSCode 本身基于 Electron 和 TypeScript,并且可以并且确实将 JavaScript 作为其扩展的一部分运行。

验证器的作者在本期中谈到了混合/最大精度:

https://github.com/KhronosGroup/glTF-Validator/issues/79

验证器期望存储在 JSON 中的数字与存储在缓冲区中的数字在以相同精度处理时匹配(IEEE 单精度浮点数)。

然后,他为 OP 询问的 Ruby 语言提供了一个示例。

如果那里的解释与您所看到的不匹配,请向验证器提交新问题。谢谢!

于 2018-06-29T20:42:36.777 回答