【问题标题】:Can I use an InterleavedBufferAttribute for indices?我可以将 InterleavedBufferAttribute 用于索引吗?
【发布时间】:2019-10-27 10:05:04
【问题描述】:

我有这个代码sn-p:

const geometry = new THREE.BufferGeometry();
const indices = new THREE.InterleavedBufferAttribute(...);
geometry.setIndex(indices); // this is invalid

最后一行导致编译器错误:

“InterleavedBufferAttribute”类型缺少“Bufferattribute”类型的以下属性:dynamic、updateRange、version、needsUpdate 等 12 个。

我什至可以使用InterleavedBufferAttribute 以某种方式设置我的索引吗?

附带说明:一般情况下,您可以使用交错数组作为索引吗?我的意思是语言无关。我从来没有见过一个。这显然不是主要问题,但我很感兴趣。

【问题讨论】:

  • 你对indices属性的交错有什么打算?它的项目大小为1,因此您甚至不能将 3 个索引打包在一起。查看example,了解如何在同一个缓冲区中打包不同类型的数据。
  • 不,一般情况下您不能交错索引。交错索引没有意义。

标签: typescript three.js


【解决方案1】:

不,一般情况下您不能交错索引。交错索引没有意义。

你会将它们与什么交错?

一般情况下,您会交错诸如位置、法线、纹理坐标、颜色之类的内容。而不是有 4 个属性和并行数组

position, position, position, position
normal, normal, normal, normal
uv, uv, uv, uv,
color, color, color, color

你有一个交错数组

pos,nrm,uv,clr,pos,nrm,uv,clr,pos,nrm,uv,clr,pos,nrm,uv,clr

现在来索引。假设我们正在制作四边形,所以有 4 个顶点 和 6 个指标。如何将 6 个索引与 4 个顶点交错?你不能

索引引用属性中的内容,它们本身不是属性。

【讨论】:

    猜你喜欢
    • 2020-02-13
    • 2017-07-31
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 2016-08-06
    相关资源
    最近更新 更多