我有一个具有不同属性的3D点云数据集,到目前为止我可视化为点,我希望LOD基于距离集合的距离。我希望能够从更远和更大的点获得一个广义视图,并且当我放大时,我想要一个正确间隔的更多点自动出现。
有点像下面的视频,行为明智:http://vimeo.com/61148577
我认为一种解决方案是使用自适应八叉树,但我不确定这是否是一个很好的解决方案。我一直在寻找具有无缝过渡的层次聚类,但我不确定哪种解决方案应该符合我的目标。
任何想法,从哪里开始提示?还是一些具体的方法?
由于
答案 0 :(得分:1)
您关联的视频使用2D元球。当元球聚集在一起时,它们会形成斑点,而不是更大的圆圈。你还好吗?
在继续之前,您应该阅读metaball的介绍。只是谷歌2D元球。
所以,希望您已经阅读了有关元球阈值和衰减函数的信息。你的衰减函数应该有一个 radius - 函数下降到零的距离。
我们可以通过调整阈值和半径来实现LOD效果。基本上,当您缩小时,增加半径以使点对较大区域产生影响并开始聚集在一起。此外,调整阈值以使点密度不足的区域开始消失。
我发现了这个现有的jsfiddle 2D元球演示,我修改了它来展示LOD:
正如您在不同的jsfiddle修订版中所看到的,更改LOD只需要调整一些变量:
threshold = 1,
max_alpha = 1,
point_radius = 10,
许多元球文章没有触及的关键点:你需要使用一种约定,其中只有高于你的阈值的值被认为是“元素内”。然后,当远距离缩放时,您需要将阈值设置为衰减函数的峰值。这将导致一个孤立点完全消失,只留下可见的团块。
渲染元球本身就是一个完整的主题。这个jsfiddle演示采用了非常低效的蛮力方法,但也有更高效的“行进方块”。