我在这里有一个小问题。我有一个THREE.Line对象,具有材质和几何形状。 init方法将2个顶点推入几何体,将“线”添加到场景中,线呈现得很好。

但是我有一个事件侦听器...在画布上的每次单击都会添加另一个顶点。但是,当渲染场景时,仅渲染原始2个顶点。我已经输出了scene.children的转储文件,并且确定Line在场景中,并且几何形状已经更改。

在文档中,它说明了有关应用的内容:

geometry.dynamic = true
geometry.verticesNeedUpdate = true


但是这些也不起作用。

最佳答案

请参阅three.js Wiki:https://github.com/mrdoob/three.js/wiki/Updates


  您只能更新缓冲区的内容,不能调整缓冲区的大小
  (这是非常昂贵的,基本上等同于创建新的几何体)。
  
  您可以通过预先分配更大的缓冲区来模拟调整大小,然后
  保持不需要的顶点折叠/隐藏。


通过具有固定大小的顶点缓冲区对象指定几何形状。您可以创建和删除缓冲区,但不能调整它们的大小。

解决方法是,创建具有额外顶点的几何并将不想要的顶点折叠到单个点中。

three.js r.52



编辑:Drawing a line with three.js dynamically中描述了一种更新的方法。

10-07 14:15
查看更多