全面了解3D Tiles

一、3D Tiles介绍

Cesium是一个虚拟地球三维平台,可视化范围上至太空中每一颗卫星,下至地面上每一幢建筑物。为了实现数字地球(Digital Earth vision)的蓝图,使连接世界上的地理空间数据成为可能,就要用到3D-Tiles。

3D-Tiles是一个用于流式(stream)传输大规模、异构的三维空间数据集的开放规范(open specification)。为了在Cesium地形和影像成流技术的基础上拓展功能,需要用3D Tiles成流三维数据,包括建筑物,树,点云和矢量数据。

简单点说,3D Tiles是在gltf的基础上,加入了分层LOD的结构后得到的产品,专门为大量地理3D数据流式传输和海量渲染而设计的一种格式,是webGL框架Cesium的专用格式。

主要有以下几个特点:

  1. Open

    3D Tiles是一个开放式规范,在Cesium中具有开源实现。

  2. Optimized for streaming and rendering(针对流和渲染进行了优化)

    3D Tiles主要是对大规模异构数据集的成流和渲染进行优化。3D Tiles的基础是一种空间数据结构,它支持层次结构细节级别(HLOD),只有可见的图块才会被流式传输。
    在这里插入图片描述

  3. Interactive(交互式)

    3D Tiles支持交互式选择和样式,可以单独进行模型交互。比如鼠标悬停显示建筑物、使用ID查询数据。

  4. Styleable(设置样式)

    单个模型的元数据可以在运行时用于着色而无需编写代码,样式可以即时更改。

  5. Adaptable(适应性)

    为了满足灵活性的需求,树可以是任何具有空间相干性的空间数据结构,包括k-d树,四叉树(quadtrees),八叉树(octrees),格网(grids)。

  6. Flexible(灵活)

    传统的2D地图图块,当用户放大时,可见的地图图块将被更高分辨率的地图图块替换,这称为细化。

    而3D数据集则可以在子图块下载时呈现,这称为添加剂细化,具有更大的灵活性。

  7. Heterogeneous(异构的)

    3D数据集没有可以适合所有的尺寸,批量模型需要来自实例模型的不同表示,以及来自点云的不同表示等。

    3D Tiles通过启用自适应细分,灵活细化和可扩展的切片格式集支持异构数据集。

  8. Precise(精确)

    3D Tiles提供全精度几何,避免抖动伪像,无需存储双精度值。

  9. Temporal(时间动态)

    Cesium专为时间动态可视化设计,例如卫星、无人机。

3D Tiles数据集(又称为tileset)是由一系列tile组成的树状结构。每一个tile都有一个包围体完全包围它的内容(content)。树具有空间相关性,子tile的内容完全包含在父tile的包围体内。

一个tile代表一个要素或者一个要素集,如建筑物为代表的3D模型、点云中的点和向量数据集中的点。每个tile可以引用以下四种格式中的一种:

  • Batched3DModel
  • Instanced3DModel
  • PointCloud
  • Composite

tile的内容(tile格式的一个单独实例)是一个二进制块,具有特定于格式的组件,包括功能表(Feature Table)和批处理表(Batch Table)。

批处理3D模型和实例3D模型格式基于glTF建立,glTF是为有效传输3D内容而设计的开放规范。这些格式的图块内容在二进制主体中嵌入了glTF资源,其中包含模型几何和纹理信息。点云格式未嵌入glTF。

tile以树形结构组织,其中结合了详细层次结构(HLOD)的概念,可最佳呈现空间数据。每个tile都有一个包围体积(bounding volume)属性,一个对象定义了一个完全包围其内容的空间范围。树具有空间连贯性;子tile的内容完全在父级的包围体积之内。

树可以是任何具有空间相干性的空间数据结构,包括k-d树,四叉树(quadtrees),八叉树(octrees),格网(grids)

二、3D Tiles的文件规范和单位

1. 扩展名

  • Tileset使用.json扩展名;
  • Tile的内容使用上述的四种类型(b3dm,i3dm,pnts,cmpt等);
  • 样式文件也使用.json扩展名

2. JSON的编码规范

  • JSON必须使用没有BOM的UTF-8编码。

  • 所有字符串(属性名称,枚举)仅使用ASCII字符集,并且必须以纯文本形式编写。

  • JSON对象中的名称(键)必须唯一,即不允许重复的键。

3. URIs

  • 3DTiles中的tiels使用URIs来指向外部引用,也可以将资源嵌入JSON的数据,和glTF引用二进制文件或者直接包含数据在JSON中的方式一样。

4. 单位

  • 所有线性距离的单位是米。

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

5. 坐标系

  • 3D Tiles使用右手笛卡尔坐标系,整体坐标系为WGS 84坐标系,但是WGS 84坐标系并不是必须的,也可以只有自己局部坐标系,不定义全局坐标系。
  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
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的软件或库来加载和渲染这些数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值