2013-08-17 48 views
1

我问的任何问题以及我所有的问题都与想法有关我曾经参与个人项目。意见建议:创建交互式3D点密度图

我想试用在浏览器中使用WebGL创建3D和交互式dot density map。从我的背景来看,这对我来说都是新的,但我想这是我可以管理的事情。

我的问题围绕项目的组件展开,特别是您对我所认为需要的看法。需要生成的最大点数为400万,因为这是所有点最远的观点。

出发:

  1. 我假设渲染这将是 使用顶点缓冲对象的最有效方法是什么?如果是这样,这是否适用于 与交互操作*?

  2. 对于如此多的观点,我认为需要一个等级空间划分 结构,倾向于八叉树(因为也会使用高度数据 )。这是一个不错的选择吗?当需要显示所有点时,将如何管理内存 ?

  3. 如果ID,X,Y,Z数据400万个将被存储,我 假定这将是大约400-600MB为CSV文件,是 有什么办法让这个一个合理的尺寸发送到 互联网?压缩算法真的很好吗?

我真的不要求每一个台式机和移动设备能够运行,但我也不想它的功能限制在他的实验室是一个天才SLI运行的泰坦。我需要它是一个合理的权力猪。

* 交互式:动画从一点到另一点的数据,其中用户可以刷(过滤器)的点,并找出更多有关那些所述点,改变点颜色等

回答

1

分层空间分割结构将需要,倾向 对八叉树(因为高度数据也将被使用)。这是一个好的 的选择?

空间分区绝对是查询点的好主意。

如果ID,X,Y,4万点z分别存储的,我 假定这将是大约400-600MB作为CSV文件

如果你有4百万分和4个组件,每个4字节,那么数据的大小约为64 MB。这可以通过现代的CPU/GPU来管理。

有什么办法让这个尺寸合理的发送到 上网吗?压缩算法真的很好吗?

我认为带宽是不是规模的主要问题。

您只能发送和显示可见点。如果多个点一次可见,则可以通过将最近的点组合在一起来对它们进行过滤。 点应该表现出高频率和过滤,并且可能改变亮度,应该给出感觉上平滑的结果。

这样的概念类似于texture clipmapsgeometry clipmaps

+1

一个很好的答案,但有点小错误。由于带宽是问题,服务器是否是委托哪些点崩溃的情况,以及保持空间分区结构活动的那一个和*只有一个? – BlackBox

+0

是的,如果带宽是一个问题,那么计算可见数据将在服务器端。客户端只会在O(n)中显示点,这是最佳的 –

0

数据处理:听起来您可以使用OctoMap框架。已知非常有效地处理非常大的3D点云。它在里面使用八叉树,不存储每个默认的点数,但每个盒子(节点)的占用率。 但是,扩展并将自定义信息存储在节点(如原始点或甚至模拟本地节点中的点分布(example))中非常容易。

流:如果您实现用于读取自己的“< <”操作和写一棵树成流,比你可以很容易地通过一个套接字它传输到一个网页浏览器。

可视化:您实际上可以使用任何WebGL-JavaScript框架。目前我可以建议CubeVR