【问题标题】:BufferGeometry offsets and indicesBufferGeometry 偏移量和索引
【发布时间】:2014-07-19 20:43:40
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: javascript three.js indices buffer-geometry


    【解决方案1】:

    定义几何的方法有两种:

    非索引

    "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 ]
    

    根据偏移量...

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

    【讨论】:

    • 太棒了,谢谢!这样的数字有意义吗?假设我们构建了一个平面,那么非索引将是 [0,0,0, 0,1,0] [0,0,1, 0,0,1],对吗?那么这些数字在索引时会如何/可能会如何? (您可以将其编辑到您的帖子中吗?)此外,我可以定义多个偏移量,例如画飞机的每一秒“线”?
    • @Doidel 我尝试使用简单的平面几何来修改答案,但我认为它更令人困惑。
    • @Doidel 您确实可以绘制多个偏移量,但请记住,每个偏移量都是一次绘制调用,因此您不想做很多这样的事情。它倾向于用于多材料的东西。
    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 2018-10-09
    • 2021-07-29
    • 2017-11-04
    相关资源
    最近更新 更多