前言

3d-tiles文件是cesium官方和开源社区发布的专用格式.要想深刻体会,还的看官方原文档.借此机会翻译,以便日后查用.

译文

3d tiles 格式规范 2018年6月6日 版本1.0

目录

Introduction#简介
File extensions and MIME types#文件扩展和MIME类型
JSON encoding#json编码
URIs#路径
Units#模块
Coordinate reference system (CRS)#坐标参考系
Concepts#概念理解
Declarative styling specification#声明性样式规范
Property reference#属性引用
License#许可证

Introduction#简介

3D tiles被设计用于流媒体和渲染大量3D地理空间内容,如摄影测量、3D建筑、BIM/CAD、实例特征和点云。它定义了一个层次数据结构和一组提供可渲染内容的平铺格式。3D tiles没有为内容的可视化定义明确的规则;客户机可以可视化3D tiles数据使它看起来合适.在3d tiles中,图块集是一组图块,它们组织在一个空间数据结构(树)中,tileset由至少一个包含tileset元数据的tileset json文件和一个tile对象树描述,每个tileset对象树可以引用以下格式之一的可渲染内容:

Format格式Uses用途
Batched 3D Model(b3dm)异构三维模型。例如,纹理地形和表面、三维建筑外观和内部、大型模型
Instanced 3D Model (i3dm)三维模型实例。例如树木、风车、螺栓
Point Cloud (pnts)大量点云数据
Composite (cmpt)将不同格式的图块连接到一个图块中
  1. 图块的内容是图块格式的一个单独实例,它是一个二进制blob,具有特定格式的组件,包括一个功能表和一个批处理表.
  2. 内容引用一组功能,例如表示建筑物或树木的三维模型,或点云中的点。每个功能都有存储在图块功能表中的位置和外观属性,以及存储在批处理表中的其他特定于应用程序的属性。客户机可以选择在运行时选择功能并检索其属性以进行可视化或分析.
  3. 批量3D模型和实例3D模型格式建立在GLTF上,GLTF是一种开放的规范,旨在有效地传输3D内容。这些格式的tile内容将包含模型几何和纹理信息的gltf资源嵌入到二进制体中。点云格式不嵌入GLTF。
  4. tiles被组织在一棵树中,该树融合了层次细节(HLOD)的概念,以优化空间数据的呈现。每个图块都有一个边界体积,一个定义完全封闭其内容的空间范围的对象。树具有空间一致性;子图块的内容完全在父对象的边界体积内。
    在这里插入图片描述
    Tileset可以使用类似于光栅和矢量平铺方案(如Web地图平铺服务(WMT)或XYZ方案)的二维空间平铺方案,该方案在多个详细级别(或缩放级别)上为预定义的平铺提供服务。然而,由于tileset的内容通常是不均匀的,或者可能不容易组织为二维的,因此树可以是任何具有空间相关性的空间数据结构,包括k-d树、四叉树、八叉树和网格.或者,可以将三维平铺样式或样式应用于平铺集。样式定义要计算的表达式,用于修改每个特征的显示方式.
File extensions and MIME types#文件扩展和MIME类型

3d tiles 用以下文件扩展名和MIME消息类型,
tileset文件用.json的扩展文件和application/json的mime消息类型
tile内容文件使用特定于其平铺格式规范的文件类型和MIME格式,
tileset样式的文件使用.json扩展名和application/json mime类型,
显式文件扩展名是可选的。有效的实现可以忽略它,
并通过其头中的magic字段标识内容的格式

JSON encoding#json编码

3D titles对JSON格式和编码有以下限制。
JSON必须使用不带BOM的UTF-8编码。
此规范中定义的所有字符串(属性名、枚举)仅使用ASCII字符集,必须以纯文本形式写入。
JSON对象中的名称(键)必须是唯一的,即不允许重复键

URIs#路径

3D titles使用uri引用titles内容。这些URI可能指向相对外部引用(rfc3986),也可能是将资源嵌入JSON中的数据URI。嵌入式资源使用“数据”URI方案(RFC2397)。当URI是相对的时,它的基总是相对于引用的tileset json文件。客户端实现需要支持相关的外部引用和嵌入资源。或者,客户端实现可以支持其他方案(如http://)。所有URI必须有效且可解析

Units#模块

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

Coordinate reference system (CRS)#坐标参考系

3D titles使用右手笛卡尔坐标系;也就是说,x和y的叉积产生z。
titles将z轴定义为局部笛卡尔坐标系的向上轴。
Tileset的全球坐标系通常位于WGS 84地心固定(ECEF)参考框架(EPSG 4979)中,
但不必如此,例如,发电厂可以在其本地坐标系中完全定义,
以便与没有地理空间背景的建模工具一起使用。
可以应用附加的titles转换将titles的局部坐标系转换为父图块的坐标系。
区域边界体积使用地理坐标系(纬度、经度、高度)指定边界,
特别是EPSG 4979

Concepts#概念理解
1) titles

tiles由元数据组成,用于确定是否呈现tile、对可渲染内容的引用以及任何子tile的数组

2) Geometric error

titles被构造成一个包含层次细节级别(chlod)的树,这样在运行时,
客户机实现需要确定图块是否足够详细以进行渲染,以及
titles的内容是否应该由更高分辨率的子图块依次进行细化。
一个实现将考虑最大允许屏幕空间错误(SSE),即以像素度量的错误.
…后面就不翻译了,太高端了,翻译了也不懂

3) Refinement(优化)

Replacement(替换优化)

如果一个titles使用替换优化,则在进行优化时,它会使其子项取代自身
在这里插入图片描述

Additive(增加优化)

如果titles使用附加优化,则在优化后,它会同时呈现自身及其子项
在这里插入图片描述

Bounding volumes

边界定义为了支持各种数据集(如规则分割的地形、与经纬线不对齐的城市或任意点云)
边界体积类型包括定向边界框、边界球和由最小和最大纬度、经度和高度定义的地理区域
在这里插入图片描述
Region#区域
boundingvolume.region属性是一个由六个数字组成的数组,这些数字用纬度、经度和高度坐标定义边界地理区域,顺序为[西、南、东、北、最小高度、最大高度]。纬度和经度在EPSG 4979中定义的WGS 84基准中,以弧度表示。高度以WGS 84椭球体以上(或以下)米为单位
在这里插入图片描述

“boundingVolume”: {
“region”: [
-1.3197004795898053,
0.6988582109,
-1.3196595204101946,
0.6988897891,
0,
20
]
}

Box#盒子
boundingvolume.box属性是一个由12个数字组成的数组,该数组在z轴向上的右手三轴(x,y,z)笛卡尔坐标系中定义定向边界框。前三个元素定义了框中心的x、y和z值。接下来的三个元素(带有索引3、4和5)定义X轴方向和半长度。接下来的三个元素(索引6、7和8)定义Y轴方向和半长度。最后三个元素(索引9、10和11)定义Z轴方向和半长度
在这里插入图片描述

“boundingVolume”: {
“box”: [
0, 0, 10,
100, 0, 0,
0, 100, 0,
0, 0, 10
]
}

sphere#球
boundingvolume.sphere属性是一个由四个数字组成的数组,用于定义边界球。前三个元素定义了z轴向上的右手三轴(x,y,z)笛卡尔坐标系中球体中心的x,y和z值。最后一个元素(索引3)定义半径(单位:米
在这里插入图片描述

“boundingVolume”: {
“sphere”: [
0,
0,
10,
141.4214
]
}

viewer的请求区域
title的视图请求区域可以用于组合异类数据集,也可以与外部titles集组合。
下面的示例在B3DM图块中有一个建筑,在PNTS图块中有一个点云。点云块的边界体积是一个半径为1.25的球体。它还有一个更大的球体,半径为15,用于viewerRequestVolume。由于几何误差为零,当查看器位于由viewerRequestVolume定义的大球体内时,点云图块的内容总是呈现(并且最初是被请求的)

{
“children”: [{
“transform”: [
4.843178171884396, 1.2424271388626869, 0, 0,
-0.7993325488216595, 3.1159251367235608, 3.8278032889280675, 0,
0.9511533376784163, -3.7077466670407433, 3.2168186118075526, 0,
1215001.7612985559, -4736269.697480114, 4081650.708604793, 1
],
“boundingVolume”: {
“box”: [
0, 0, 6.701,
3.738, 0, 0,
0, 3.72, 0,
0, 0, 13.402
]
},
“geometricError”: 32,
“content”: {
“uri”: “building.b3dm”
}
}, {
“transform”: [
0.968635634376879, 0.24848542777253732, 0, 0,
-0.15986650990768783, 0.6231850279035362, 0.7655606573007809, 0,
0.19023066741520941, -0.7415493329385225, 0.6433637229384295, 0,
1215002.0371330238, -4736270.772726648, 4081651.6414821907, 1
],
“viewerRequestVolume”: {
“sphere”: [0, 0, 0, 15]
},
“boundingVolume”: {
“sphere”: [0, 0, 0, 1.25]
},
“geometricError”: 0,
“content”: {
“uri”: “points.pnts”
}
}]
}

License#许可证
Property reference#属性引用
Declarative styling specification#声明性样式规范

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐