到目前为止,我有一个具有不同属性的三维点云数据集,我将其可视化为点,并且我希望具有基于与该集的距离的LOD。我希望能够从更少和更大的点从很远的地方有一个通用的视图,当我放大时,我希望更多的点被正确地隔开,自动显示。
有点像下面的视频,行为智慧:http://vimeo.com/61148577
我认为一种解决方案是使用自适应八叉树,但我不确定这是否是一个好的解决方案。我一直在研究具有无缝转换的分层集群,但我不确定我应该使用哪种解决方案来满足我的目标。
对于从哪里开始有什么建议和建议吗?或者是一些特定的方法?
谢谢
发布于 2013-04-25 21:31:20
您链接的视频使用2D metaballs。当变形球聚集在一起时,它们会形成斑点,而不是更大的圆圈。你能接受吗?
在继续之前,您应该先阅读metaballs简介。只要谷歌2D metaball就可以了。
因此,希望您已经阅读了metaball阈值和衰减函数。衰减函数应该有一个半径--函数落到零的距离。
我们可以通过调整阈值和半径来实现LOD效果。基本上,在缩小时,增加半径,以便点在更大的区域上具有影响,并开始聚集在一起。此外,调整阈值,以便点密度不足的区域开始消失。
我发现了这个现有的jsfiddle 2D metaballs演示,并对其进行了修改以展示LOD:
正如您在不同的jsfiddle版本中看到的那样,更改LOD只需要调整几个变量:
threshold = 1,
max_alpha = 1,
point_radius = 10,许多metaball文章没有触及的一个关键点是:您需要使用一种约定,即只有高于阈值的值才会被认为是metaball的“内部”。然后,当缩小很远时,需要将阈值设置为高于衰减函数的峰值。这将导致孤立点完全消失,只留下可见的束。
渲染metaball本身就是一个完整的主题。这个jsfiddle演示采用了一种非常低效的暴力方式,但也有效率更高的“行军方块”。
https://stackoverflow.com/questions/16195174
复制相似问题