4

我只是想知道“偏移”和“索引/索引”到底是什么。例如在https://github.com/mrdoob/three.js/blob/dev/src/core/BufferGeometry.js中提到了偏移量,在 IndexedGeometry 中提到了索引,但是我目前无法在开发树中找到它. 尽管索引似乎相当明显,尽管我可以深入研究代码为自己找出一些可能正确的答案,但我很想听到“官方”声明:)

谢谢!

4

1 回答 1

8

定义几何的方法有两种:

非索引

"vertices": [ 0, 1, 2,  3, 4, 5,  6, 7, 8,  ... ],
"normals":  [ 0, 1, 2,  3, 4, 5,  6, 7, 8,  ... ]

在这种模式下,每个三角形位置都是定义的,您不能重复使用数据。

triangle 0: [ 0, 1, 2,  3, 4, 5,  6, 7, 8 ]

索引

"indices":  [ 0, 1, 2, ... ],
"vertices": [ 0, 1, 2,  3, 4, 5,  6, 7, 8,  ... ],
"normals":  [ 0, 1, 2,  3, 4, 5,  6, 7, 8,  ... ]

在这种模式下,索引定义了数据的顺序。第一个三角形使用索引012。这些索引将用于获取verticesnormals数据:

triangle 0: [ 0, 1, 2,  3, 4, 5,  6, 7, 8 ]

索引的主要好处是可以重用数据并将更少的数据上传到 GPU:

"indices":  [ 0, 0, 0, ... ],
"vertices": [ 0, 1, 2,  3, 4, 5,  6, 7, 8,  ... ]

triangle 0: [ 0, 1, 2,  0, 1, 2,  0, 1, 2 ]

根据偏移量...

使用偏移量,您可以渲染几何体的特定范围。您可以从 to 绘制,而不是从triangle 0to绘制。triangle.lengthtriangle 200triangle 400

于 2014-05-30T09:03:40.857 回答