【问题标题】:Three.js - Updated geometry is not rendering changesThree.js - 更新的几何图形不会呈现变化
【发布时间】:2012-10-27 14:33:00
【问题描述】:

我在这里遇到了一个小问题。我有一个THREE.Line 对象,带有材质和几何形状。 init 方法将 2 个顶点推入几何体,将 Line 添加到场景中,线条渲染就好了。

但是我有一个事件监听器...画布中的每次点击都会添加另一个顶点。但是在渲染场景时,只渲染了原来的 2 个顶点。我已经输出了scene.children 的转储,并且我确定线在场景中,并且几何形状已经改变。

在文档中它说了一些关于申请的内容:

geometry.dynamic = true
geometry.verticesNeedUpdate = true 

但这些也没有用。

【问题讨论】:

标签: javascript 3d three.js


【解决方案1】:

查看three.js Wiki:https://github.com/mrdoob/three.js/wiki/Updates

您只能更新缓冲区的内容,不能调整缓冲区的大小 (这是非常昂贵的,基本上相当于创建新几何体)。

您可以通过预先分配更大的缓冲区来模拟调整大小,然后 保持不需要的顶点折叠/隐藏。

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

作为一种解决方法,您可以创建一个带有额外顶点的几何图形,并将不需要的顶点折叠成一个点。

three.js r.52


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

【讨论】:

  • 什么鬼。缓冲区的大小是否=它拥有的点数?缓冲区的大小与这里有什么关系?
  • 保持不需要的顶点折叠/隐藏的最佳方法是什么?由于顶点没有单独的visible 属性,也没有单独的 alpha 着色,它们是否只需要战略性地定位在另一个顶点上?
  • 现在 r72 有一个更优雅的解决方案 - stackoverflow.com/a/31411794/1027058
猜你喜欢
  • 2016-07-31
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
相关资源
最近更新 更多