首页 > 解决方案 > gltf 3D 模型的位置、法线、texcoords 和其他此类属性是否总是在同一个缓冲区中找到?

问题描述

我最近开始研究 gltf 文件,如果这个问题看起来很愚蠢,请原谅我。如果在同一个缓冲区中找到位置 texcoords 等,我可以毫无问题地解析文件并在我制作的 c++ 程序中显示模型。但是如果它们可以存储在不同的缓冲区中,那么我的代码逻辑将不起作用。我一直在查看一些存储在 gltf 文件中的 3d 模型样本,这个想法让我印象深刻,但我找不到任何将这些属性存储在不同缓冲区中的文件,所以我想也许它们不能存储在不同的缓冲区中。

标签: 3dgltf

解决方案


在 glTF 术语中,Buffer 是存储或传输的单元,可以是外部.bin文件或嵌入 GLB。缓冲区包含文件中的所有二进制数据——包括动画关键帧,您可能不想上传到 GPU。

每个缓冲区将包含一个或多个“缓冲区视图”,这些是上传到 GPU 的适当结构。包含顶点属性的缓冲区视图保证不包含其他类型的数据。但是单个网格的顶点属性可能会拆分为多个缓冲区视图。有几个原因,比如压缩,这可能是正确的选择。请参阅:缓冲区和缓冲区视图

如果您需要保证您的 glTF 文件遵循特定的顶点缓冲区布局,我建议您使用gltfpackgltf-transform等工具对文件进行预处理。


推荐阅读