关于3dtiles的一些理解

由于工作的需要,需要将OSGB文件转换为3D Tiles,用于网络传输和Web平台等的显示。OSGB主要来自于倾斜摄影测量,可通过smart3D(旧的叫法)三维建模得到;3D Tiles用于流式传输3D内容,包括建筑物、树木、点云和矢量数据。目前从项目的经历来看,只用到了OSGB影像数据转换为3D Tiles的情况。由于是小白,从头学起,首先需要弄清各种文件的组织格式,如osgb文件、tileset.json文件,下面根据自己的理解介绍下Tileset的格式,一来加深自己的理解,二来希望对和我一样刚入门的同学有帮助。Tileset的理解结合一个实例来进行介绍。

关于3dtiles的一些理解_第1张图片

从根目录上来看,有三个属性,“asset”、“geometricError”、“root”三个属性,下面分别介绍下。

1.asset 

关于3dtiles的一些理解_第2张图片

asset包含整个tileSet的元数据,包括“version”定义了3D Tiles的版本,此版本号指定tileSet的JSON模式和基本的tileSet格式。"gltfUpAxis"定义gltf文件上方的轴向。

2.geometricError

geometricError确定了tile的分辨率,通过这个集合误差计算屏幕误差,确定tileSet是否渲染。

3.root

root中存的是tileset的内容,下面展开root的字段内容,详细介绍root中的 内容。

关于3dtiles的一些理解_第3张图片

3.1 boundingVolume

boundingVolume确定了tileset的包围盒。

关于3dtiles的一些理解_第4张图片

“box”共有12个参数,按照自己的理解,可分为四组,即分别代表顶点、x轴方向的向量、y轴方向的向量、z轴方向的向量。

3.2 Children

即根tileset的子目录,包含一系列并列的子目录,仔细讲解其中一个。

关于3dtiles的一些理解_第5张图片

可以看到子目录中包含“boundingVolumn”、“content"、“geometricError”属性,其中“boundingVolumn”、“geometricError”前面已经说过,“content”表示子目录json相对路径。

3.3 “transform”

关于3dtiles的一些理解_第6张图片

表示tileset的转换矩阵,共16个参数,代表4*4矩阵,采用行向量优先,右乘的方式执行。

你可能感兴趣的:(C++,osg,webgl)