我需要选择性地显示/隐藏1000多种不同大小,位置和颜色的线条。

我的第一次尝试是创建一个THREE.Geometry,每个都有一个名称。为了隐藏/显示,我遍历场景,并根据名称和启发式在每个场景上隐藏/显示。这似乎非常慢-大约1000线大约50Hz。

我使用类似的方法进行了测试,但仅使用单个THREE.Geometry来保存所有行。那快得多,但是当然可以,但是我只能将一种材料应用于所有行,这不好。虽然我可以设置正确的标志并在应用程序运行时更新行的位置。

最好的方法似乎是使用THREE.BufferGeometry。我进行了一个非常快速的测试,并且可以按预期进行初始设置,但是此后我无法更改每行的位置/可见性和颜色。我做了一个JS小提琴来说明它-http://jsfiddle.net/SSnKk/-但调用buffer_geometry.dynamic = true;buffer_geometry.verticesNeedUpdate = true;似乎没有帮助。

最佳答案

你需要打电话

buffer_geometry.attributes.position.needsUpdate = true;
buffer_geometry.attributes.color.needsUpdate = true;


更新的小提琴:jsfiddle.net/hjx3rLmt/1

three.js r.76

关于three.js - 修改THREE.BufferGeometry对象中的顶点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16804705/

10-13 06:26