1

我问的任何问题和我的问题都与我对个人项目的想法有关。

我想尝试使用 WebGL 在浏览器中创建 3D 和交互式点密度图。从我的背景来看,这对我来说是全新的,但我想这是我可以管理的。

我的问题围绕着项目的组成部分,特别是您对我认为需要什么的看法。需要生成的最大点数为400 万,因为这将是所有点中最远的视图。

出发:

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

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

  3. 如果要存储 400 万个点的id、x、y、z数据,我假设这将是大约 400-600MB 作为 CSV 文件,有没有办法使这个大小合理,以便通过互联网发送?压缩算法真的那么好吗?

我真的不需要每个桌面和移动设备都能够运行它,但我也不想将它的功能限制在他的实验室中的一个天才在 SLI 中运行 Titan。我需要它是一个合理的权力猪。

*交互式:动画数据从一个点到另一个点,用户可以在其中刷(过滤)点并找到有关这些点的更多信息,改变点颜色等。

4

2 回答 2

1

需要分层空间分区结构,倾向于八叉树(因为也将使用高度数据)。这是一个不错的选择吗?

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

如果要存储 400 万个点的 id、x、y、z 数据,我假设这将是大约 400-600MB 作为 CSV 文件

如果您有 400 万个点和 4 个 4 字节的组件,那么数据的大小将约为 64 MB。这可以通过现代 cpu/gpu 进行管理。

有什么办法可以使这个尺寸合理,以便通过互联网发送?压缩算法真的那么好吗?

我认为带宽是主要问题而不是大小。

您只能发送和显示可见点。如果一次可见许多点,您可以通过在层次结构中将最近的点组合在一起来过滤它们。点应该表现出高频和过滤,+可能改变亮度,应该给出感知平滑的结果。

这样的概念类似于纹理剪辑图几何剪辑图

于 2013-08-17T23:13:04.173 回答
0

数据处理:听起来你可以使用OctoMap框架。众所周知,可以非常有效地处理非常大的 3D 点云。它在内部使用八叉树,默认情况下不存储点,而是存储每个框(节点)的占用情况。但是,在节点中扩展和存储自定义信息(例如原始点)非常容易,甚至可以对本地节点中的点分布进行建模(示例)。

流式传输:如果您实现自己的“<<”运算符来读取树并将其写入流中,那么您可以轻松地将其通过套接字流式传输到网络浏览器。

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

于 2013-09-04T15:44:49.107 回答