渲染海量数据

时间:2011-07-14 11:13:37

标签: qt opengl visualization data-visualization bigdata

我有一个3D浮点矩阵,在最坏的情况下,大小可能是(200000x1000000x100),我想用Qt / OpenGL可视化这个矩阵。

由于元素的数量非常多,我想以这样的方式渲染它们:当相机远离矩阵时,我只是展示了一些有趣的点,它们给出了矩阵的近似。当相机靠近时,我想获得更多细节,因此计算出更多元素。

我想知道是否有技术可以处理这种可视化。

2 个答案:

答案 0 :(得分:7)

一般的想法被称为细节层次渲染,并且本身就是一门完整的科学。

对于您的域名,我建议采取两个步骤:

1)通过在不同大小的多维数据集中平均(算术平均函数)并缓存这些多维数据集(在磁盘和RAM上)来减少单元格数量。 “不同”在这里表示您在多个尺寸的立方体中具有相同的数据,例如10000x10000x10000的粗粒度立方体和100x100x100细胞的更精细立方体,从而产生多个细节层次。你必须在层次结构中组织这些(较大的包含多个较小的结构),为此,我建议八叉树http://en.wikipedia.org/wiki/Octree

2)第二步是实际呈现此八叉树的部分内容: 要执行此操作,请使用摄像机点到子立方体的距离。遍历立方体并决定通过使用此距离函数和启发式选择或猜测的阈值来进入子立方体或渲染更大的立方体。

(2)可以进一步优化,但这是可选的:要优化此渲染,请将待渲染的立方体组织成图层:图层的方向(无论是在x,y还是z切片中)取决于在你的相机 - 它应该接近垂直的观点。然后将每个切片渲染成纹理,并且您只需要为每个切片渲染一个具有该纹理的四边形,1000个四边形无需渲染。

答案 1 :(得分:2)

Qt有一些方法可以有效地渲染大量元素。检查属于QT的examples/demo