使用Three.js制作大量2d矩形的最佳方法是什么?

时间:2014-04-24 00:18:26

标签: three.js webgl

Three.JS noob在这里尝试进行2D可视化。

我使用d3.js进行涉及数千个节点(矩形)的交互式可视化。毋庸置疑,动画期间存在性能问题,因为浏览器必须为这10,000个节点中的每一个创建一个svg DOM元素。

我希望使用WebGl重新创建相同的可视化,以便利用硬件加速。

现在ThreeJS是一个我选择的图书馆因为它的受欢迎程度(顺便说一句,我确实看过PixiJS,它的api并不吸引我)。我想知道在three.js中做二维图形的最佳方法是什么。

我尝试为每个矩形创建一个PlaneGeometry。但似乎有10万个平面几何形状不是要去的(动画变得超级慢)。

我可能遗漏了一些东西。我只需要知道创建2d矩形的最佳原始方法是什么,并且仍然唯一地识别它们,以便我可以在绘制后与它们进行交互。

感谢您的帮助。

编辑:你们是否建议任何机会使用另一个图书馆?

1 个答案:

答案 0 :(得分:1)

我认为你在观察WebGL时走在正确的轨道上,但根据你在可视化中所做的事情,你可能需要更接近金属,而不是“开箱即用”的三个。

我建议您查看GLSL并了解如何使用顶点和片段着色器实现可视化。你仍然可以在很多WebGL管道中使用threejs。

您可能需要直接进入GLSL着色器工作的原因是因为您希望从javascript中获取大部分多边形操作逻辑,至少尽可能多。任何时候你都要求js对成千上万的多边形进行紧密循环以更新位置等等......你将很难使用CPU。

使用js将数据参数传递给着色器并让顶点操作发生在那里会更加高效。

看看这里:http://www.html5rocks.com/en/tutorials/webgl/shaders/是一个很好的着色器教程。