【发布时间】:2015-12-20 17:47:10
【问题描述】:
我刚刚用 JS 制作了一个 3D pointcloud 渲染应用。该应用程序能够以 40 FPS 的速度渲染 +200 000 个 3D 黑/白点,用于浓密的云层。不过,我现在正在尝试实现 colors,并且在开发这个新功能时,我意识到在屏幕上绘制点的顺序非常重要。
我制作了另一个文件,其中我为每个点选择了一种颜色。例如,点 0 为红色,点 1 为绿色,点 2 为蓝色;所以颜色是预先计算好的。
我的意思是,离用户较远的点应该先渲染,离用户较近的点应该稍后渲染。使用这种技术,如果两点重叠,则更近的点将出现在屏幕上。
我做了一个自定义算法 [O(n^2) 我知道很慢],它对与用户位置的距离的所有点(超过 200 000 个)进行排序(首先是更多点)。但是,我需要大约 7 秒才能将它们按正确的顺序排列,因为应用程序本来应该是实时的,我不得不采取一种解决方法来防止浏览器显示“此页面没有响应”弹出窗口.
还有其他方法可以渲染在屏幕上重叠的 3D 彩色点吗?别担心,我不是要一段代码,我只是想知道是否有另一种更快的方法来实现这一点,如果可能的话,用伪代码。
我已经知道我可以减少编写更高效算法的时间,但这仍然太慢了。每个有效的答案都将获得支持!
这就是我到目前为止所得到的
这就是我想要的
【问题讨论】:
标签: javascript algorithm 3d pseudocode point-clouds