如何在three.js中进行几何体合并后访问单个形状几何体?

时间:2013-05-28 21:48:49

标签: three.js

假设我有100种不同的形状几何形状,我已合并使用:

THREE.GeometryUtils.merge(geometry1, geometry2)

我是否仍然能够更新单个形状的几何形状而不是所有形状的几何形状?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以a)记下每个几何体的顶点偏移(即合并最新的几何体之前已经在合并的几何体中有多少个顶点),然后使用它仅循环并修改某个几何体或b)如果每个人都有一个杰出的材料,你可以遍历所有的面,并限制你修改那些附加到具有正确材料的面的顶点。

然而,由于它仍然是一个大的几何形状,无论你编辑多少,你都会将整个事物推向GPU。如果你只是偶尔修改它,它可能无关紧要,但在这种情况下,你应该检查一下你是否可以通过重新合并整个事物来获得足够的性能而不用担心任何更复杂的事情。

如果您确实只需要将修改后的数据推送到GPU,则存在void bufferSubData(GLenum target, GLintptr offset, ArrayBufferView data)函数。但是,这是原始的WebGL,你需要深入到three.js的内部,以便修补它。