图元 ID,如果多次使用同一个网格则不是唯一的

Primitive ID, not unique if the same mesh is used more than once

我正在使用 OptiX 开发热工具。 我从使用 syoyo 的 tinygltf loader 的 "meshviewer" 示例开始。 基本上我想导入一个文件,获取图元的数量,然后将交点相加。

现在我导入了一个包含两个立方体的文件,每个立方体应该由 12 个三角形组成,所以总共 24 个。当我启动我的程序时,加载程序只能识别 12 个三角形,但它会呈现 2 个独立的立方体。两个立方体的原始 ID 似乎相同。

从搅拌机导出时有解决方法吗?如果我直接理解文档,那么单独的立方体将被视为同一网格的两个 "identical" 实例,因此共享原始 ID。 我正在使用带有 gltf 导出器的 Blender v2.81。

我对问题的理解是否正确?有没有简单的解决方法?如果不是,看来我将不得不修改 tinygltf 加载程序。

提前感谢您的帮助!

这两个立方体可能共享同一个网格。在下面的屏幕截图中,有两个 Blender "objects"、Left-CubeRight-Cube。两个对象使用相同的 Blender 网格,称为 Shared-Cube-Mesh.

glTF 导出器识别此模式并将其镜像到 glTF 文件中。将有两个 glTF 节点,对应于使用网格的两个 Blender 对象。但是只有一个 glTF 网格,一个立方体。

您可以单击 "number of users" 按钮(如下图所示,带有指向它的白色箭头),使第二个对象使用其自己的独特网格。但请注意,在这个简单示例中,这会使导出到 glTF 的网格数据量增加一倍。网格的完整副本将在 Blender 和 glTF 二进制有效负载中制作。