如何在gltf中指定网格上的面?

时间:2019-08-20 23:10:06

标签: three.js gltf

我希望能够引用glTF文件中特定网格上的特定面。但是,我对基元的概念感到困惑。通常,我将使用人脸索引(即在three.js中),并且始终能够引用同一人脸。但是,有时glTF中的网格具有多个基元。这些使用相同的面部缓冲区吗?他们至少使用连续的面部缓冲区吗?我想知道我是否可以仅使用一个数字(即,面索引)来引用网格中的面,或者是否还需要使用基本索引。

网格图元共享一个顶点池吗?

1 个答案:

答案 0 :(得分:2)

单个网格中的两个glTF基本体可能与两个glTF网格(每个都包含一个基本体)相关或无关。两个原语可能具有:

  • 相同的顶点属性,但索引不同。
  • 相同的顶点属性和索引,但材质不同。
  • 没有共享的顶点属性或索引
  • 完全不同的绘制模式(点,线,三角形...)

因此,除非您完全控制要加载的文件,否则默认和最安全的假设是将每个基本体视为完全独立的网格。如果您要检查更具体的情况(例如上面的前两个项目符号),则可以随时将其添加为以后的优化。

如果将glTF文件加载到threejs中,则每个基元将在公用<div class="something" id="thing"></div> <a><i class="some-icon" id="iconA"></a></i> <a><i class="some-icon" id="iconB"></a></i> </div> <div class="something" id="thing"></div> <a><i class="some-icon" id="iconA"></a></i> <a><i class="some-icon" id="iconB"></a></i> </div> 下变成单独的THREE.Mesh

有关更多详细信息,请参见glTF specification section on Meshes