上篇:3dTile技术研究-概念详述(4)
3D Tiles包含Hierarchical Level of Detail (HLOD)的概念是为了优化渲染空间数据。一个tileset由一颗由root
和children
tiles递归构成的树组成,树可以被组织成不同的空间数据结构。
在运行时引擎是通用的,会渲染tileset定义的任何树。可以组合使用任意tile格式和细化方式( refinement),为了更灵活的支持异构的数据集,详细参考Refinement。
一个tileset可以使用类似于栅格和矢量切片方案的2D空间切片方案(例如Web地图切片服务(WMTS)或XYZ方案),该二维空间切片方案以几个细节级别(或缩放级别)提供预定义的切片。但是,由于tileset的内容通常是不一致的,或者可能不容易仅在二维上组织,使用其它的空间数据结构可能是更优的。
下面包含的是一个关于3D Tiles如何表现多种空间数据结构的说明。
当一个tile可以被细化分4个一致的children的时候,可以创建一颗四叉树,类似于典型的2D地理空间切片方案。空的child tiles可以被忽略。
经典的四叉树分割。
3D Tiles允许变化的四叉树,比如不规则分割的和紧密包围体(可以和规则的占parent tile空间25%的包围区域对比,显然对于稀疏的数据集来说这规则的是比较浪费的)。
由紧密包围每个child的空间体构成的四叉树。
比如,这是Canary Wharf的root tile和它的children。请注意左下角,这里的包围体没有包含左边的水,因为那里没有建筑物出现。
3D Tiles也允许其它变化的四叉树,比如宽松的四叉树,它的child tiles空间上有覆盖,但是仍然能够保证空间连贯性,也就是parent tile的包围盒完全包含它的所有的children内容。这个方法是很有用的,对于避免切割对象,比如3D 建筑,穿插的tiles。
上文也提过,3D Tiles是格式规范,它很多方面是宽松而灵活的,就像这里的空间树,并没有过多的要求,也没有要求是四叉树、八叉树还是其他什么树,仅仅是保证空间连贯性即可。
不规则的tile空间有覆盖的四叉树。
看下面,左边的是绿色的建筑物,右边的是粉色的建筑物。注意这里的tiles空间上相互覆盖了,这样就避免了2个绿色建筑物和1个粉色建筑物的切割。
当每个tile有两个被平行于x,y,z轴(或经度、纬度、高度)的切割面分割的children时,可以创建一颗k-d树。由于随着沿树级别的增加,拆分轴通常是循环旋转的,可以使用中位数拆分,表面积启发法或其它方法来选择拆分平面。
一个k-d树示例。注意这里是不规则分割的。
需要注意的是k-d树不像典型的2D地理空间瓦片方案那样是规则分割的,所以对于稀疏的和不规则分布的数据集来说,可以创建一颗更平衡的树。
3D Tiles允许变化的k-d树,比如multi-way k-d trees,在其中的每个叶子是沿着分割轴进行了多路分割。对于每个tile不是有两个children tiles的方案,取而代之的是有n个children tiles的方案。
八叉树通过使用三个正交分割平面将tile分割为八个children来扩展四叉树。像四叉树一样,3D Tiles允许对八叉树进行变化,例如不均匀的分割,紧密的包围体和有重叠的children。
使用累加细化(additive refinement)的非均匀八叉树分割的点云。哥伦比亚大学机器人实验室的Peter Allen教授在法国Chappes的圣玛丽教堂的点云。由Alejandro Troccoli和Matei Ciocarlie扫描。
3D Tiles允许均匀的,非均匀的,有覆盖的网格以支持任意数量的child tiles。例如,这是一个Cambridge的非均匀,有覆盖的网格的俯视图。
3D Tiles利用了空tiles:那些具有包围体但没有内容的Tile。由于不需要定义tile的content
属性,因此可以通过分层剔除使用空的非叶tile来加速非均匀网格。本质上,这会创建一个四叉树或八叉树,而没有层次的详细信息(HLOD)。
采用什么空间结构的树都可以,只要保证空间连贯性即可,这也是3D Tiles数据加载机制所需要的,其它的根据实际情况,加以研究,选取自己适合的空间树结构,甚至是创造性的优化也可以,没准会被收录于3D Tiles规范,就像多路k-d树那样。
传送:
3dTile技术研究-开篇
3dTile技术研究-概述
3dTile技术研究-概念详述(1)
3dTile技术研究-概念详述(2)
3dTile技术研究-概念详述(3)
3dTile技术研究-概念详述(4)