Cesium 3DTiles数据格式详解

news2024/9/22 19:27:49

目录

  • 0 引言
  • 1 3DTiles
    • 1.1 起源
    • 1.2 后缀类型及特点
      • 1.2.1 b3dm
      • 1.2.2 i3dm
      • 1.2.3 pnts
      • 1.2.4 cmpt
      • 1.2.5 json
      • 1.2.6 总结

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:CesiumforUnreal专栏
  • 💥 标题:Cesium 3DTiles数据格式详解
  • ❣️ 寄语:好好努力,发挥自己的极限!
  • 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正,同时有问题的话,欢迎大家留言讨论。

0 引言

最近在使用Cesium的过程中,无法避免和3DTiles格式数据打交道,但是一直一知半解,今天就详细学习一下这个知识。

1 3DTiles

1.1 起源

3D Tiles 是一种用于流式传输大型三维地理空间数据集的开放规范,主要由 Cesium 创造。这种数据格式的创建背后有几个关键原因:

  1. 高效的数据管理和流式传输:传统的3D数据格式并不适合大规模地理空间数据集的高效流式传输和渲染。3D Tiles 旨在解决这个问题,通过分层级和按需加载的方式,使得大型数据集可以在各种设备上高效地渲染和导航,无论数据集有多大。

  2. 多样化的数据类型支持:3D Tiles 支持多种不同的数据类型,包括点云、3D建模、影像等,这使其成为一种多功能的数据格式,适用于各种不同的地理空间数据应用场景。

  3. 与现有技术的兼容性: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”。这种文件格式主要用于高效地存储和传输多个三维模型。其特点包括:

  1. 批处理优化.b3dm 文件将多个3D模型组合成一个“批次”,使得这些模型可以作为一个整体进行处理和渲染。这种批处理方法大大提高了渲染效率,尤其是在处理包含大量小模型的场景时,例如城市建筑群。

  2. 空间索引和多级细节:与 3D Tiles 的其他组件一样,.b3dm 文件通常与空间索引和多级细节(LOD)技术结合使用。这意味着模型的细节级别会根据观察者的位置和视角动态调整,以优化性能和视觉效果。

  3. 自定义属性支持.b3dm 文件可以包含与每个模型相关的自定义属性,例如颜色、纹理和元数据。这些属性可用于更加个性化和详细地渲染每个模型。

  4. 与 WebGL 和其他Web技术的兼容性:由于 3D Tiles 和.b3dm 文件格式是为Web环境设计的,它们与 WebGL 等Web图形技术高度兼容,使得在浏览器中渲染这些模型变得容易和高效。

  5. 压缩和优化.b3dm 文件通常进行压缩处理,以减少文件大小,加快网络传输速度。这对于大型在线地理空间数据应用尤为重要。

综上所述,.b3dm 文件在 3D Tiles 规范中扮演着重要角色,特别是在处理大量3D建筑模型和其他复杂三维结构时,其优化的批处理和渲染机制显得尤为关键。

1.2.2 i3dm

.i3dm 是 3D Tiles 数据格式中的另一种特定文件类型,全称为 “Instanced 3D Model”。这种文件格式专门用于高效地存储和渲染大量重复的三维模型实例。其主要特点包括:

  1. 实例化渲染.i3dm 文件允许将单个模型的多个实例以高效的方式存储和渲染。这意味着相同的模型可以在不同的位置和方向多次出现,而无需为每个复制存储完整的模型数据。

  2. 空间和渲染优化:使用实例化方法可以大大减少存储和内存占用,同时提高渲染性能。这在处理大量重复对象(如树木、灯柱、车辆等)的场景中特别有效。

  3. 多样性和可配置性:尽管实例是基于同一个模型,但.i3dm 允许对每个实例进行一些变化,例如位置、方向、比例甚至颜色和纹理。这提供了一定程度的可视化多样性。

  4. 与 3D Tiles 其他组件的集成:与 3D Tiles 的其他组件一样,.i3dm 文件通常结合使用空间索引和多级细节(LOD)技术,以优化性能和视觉效果。

  5. Web技术兼容性:类似于.b3dm.i3dm 文件也是为与 WebGL 和其他 Web 图形技术高度兼容而设计的,这使得它们非常适合于Web环境中的三维数据应用。

综上所述,.i3dm 文件格式在处理需要大量重复元素的三维场景时非常有用,如城市规划、虚拟现实和游戏环境等。通过实例化技术,.i3dm 能够以更少的资源占用实现复杂场景的高效渲染。

1.2.3 pnts

.pnts 是 3D Tiles 数据格式中专门用于点云数据的文件类型。点云数据是由大量的小点组成的数据集,通常用于表示真实世界的三维形状和特征。.pnts 文件的主要特点包括:

  1. 高密度点云存储.pnts 文件格式设计用于高效地存储和处理大量的点云数据。每个点可以包含多种信息,如位置、颜色、强度和其他属性。

  2. 适用于大规模空间数据:这种格式特别适合于处理大规模的三维空间数据,例如从激光扫描(LIDAR)或摄影测量技术中获得的数据。

  3. 支持多种属性:除了基本的位置信息,.pnts 文件还可以包含点的其他属性,如RGB颜色、透明度、法线向量、温度、反射率等,这些属性对于更准确和详细地表示点云数据非常重要。

  4. 级别细节和视图依赖渲染:类似于 3D Tiles 的其他组件,.pnts 文件支持多级细节(LOD),允许根据视图距离和角度动态调整点的细节和密度,优化渲染性能和用户体验。

  5. Web和现代图形技术的兼容性:作为 3D Tiles 规范的一部分,.pnts 文件格式与现代Web图形技术(如 WebGL)兼容,使得在浏览器和其他基于Web的平台上渲染点云数据变得高效和易于实现。

.pnts 文件因其对大量点云数据的高效处理而被广泛用于各种应用,包括地理信息系统(GIS)、城市规划、虚拟现实、历史遗迹保护等领域。通过使用.pnts格式,开发者可以创建详细且交互性强的三维场景,提供丰富的用户体验。

1.2.4 cmpt

.cmpt(Composite Tile)是 3D Tiles 数据格式中的一种文件类型,用于将多种不同类型的 3D Tiles 数据合并成一个单一的文件。这种文件格式的主要特点包括:

  1. 数据多样性.cmpt 文件可以包含不同类型的 3D Tiles 数据,例如点云(.pnts)、批处理的3D模型(.b3dm)、实例化的3D模型(.i3dm)等。这种多样性使得.cmpt文件能够同时表示多种不同的地理空间数据。

  2. 高效的数据管理:通过将多种数据类型合并到一个文件中,.cmpt 文件可以简化数据管理和传输。这对于需要同时处理多种数据类型的应用场景(如复杂的城市模型)特别有用。

  3. 灵活的场景构建:使用.cmpt文件,开发者可以更灵活地构建复杂场景,因为它允许在一个单一文件中结合不同类型的地理空间元素。

  4. 优化的网络传输:合并多种数据类型到一个文件中可以减少网络请求的数量,从而提高加载速度和性能,特别是在网络条件受限的环境中。

  5. 与 3D Tiles 生态系统的兼容性.cmpt 文件完全兼容 3D Tiles 规范和生态系统,包括与空间索引、多级细节(LOD)等技术的集成,以优化数据的可视化和性能。

总的来说,.cmpt 文件在 3D Tiles 数据格式中扮演着集成和优化角色,尤其适用于那些需要同时处理多种不同地理空间数据类型的应用。通过这种方式,开发者可以更有效地管理和渲染复杂的三维场景。

1.2.5 json

在 3D Tiles 数据格式中,.json 文件通常作为 Tileset JSON 文件,起着至关重要的角色。Tileset JSON 文件描述了整个 3D Tiles 数据集的结构、层级和属性。其主要特点包括:

  1. 数据集结构描述:Tileset JSON 文件定义了整个 3D Tiles 数据集的层级结构。它包含对每个单独瓦片(如.b3dm.i3dm.pnts.cmpt 等)的引用,以及这些瓦片是如何相互关联的信息。

  2. 多级细节(LOD)信息:这种文件包含有关数据集中不同级别细节的信息。这意味着它描述了在不同的视图距离下应当加载哪些瓦片,以优化性能和视觉效果。

  3. 空间分割和索引:Tileset JSON 文件通常包含空间分割信息,如边界盒(bounding boxes)或体积(volumes),这些信息用于快速确定在给定视图或查询中需要渲染或处理哪些瓦片。

  4. 元数据和属性:除了结构信息,Tileset JSON 文件还可以包含关于数据集的元数据和属性,如版权信息、瓦片创建日期、地理位置信息等。

  5. 灵活性和扩展性:由于基于 JSON(JavaScript Object Notation)格式,Tileset JSON 文件易于读写,同时也易于扩展,可以适应各种不同的应用需求。

  6. 与 Web 技术的兼容性:JSON 是 Web 开发中广泛使用的一种数据格式,这使得 Tileset JSON 文件可以轻松地与基于 Web 的地理信息系统(GIS)、虚拟现实(VR)应用和其他三维数据可视化工具集成。

总的来说,Tileset JSON 文件在 3D Tiles 数据集中扮演着导航图的角色,指导着如何高效地加载和渲染复杂的三维数据。通过使用 Tileset JSON,可以实现对大规模和复杂的三维数据集的高效管理和可视化。

1.2.6 总结

上述提到的五种 3D Tiles 数据格式(.b3dm, .i3dm, .pnts, .cmpt, 和 .json)各自适用于不同的应用场景:

  1. .b3dm(Batched 3D Model)

    • 城市建筑和规划:适用于渲染大型建筑群或复杂的城市景观。
    • 历史建筑和文化遗产的数字化:用于表示历史建筑群或遗址的详细三维模型。
    • 虚拟现实和游戏环境:在虚拟环境中创建复杂的三维结构和景观。
  2. .i3dm(Instanced 3D Model)

    • 自然环境建模:如树木、植被等自然元素的大规模实例化。
    • 城市设施建模:如街道灯柱、交通标志等重复元素的高效渲染。
    • 室内设计和家具布局:家具或其他室内元素的多次实例化。
  3. .pnts(Point Cloud)

    • 地理信息系统(GIS)和地形分析:展示详细的地形、地貌等。
    • 建筑和工程扫描:用于显示通过激光扫描技术获得的建筑或工程结构。
    • 考古和文化遗产保护:记录和展示考古发掘现场或古迹的详细点云数据。
  4. .cmpt(Composite Tile)

    • 复合场景渲染:同时包含多种类型数据(如建筑、植被、地形等)的场景。
    • 数据集成和管理:将来自不同源的三维数据整合到单个文件中,简化管理。
    • 多功能应用开发:需要展示和操作不同类型三维数据的应用程序。
  5. .json(Tileset JSON)

    • 3D Tiles 数据集的组织和管理:定义和描述整个3D Tiles 数据集的结构和属性。
    • 动态数据加载:在需要时确定加载哪些数据瓦片,优化性能和用户体验。
    • 互动式视觉化和地理空间应用:用于驱动基于Web的地理信息系统、虚拟现实等应用的数据结构和视图管理。

每种格式都针对特定的数据特征和应用需求设计,共同构成了一个强大且灵活的工具集,用于处理和呈现复杂的三维地理空间数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1325239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

26 在Vue3中使用计算属性

概述 计算属性在真实的开发中也经常被用到。 比如在我最近在研发的一个学生管理系统中,学生有“所属省份”和“所属城市”两个独立属性,比如所属省份是四川,所属城市是成都,但是我们显示的时候要显示为“四川/成都”&#xff0c…

鸿蒙 - arkTs:渲染(循环 - ForEach,判断 - if)

ForEach循环渲染: 参数: 要循环遍历的数组,Array类型遍历的回调方法,Function类型为每一项生成唯一标识符的方法,有默认生成方法,非必传 使用示例: interface Item {name: String,price: N…

无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测

无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测 无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测介绍题目一. 背景(解决的问题)二. 系统模型2.1 信道模型2.1.1 信道系数2.1.2 进行标准化 2.2 信道估计 和 数据传输2.2.1 信道估计…

【️如何理解Java中的多态】

✅如何理解Java中的多态? ✅理解Java中的多态 ✅ 扩展知识仓✅方法的重载✅方法的重写✅重载和重写的区别区分 ✅理解Java中的多态 多态的概念比较简单,就是同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。 如果…

MT6785|MTK6785安卓核心板功能规格介绍_Helio G95核心板

MT6785安卓核心板是一款功能强大的工业级4G智能模块,它采用了Android 9.0操作系统。该核心板内置了蓝牙、FM、WLAN和GPS模块,具有高度集成的基带平台,结合了调制解调器和应用处理子系统,以支持LTE/LTE-A和C2K智能终端应用。 MTK67…

11.2 设备树下的 LED 驱动

一、修改设备树文件 首先进入该目录下 /linux/atk-mpl/linux/my_linux/linux-5.4.31/arch/arm/boot/dts 打开 stm32mp157d-atk.dts 文件,在根节点 "/" 最后输入以下内容: stm32mp1_led {compatible "atkstm32mp1-led"; // 设置…

Gobuster工具详解

目录 Gobuster工具介绍 主要特性 支持模式及全局参数列举 安装 使用 Dir模式 DNS模式 Vhost模式 fuzz模式 TFTP模式 S3、gcs模式 字典 docker运行gobuster Gobuster工具介绍 Gobuster 是一款用于在Web应用程序中进行目录和文件爆破的开源工具。它通过尝试在目标网…

【超详细】基于单片机控制的十字道路口交通灯控制

目录 最终效果 一、设计任务 二、设计报告 1 设计说明 1.1功能分析 1.1.1整体系统功能分析 1.1.2显示状态功能分析 1.1.3设置状态功能分析 1.1.4紧急状态功能分析 1.2方案比选 1.2.1车辆LED数码管倒计时显示板块 1.2.2车辆信号灯显示板块 1.2.3行人信号灯显示板块 …

JavaWeb笔记之前端开发CSS

一 、引言 1.1 CSS概念 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页&…

Open5GSUeRANSim2:对安装在同一个VM上的OPEN5GS和UERANSIM进行配置和抓取wireshark报文

参考链接: Configuring SCTP & NGAP with UERANSIM and Open5GS on a Single VM for the Open5GS & UERANSIM Series https://www.youtube.com/watch?vINgEX5L5fkE&listPLZqpS76PykwIoqMdUt6noAor7eJw83bbp&index5 Configuring RRC with UERANSI…

YOLOv5性能评估指标->mAP、Precision、Recall、FPS、Confienc (讲解论文关注的主要指标)

简介 这篇博客,主要给大家讲解我们在训练yolov5时生成的结果文件中各个图片及其中指标的含义,帮助大家更深入的理解,以及我们在评估模型时和发表论文时主要关注的参数有那些。本文通过举例训练过程中的某一时间的结果来帮助大家理解&#xf…

LeetCode:162. 寻找峰值、1901. 寻找峰值 II(二分 C++)

目录 162. 寻找峰值 题目描述: 实现代码与解析: 二分 原理思路: 1901. 寻找峰值 II 题目描述: 实现代码与解析: 二分 原理思路: 162. 寻找峰值 题目描述: 峰值元素是指其值严格大于左…

持续集成交付CICD:HELM 自动化完成前端项目应用发布与回滚

目录 一、实验 1.环境 2. GitLab 共享库新建HELM CI流水线 3.Jenkins新建HELM CI流水线 5.Jenkins构建前端项目 6.GitLab 共享库新建HELM CD流水线 7.Jenkins新建HELM CD流水线 8.HELM完成前端项目应用发布与回滚 9.Jenkins再次构建前端项目 10.HELM再次完成前端项目…

在灾难推文分析场景上比较用 LoRA 微调 Roberta、Llama 2 和 Mistral 的过程及表现

引言 自然语言处理 (NLP) 领域的进展日新月异,你方唱罢我登场。因此,在实际场景中,针对特定的任务,我们经常需要对不同的语言模型进行比较,以寻找最适合的模型。本文主要比较 3 个模型: RoBERTa、Mistral-7B 及 Llama-…

HP服务器idrac设置以及系统安装

HP服务器idrac设置以及系统安装 一、设置管理口的地址和密码1、HP服务器重新界面选择"F9"进入BIOS,设置iLo5(idrac)的IP和用户名密码。2、选择"系统配置"。3、选择"iLO 4"配置程序。4、网络选项是设置idrac管理口的地址,设…

使用C语言实现文件的拷贝——底层内存分析

使用C语言实现文件的拷贝 本文主要涉及sprintf()函数的讲解以及系统IO与标准IO的区别和一个实例使用C语言实现文件的拷贝,在最后还深度刨析了文件拷贝的底层原理。 文章目录 使用C语言实现文件的拷贝一、 sprintf()函数1.1 sprintf ()函数的参…

Java版直播商城免 费 搭 建:电商、小程序、三级分销及免 费 搭 建,平台规划与营销策略全掌握

随着互联网的快速发展,越来越多的企业开始注重数字化转型,以提升自身的竞争力和运营效率。在这个背景下,鸿鹄云商SAAS云产品应运而生,为企业提供了一种简单、高效、安全的数字化解决方案。 鸿鹄云商SAAS云产品是一种基于云计算的软…

Netty Review - ObjectEncoder对象和ObjectDecoder对象解码器的使用与源码解读

文章目录 概述ObjectEncoderObjectDecoder Code源码分析ObjectEncoderObjectDecoder 小结 概述 Netty是一个高性能、异步的网络应用程序框架,它提供了对TCP、UDP和文件传输的支持。在Netty中,数据的发送和接收都是以字节流的形式进行的,因此需…

从实践角度优化数据库设计:深入解析三范式的应用

总述 第一范式(1NF):要求关系模式中的每个属性都是不可分的数据项,即属性具有原子性。第二范式(2NF):在满足1NF的基础上,要求关系模式中的所有非主属性都完全函数依赖于整个候选键(或主键)。第三范式(3NF):在满足2NF的基础上,要求关系模式中的每个非主属性都不传…

LVS最终奥义之DR直接路由模式

1 LVS-DR(直接路由模式) 1.1 LVS-DR模式工作过程 1.客户端通过VIP将访问请求报文(源IP为客户端IP,目标IP为VIP)发送到调度器 2.调度器通过调度算法选择最适合的节点服务器并重新封装数据报文(将源mac地址改为调度器的mac地址&am…