空间数据可视化细节层次

时间:2013-04-24 07:14:56

标签: visualization

我有一个具有不同属性的3D点云数据集,到目前为止我可视化为点,我希望LOD基于距离集合的距离。我希望能够从更远和更大的点获得一个广义视图,并且当我放大时,我想要一个正确间隔的更多点自动出现。

有点像下面的视频,行为明智:http://vimeo.com/61148577

我认为一种解决方案是使用自适应八叉树,但我不确定这是否是一个很好的解决方案。我一直在寻找具有无缝过渡的层次聚类,但我不确定哪种解决方案应该符合我的目标。

任何想法,从哪里开始提示?还是一些具体的方法?

由于

1 个答案:

答案 0 :(得分:1)

您关联的视频使用2D元球。当元球聚集在一起时,它们会形成斑点,而不是更大的圆圈。你还好吗?

在继续之前,您应该阅读metaball的介绍。只是谷歌2D元球。

所以,希望您已经阅读了有关元球阈值和衰减函数的信息。你的衰减函数应该有一个 radius - 函数下降到零的距离。

我们可以通过调整阈值和半径来实现LOD效果。基本上,当您缩小时,增加半径以使点对较大区域产生影响并开始聚集在一起。此外,调整阈值以使点密度不足的区域开始消失。

我发现了这个现有的jsfiddle 2D元球演示,我修改了它来展示LOD:

  • LOD 0:个人点为圆圈。 (http://jsfiddle.net/TscNZ/370/
  • LOD 1:孤立点开始收缩,但点群开始形成斑点。 (http://jsfiddle.net/TscNZ/374/
  • LOD 2:孤立点消失了。 Blob越来越少。 (将上述URL更改为jsfiddle版本377)
  • LOD 3:Blob甚至更少,甚至更大。 (将以上URL更改为jsfiddle版本380)

正如您在不同的jsfiddle修订版中所看到的,更改LOD只需要调整一些变量:

threshold = 1,
max_alpha = 1,
point_radius = 10,

许多元球文章没有触及的关键点:你需要使用一种约定,其中只有高于你的阈值的值被认为是“元素内”。然后,当远距离缩放时,您需要将阈值设置为衰减函数的峰值。这将导致一个孤立点完全消失,只留下可见的团块。

渲染元球本身就是一个完整的主题。这个jsfiddle演示采用了非常低效的蛮力方法,但也有更高效的“行进方块”。