3D Tiles 规范(一概述)

3DTiles是一种设计用于处理大规模3D地理数据的技术,通过分层数据结构和glTF等Tile格式提供渲染能力。文章详细介绍了Tile集的组织、glTF作为主要格式的作用,以及空间数据的组织方式、元数据管理、URI引用和坐标系处理等内容。
摘要由CSDN通过智能技术生成

3D Tiles 专为流式传输和渲染大量 3D 地理空间内容而设计,例如摄影测量、3D 建筑、BIM/CAD、实例化要素和点云。它定义了分层数据结构和一组提供可渲染内容的Tile格式。3D Tiles 没有定义内容可视化的明确规则;客户可以根据自己认为合适的方式可视化 3D Tiles 数据。

   在 3D Tiles 中,Tile集是以空间数据结构(树)组织的一组Tile。Tile集由至少一个包含Tile集元数据和Tile对象树的Tile集 JSON 文件来描述,其中每个Tile对象都可以引用可渲染内容。

     glTF 2.0是 3D Tile的主要Tile格式。glTF 是一个开放规范,专为高效传输和加载 3D 内容而设计。glTF 资源包括单个Tile的几何和纹理信息,并且可以扩展为包括元数据、模型实例化和压缩。glTF 可用于多种 3D 内容,包括:

1.异构 3D 模型。例如,带纹理的地形和表面、3D 建筑外部和内部、大型模

2.3D 模型实例。例如树、风车、螺栓

3.海量点云

   Tile还可以引用下面列出的旧版 3D Tile 1.0 格式。这些格式在 3D Tiles 1.1 中已弃用,并且可能会在 3D Tiles 的未来版本中删除。

 旧版切片格式和常见用途:

旧格式

用途

批量 3D 模型 ( b3dm)

异构 3D 模型

实例 3D 模型 ( i3dm)        

3D模型实例

点云 ( pnts)

海量点数

合成的 (cmpt)

将不同格式的Tile连接成一个Tile

Tile的内容是Tile格式的单个实例。一个Tile可以有多个内容。

内容引用一组特征,例如表示建筑物或树木的 3D 模型,或点云中的点。每个功能都具有位置和外观属性以及其他特定于应用程序的属性。客户端可以选择在运行时选择特征并检索其属性以进行可视化或分析。

切片以树的形式组织,其中结合了层次细节级别 (HLOD) 的概念,以实现空间数据的最佳渲染。每个Tile都有一个包围体,一个定义完全包围其内容的空间范围的对象。树具有空间连贯性;子Tile的内容完全位于父Tile的边界体积内。

图片

图 1. 瓦片树

Tile集可以使用类似于光栅和矢量Tile方案(如Web地图Tile服务(WMTS)或XYZ方案)的2D空间Tile方案,其以多个细节级别(或缩放级别)提供预定义Tile。然而,由于Tile集的内容通常是不均匀的或者可能不容易仅在二维中组织,因此树可以是具有空间一致性的任何空间数据结构,包括kd树、四叉树、八叉树和网格。. Implicit tiling定义了四叉树和八叉树的简洁表示。    

可以在Tile集中以多个粒度提供特定于应用程序的元数据。元数据可以与诸如Tile集、Tile、内容或特征之类的高级实体相关联,或者与单独的顶点和纹素相关联。元数据符合3D 元数据规范描述的明确定义的类型系统,可以使用特定于应用程序或特定领域的语义进行扩展。

可以选择将3D Tiles Style或style应用于Tile集。样式定义要评估的表达式,这些表达式修改每个功能的显示方式。

文件扩展名和数据类型

3D Tiles 使用以下文件扩展名和媒体类型。

  • 图块集文件应使用.json扩展名和application/json媒体类型。

  • 平铺内容文件应使用特定于其平铺格式规范的文件扩展名和媒体类型。

  • 元数据架构文件应使用.json扩展名和application/json媒体类型。

  • 图块集样式文件应使用.json扩展名和application/json媒体类型。

  • JSON 子树文件应使用.json扩展名和application/json媒体类型。

  • 二进制子树文件应使用.subtree扩展名和application/octet-stream媒体类型。

  • 表示二进制缓冲区的文件应使用.bin扩展名和application/octet-stream媒体类型。

显式文件扩展名是可选的。有效的实现可能会忽略它并通过magic其标头中的字段来识别内容的格式。

JSON编码

3D Tiles 对 JSON 格式和编码有以下限制。

  1. JSON 应使用无 BOM 的 UTF-8 编码。

  2. 本规范中定义的所有字符串(属性名称、枚举)仅使用 ASCII 字符集,并且应以纯文本形式编写,不进行 JSON 转义。

  3. 在 JSON 中显示为属性的非 ASCII 字符可能会被转义。

  4. JSON 对象中的名称(键)应该是唯一的,即不允许有重复的键。

  5. 某些属性在架构中定义为整数。这些值可以存储为小数部分为零的小数或使用指数表示法,如RFC 8259 第 6 节中所定义。

URI

3D Tiles 使用 URI 来引用图块内容。这些 URI 可能指向相对外部引用 (RFC3986),或者是在 JSON 中嵌入资源的数据 URI。嵌入式资源使用“数据”URL 方案 (RFC2397)。当 URI 是相对的时,其基础始终相对于引用的图块集 JSON 文件。客户端实现需要支持相关的外部引用和嵌入资源。或者,客户端实现可以支持其他方案(例如http://)。所有 URI 均应有效且可解析。

单位

所有直线距离的单位都是米。

所有角度均以弧度为单位。

坐标参考系(CRS)

3D Tiles 使用右手笛卡尔坐标系;也就是说,x和y的叉积产生z。3D Tiles 将z轴定义为局部笛卡尔坐标系。图块集的全局坐标系通常位于WGS 84地心固定 (ECEF) 参考系 ( EPSG 4978 ) 中,但不一定如此,例如,发电厂可以在其本地完全定义。与没有地理空间上下文的建模工具一起使用的坐标系。

图块集的CRS可以被明确地定义为图块集元数据的一部分。图块集的元数据可以包含具有语义的属性TILESET_CRS_GEOCENTRIC,该属性是表示 EPSG 大地测量参数数据集标识符的字符串。

可以应用附加的图块变换来将图块的本地坐标系变换到父图块的坐标系。

区域边界体积使用地理坐标系(纬度、经度、高度)指定边界。具体来说,EPSG 4979,但纬度和经度以弧度而不是度数给出。假设参考椭球与图块集的参考椭球相同。

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
gltf是一种用于表示三维模型和场景的文件格式,而3D Tiles则是一种用于以地理坐标为基础对大规模三维地理数据进行专业可视化的规范。 当我们想要将gltf模型转换为3D Tiles时,首先需要了解3D Tiles规范的要求。3D Tiles规范定义了如何将三维模型和场景进行切片瓦片化,并以一种高效的方式管理和传输大规模三维数据。 在将gltf转换为3D Tiles的过程中,我们需要进行一些步骤。首先,我们需要将gltf文件导入到专业的三维地理数据处理软件中,比如Cesium ion、FME或其他支持3D Tiles的软件。接下来,我们需要对模型进行一些预处理,比如设置适当的光照、材质和纹理参数,并进行模型优化和修复,以确保模型符合3D Tiles规范。 然后,我们需要对模型进行切片操作,将其分割成一系列地理坐标对应的瓦片。这通常需要根据地理坐标系统,将模型分割成多个层次的瓦片,以便在不同缩放级别下进行高效渲染和传输。 最后,我们需要将切片好的模型导出为符合3D Tiles规范的文件格式,比如为每个瓦片生成3d-tiles格式的json文件,并将模型数据保存为二进制文件进行关联。这样,我们就可以使用支持3D Tiles的软件或库,比如CesiumJS,来加载和渲染这些3D Tiles数据,实现高效的地理数据可视化。 总之,将gltf转换为3D Tiles需要对gltf模型进行预处理、切片和导出的过程,以便符合3D Tiles规范,并通过支持3D Tiles的软件或库来加载和渲染这些数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS工具-gistools2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值