目录
- 🙋♂️ 作者:海码007
- 📜 专栏:CesiumforUnreal专栏
- 💥 标题:Cesium 3DTiles数据格式详解
- ❣️ 寄语:好好努力,发挥自己的极限!
- 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正,同时有问题的话,欢迎大家留言讨论。
0 引言
最近在使用Cesium的过程中,无法避免和3DTiles格式数据打交道,但是一直一知半解,今天就详细学习一下这个知识。
3DTiles是OGC(Open Geospatial Consortium)开放地理信息联盟 指定的标准格式。
1 3DTiles文件后缀
1.1 起源
3D Tiles 是一种用于流式传输大型三维地理空间数据集的开放规范,主要由 Cesium 创造。这种数据格式的创建背后有几个关键原因:
-
高效的数据管理和流式传输:传统的3D数据格式并不适合大规模地理空间数据集的高效流式传输和渲染。3D Tiles 旨在解决这个问题,通过分层级和按需加载的方式,使得大型数据集可以在各种设备上高效地渲染和导航,无论数据集有多大。
-
多样化的数据类型支持:3D Tiles 支持多种不同的数据类型,包括点云、3D建模、影像等,这使其成为一种多功能的数据格式,适用于各种不同的地理空间数据应用场景。
-
与现有技术的兼容性:3D Tiles 旨在与现有的Web技术和标准(如 WebGL)兼容,这样可以使得基于Web的地理空间应用更容易实现,并可以利用现有的技术生态系统。
1.2 后缀类型及特点
关于文件后缀和特点,3D Tiles 主要包含以下几种类型的文件:
-
.b3dm:Batched 3D Model,用于存储多个3D模型,这些模型被组织成批次以优化渲染。
-
.i3dm:Instanced 3D Model,用于表示大量重复的模型实例,如建筑或树木,这有助于提高渲染效率。
-
.pnts:用于点云数据,可以存储大量的点,每个点包含位置、颜色和其他属性信息。
-
.cmpt:Composite,用于组合多种类型的3D Tiles数据,例如同时包含点云和3D模型的数据集。
-
.json:Tileset JSON 文件,用于描述整个数据集的结构和层级,包含对各个数据块(如 b3dm 或 i3dm 文件)的引用。
1.2.1 b3dm
.b3dm
是 3D Tiles 数据格式中的一种特定文件类型,全称为 “Batched 3D Model”。这种文件格式主要用于高效地存储和传输多个三维模型。其特点包括:
-
批处理优化:
.b3dm
文件将多个3D模型组合成一个“批次”,使得这些模型可以作为一个整体进行处理和渲染。这种批处理方法大大提高了渲染效率,尤其是在处理包含大量小模型的场景时,例如城市建筑群。 -
空间索引和多级细节:与 3D Tiles 的其他组件一样,
.b3dm
文件通常与空间索引和多级细节(LOD)技术结合使用。这意味着模型的细节级别会根据观察者的位置和视角动态调整,以优化性能和视觉效果。 -
自定义属性支持:
.b3dm
文件可以包含与每个模型相关的自定义属性,例如颜色、纹理和元数据。这些属性可用于更加个性化和详细地渲染每个模型。 -
与 WebGL 和其他Web技术的兼容性:由于 3D Tiles 和
.b3dm
文件格式是为Web环境设计的,它们与 WebGL 等Web图形技术高度兼容,使得在浏览器中渲染这些模型变得容易和高效。 -
压缩和优化:
.b3dm
文件通常进行压缩处理,以减少文件大小,加快网络传输速度。这对于大型在线地理空间数据应用尤为重要。
综上所述,.b3dm
文件在 3D Tiles 规范中扮演着重要角色,特别是在处理大量3D建筑模型
和其他复杂三维结构时,其优化的批处理和渲染机制显得尤为关键。
1.2.2 i3dm
.i3dm
是 3D Tiles 数据格式中的另一种特定文件类型,全称为 “Instanced 3D Model”。这种文件格式专门用于高效地存储和渲染大量重复的三维模型实例。其主要特点包括:
-
实例化渲染:
.i3dm
文件允许将单个模型的多个实例以高效的方式存储和渲染。这意味着相同的模型可以在不同的位置和方向多次出现,而无需为每个复制存储完整的模型数据。 -
空间和渲染优化:使用实例化方法可以大大减少存储和内存占用,同时提高渲染性能。这在处理大量重复对象(如树木、灯柱、车辆等)的场景中特别有效。
-
多样性和可配置性:尽管实例是基于同一个模型,但
.i3dm
允许对每个实例进行一些变化,例如位置、方向、比例甚至颜色和纹理。这提供了一定程度的可视化多样性。 -
与 3D Tiles 其他组件的集成:与 3D Tiles 的其他组件一样,
.i3dm
文件通常结合使用空间索引和多级细节(LOD)技术,以优化性能和视觉效果。 -
Web技术兼容性:类似于
.b3dm
,.i3dm
文件也是为与 WebGL 和其他 Web 图形技术高度兼容而设计的,这使得它们非常适合于Web环境中的三维数据应用。
综上所述,.i3dm
文件格式在处理需要大量重复元素的三维场景时非常有用,如城市规划、虚拟现实和游戏环境等。通过实例化技术,.i3dm
能够以更少的资源占用实现复杂场景的高效渲染。
1.2.3 pnts
.pnts
是 3D Tiles 数据格式中专门用于点云数据
的文件类型。点云数据是由大量的小点组成的数据集,通常用于表示真实世界的三维形状和特征。.pnts
文件的主要特点包括:
-
高密度点云存储:
.pnts
文件格式设计用于高效地存储和处理大量的点云数据。每个点可以包含多种信息,如位置、颜色、强度和其他属性。 -
适用于大规模空间数据:这种格式特别适合于处理大规模的三维空间数据,例如从激光扫描(LIDAR)或摄影测量技术中获得的数据。
-
支持多种属性:除了基本的位置信息,
.pnts
文件还可以包含点的其他属性,如RGB颜色、透明度、法线向量、温度、反射率等,这些属性对于更准确和详细地表示点云数据非常重要。 -
级别细节和视图依赖渲染:类似于 3D Tiles 的其他组件,
.pnts
文件支持多级细节(LOD),允许根据视图距离和角度动态调整点的细节和密度,优化渲染性能和用户体验。 -
Web和现代图形技术的兼容性:作为 3D Tiles 规范的一部分,
.pnts
文件格式与现代Web图形技术(如 WebGL)兼容,使得在浏览器和其他基于Web的平台上渲染点云数据变得高效和易于实现。
.pnts
文件因其对大量点云数据的高效处理而被广泛用于各种应用,包括地理信息系统(GIS)、城市规划、虚拟现实、历史遗迹保护等领域。通过使用.pnts
格式,开发者可以创建详细且交互性强的三维场景,提供丰富的用户体验。
1.2.4 cmpt
.cmpt
(Composite Tile)是 3D Tiles 数据格式中的一种文件类型,用于将多种不同类型的 3D Tiles 数据合并成一个单一的文件。这种文件格式的主要特点包括:
-
数据多样性:
.cmpt
文件可以包含不同类型的 3D Tiles 数据,例如点云(.pnts
)、批处理的3D模型(.b3dm
)、实例化的3D模型(.i3dm
)等。这种多样性使得.cmpt
文件能够同时表示多种不同的地理空间数据。 -
高效的数据管理:通过将多种数据类型合并到一个文件中,
.cmpt
文件可以简化数据管理和传输。这对于需要同时处理多种数据类型的应用场景(如复杂的城市模型)特别有用。 -
灵活的场景构建:使用
.cmpt
文件,开发者可以更灵活地构建复杂场景,因为它允许在一个单一文件中结合不同类型的地理空间元素。 -
优化的网络传输:合并多种数据类型到一个文件中可以减少网络请求的数量,从而提高加载速度和性能,特别是在网络条件受限的环境中。
-
与 3D Tiles 生态系统的兼容性:
.cmpt
文件完全兼容 3D Tiles 规范和生态系统,包括与空间索引、多级细节(LOD)等技术的集成,以优化数据的可视化和性能。
总的来说,.cmpt
文件在 3D Tiles 数据格式中扮演着集成和优化角色,尤其适用于那些需要同时处理多种不同地理空间数据类型的应用。通过这种方式,开发者可以更有效地管理和渲染复杂的三维场景。
1.2.5 json
在 3D Tiles 数据格式中,.json
文件通常作为 Tileset JSON 文件,起着至关重要的角色。Tileset JSON 文件描述了整个 3D Tiles 数据集的结构、层级和属性。其主要特点包括:
-
数据集结构描述:Tileset JSON 文件定义了整个 3D Tiles 数据集的层级结构。它包含对每个单独瓦片(如
.b3dm
、.i3dm
、.pnts
、.cmpt
等)的引用,以及这些瓦片是如何相互关联的信息。 -
多级细节(LOD)信息:这种文件包含有关数据集中不同级别细节的信息。这意味着它描述了在不同的视图距离下应当加载哪些瓦片,以优化性能和视觉效果。
-
空间分割和索引:Tileset JSON 文件通常包含空间分割信息,如边界盒(bounding boxes)或体积(volumes),这些信息用于快速确定在给定视图或查询中需要渲染或处理哪些瓦片。
-
元数据和属性:除了结构信息,Tileset JSON 文件还可以包含关于数据集的元数据和属性,如版权信息、瓦片创建日期、地理位置信息等。
-
灵活性和扩展性:由于基于 JSON(JavaScript Object Notation)格式,Tileset JSON 文件易于读写,同时也易于扩展,可以适应各种不同的应用需求。
-
与 Web 技术的兼容性:JSON 是 Web 开发中广泛使用的一种数据格式,这使得 Tileset JSON 文件可以轻松地与基于 Web 的地理信息系统(GIS)、虚拟现实(VR)应用和其他三维数据可视化工具集成。
总的来说,Tileset JSON 文件在 3D Tiles 数据集中扮演着导航图的角色,指导着如何高效地加载和渲染复杂的三维数据。通过使用 Tileset JSON,可以实现对大规模和复杂的三维数据集的高效管理和可视化。
1.2.6 总结
上述提到的五种 3D Tiles 数据格式(.b3dm
, .i3dm
, .pnts
, .cmpt
, 和 .json
)各自适用于不同的应用场景:
-
.b3dm
(Batched 3D Model):- 城市建筑和规划:适用于渲染大型建筑群或复杂的城市景观。
- 历史建筑和文化遗产的数字化:用于表示历史建筑群或遗址的详细三维模型。
- 虚拟现实和游戏环境:在虚拟环境中创建复杂的三维结构和景观。
-
.i3dm
(Instanced 3D Model):- 自然环境建模:如树木、植被等自然元素的大规模实例化。
- 城市设施建模:如街道灯柱、交通标志等重复元素的高效渲染。
- 室内设计和家具布局:家具或其他室内元素的多次实例化。
-
.pnts
(Point Cloud):- 地理信息系统(GIS)和地形分析:展示详细的地形、地貌等。
- 建筑和工程扫描:用于显示通过激光扫描技术获得的建筑或工程结构。
- 考古和文化遗产保护:记录和展示考古发掘现场或古迹的详细点云数据。
-
.cmpt
(Composite Tile):- 复合场景渲染:同时包含多种类型数据(如建筑、植被、地形等)的场景。
- 数据集成和管理:将来自不同源的三维数据整合到单个文件中,简化管理。
- 多功能应用开发:需要展示和操作不同类型三维数据的应用程序。
-
.json
(Tileset JSON):- 3D Tiles 数据集的组织和管理:定义和描述整个3D Tiles 数据集的结构和属性。
- 动态数据加载:在需要时确定加载哪些数据瓦片,优化性能和用户体验。
- 互动式视觉化和地理空间应用:用于驱动基于Web的地理信息系统、虚拟现实等应用的数据结构和视图管理。
每种格式都针对特定的数据特征和应用需求设计,共同构成了一个强大且灵活的工具集,用于处理和呈现复杂的三维地理空间数据。
2 3DTiles格式详解
只要把官方文档好好过一遍就行。只是比较考验英语功底了,哈哈。