three.js中数千行的性能问题

春冈

这是我的第一个问题,因此我希望它符合指导原则。还请原谅我的英语不好。

我目前正在开发基于three.js的WebGL应用程序,该应用程序显示了数千个多维数据集以及这些多维数据集之间的线。我遇到几个性能问题,因此我决定将所有多维数据集合并为一个几何。这虽然有所帮助,但实际上由于数千行(全部都有自己的几何图形(基于Three.js的NURBSCurve示例)和着色器材质(着色器从行的开始到末尾混合两种颜色)而降低了性能并控制不透明度)。我的最大数据包括9000多个行和5000多个多维数据集。如果没有这些行,则FPS速率介于45-50(DirectX)或20 FPS(OpenGL)之间,但随着这些行,性能会下降到5 FPS。拥有Intel HD Graphics(第5代)图形卡,因此最大FPS似乎限制为60 FPS,但是就我而言,这已经足够了。正如我之前所说,这些线是NURBS曲线,范围从短曲线到长而复杂的曲线。另一个要求(这让我有些头痛;-))是每行的宽度不同,因此我实际上必须使用OpenGL,这在我的情况下比较慢,还会引起其他一些问题。

无论如何,我已经尝试了几种方法,但是没有一种方法能够真正帮助我解决问题。

1)为每条线创建管道并合并几何。->这将场景的创建速度从1秒减慢到了几分钟。此外,FPS率无法提高。实际上,由于此方法产生的顶点和面的数量很大,因此这是可以预期的。

2)减少曲线点。->从200点降低到50点,这有助于稍微提高FPS。降低到25分并没有带来更多改善。我当时在想写一种减少不需要的点的方法(例如在直线曲线中,用2点代替50点就足够了),但是我不知道如何实现这一点,因此我首先考虑了其他方法。也许我会回到这一点。

3)使用BufferGeometry。->似乎BufferGeometry无法与着色器材质一起使用。至少在我的情况下,我没有使它起作用,所以我的尝试都没有显示任何东西。顺便说一下,我使用THREE.BufferGeometryUtils从我的NURBS曲线创建了缓冲区几何。我试图将THREE.VertexColors设置为几何中函数的函数和colorsNeedUpdate的参数,但仍然没有显示。实际上,我还尝试了使用遏制几何图形进行缓冲几何处理,但性能并未得到任何改善。

4)使用样条曲线代替NURBS曲线。->曲线的路径不像我希望的那样,并且没有任何改善。

5)使用THREE.LinePieces将行合并为一行。->好吧,尽管我不得不将顶点数量加倍,但这实际上起了很大的作用。在DirectX的情况下,性能从5 FPS提高到25 FPS(OpenGL仍为4 FPS),但是这种解决方案不适用于我的情况。原因是行的宽度不能不同,在DirectX始终限制为1的情况下。我想知道其他人如何解决线宽限制问题,发现有些人通过Geometry Shader创建了较粗的线。所以我的新希望是这款几何着色器。但是后来我发现WebGL不支持几何着色器。

到目前为止,对于我的方法的长期解释很抱歉。在尝试了所有这些之后,我无法提出任何新想法。现在,我想从专家那里了解是否应该忍受FPS下降,还是还有其他方法可以尝试?

春冈

我想到了按宽度捆绑线,然后使用合并这些捆绑的想法THREE.LinePieces在最佳情况下,我可以将大约860行减少到仅2行。当然,此解决方案的有效性取决于数据。此外,我仍然存在DirectX比OpenGL快得多的问题(例如50 FPS而不是8 FPS),但是我需要后者才能支持更粗的线。因此,如果有人为支持DirectX的问题提出解决方案,我将不胜感激:-)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在three.js中显示数千张图像

来自分类Dev

我如何摆脱数千行

来自分类Dev

从PIG的CSV中的数千行中删除HTML标签

来自分类Dev

Three.js中渲染阴影的性能

来自分类Dev

具有数千行的HTML表

来自分类Dev

如何加快mysql容纳数千行的速度

来自分类Dev

如何在不借助粒子系统的情况下在THREE.js中为数千个恒星建模?

来自分类Dev

React、Redux 和three.js 的性能问题

来自分类Dev

THREE.ObjectLoader的Three.js错误

来自分类Dev

将数千行txt解析为行和列

来自分类Dev

Three.js javascript性能函数构造

来自分类Dev

Three.js-关于(使用)THREE.BufferGeometry的问题

来自分类Dev

防止AngularJS在每个$ digest周期脏检查数千行

来自分类Dev

为什么简单的C ++源文件的预处理文件包含数千行代码?

来自分类Dev

运行 tensorflow 时如何抑制数千行信息日志

来自分类Dev

将文件的每一行与第二个文件中的数千行进行比较时提高速度

来自分类Dev

Three.js:SVGRenderer?

来自分类Dev

Three.js /交集

来自分类Dev

Three.js-TransformControls

来自分类Dev

Three.JS与流

来自分类Dev

Three.js旋转

来自分类Dev

Three.js-点

来自分类Dev

Three.js-TransformControls

来自分类Dev

three.js中的网格

来自分类Dev

Three.js中的verticesNeedUpdate

来自分类Dev

THREE.js中的ParametricBufferGeometry

来自分类Dev

Three.js中的坐标系问题

来自分类Dev

冲突检测Three.js的问题

来自分类Dev

Three.js-渲染问题-动画震撼