【问题标题】:Problems understanding quadtrees理解四叉树的问题
【发布时间】:2016-10-15 09:47:19
【问题描述】:

我对数据结构“quadtree”很感兴趣,对于我的一个项目,我想使用它们。好的,让我们举个例子:

我们有一个 3D 空间,其中相机位置被锁定,但我可以旋转相机。每当我将相机旋转到某个点时,都会显示一个 large 2d image(大于截锥体)。

1.当我只能看到它的 1/4 时,不需要加载整个图像! .在这里使用四叉树是否有意义,只加载我可见的图像部分?(使用 opengl/webgl 时)如果是这样,每个四叉树节点是否必须包含自己的顶点缓冲区和纹理?

【问题讨论】:

  • 这个大图的用例是什么?你有环境地图之类的东西吗?
  • 是的,例如
  • 您可以将地图拆分为几个较小的部分并确定每个部分的可见性。如果您有一系列质量不断提高的图块(例如地理地图),四叉树最有帮助。因此,您可以放大并显示质量更好的图像。如果您打算始终保持相同的精度水平,我认为四叉树过于复杂。
  • 感谢您的回复。我认为几乎相同,但是 f.e.如果图像大于 50mb,最好只加载 2mb,然后动态加载图像的其他部分?您对此有何看法?
  • 当然,您可以加载低质量的完整图像,然后按需下载片段。另一方面,您需要非常大的屏幕才能从 50mb+ 图像中获得所有精度。而且,如果它是高分辨率的,您需要确保纹理采样器可以以该精度工作。是 16k 吗?

标签: webgl quadtree


【解决方案1】:

当您需要根据需要在多个精度级别之间切换时,四叉树非常适合。带有缩放功能的地图就是一个很好的例子。如果您的瓷砖只有一个精度级别,那么在没有如此复杂的结构的情况下控制它们的加载/可见性应该更方便。您可以快速加载低精度图像,然后按需加载高精度图像。

另外,谈到你的情况 - 4k 图像的 50mb 听起来很奇怪。压缩的 DDS/dxt1PVRTC 纹理应该占用更少的空间(并且未压缩的 jpg/png 更少)。此外,确定在您的情况下适用的最低图像精度是多少(这样您就不会无缘无故地浪费空间/流量)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    相关资源
    最近更新 更多