Cesium 3DTiles数据格式详解

目录

  • 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.mzph.cn/news/235496.shtml

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

相关文章

【Netty】Netty核心API及使用

目录 Netty核心APIChannelHandler及其实现类ChannelPipelineChannelHandlerContextChannelOptionChannelFutureEventLoopGroup和实现类NioEventLoopGroupServerBootstrap和BootstrapUnpooled类 Netty入门案例引入依赖Netty服务端编写Netty客户端编写 Netty核心API ChannelHand…

智能优化算法应用:基于龙格-库塔算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于龙格-库塔算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于龙格-库塔算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.龙格-库塔算法4.实验参数设定5.算法结果…

FPGA模块——以太网芯片MDIO读写

FPGA模块——以太网MDIO读写 MDIO接口介绍MDIO接口代码(1)MDIO接口驱动代码(2)使用MDIO驱动的代码 MDIO接口介绍 MDIO是串行管理接口。MAC 和 PHY 芯片有一个配置接口,即 MDIO 接口,可以配置 PHY 芯片的工…

读书笔记产品经理学习笔记1-忘掉技术,先看客户需求

技术到产品思维的转换 以前做技术的时候,扮演的角色是怎样多快好省的完成开发。现在做产品了,你得自己定产品方案,让别人来开发。最重要的是先弄清楚客户的需求是什么,要解决什么问题,再看产品怎么设计,然…

你想改win11系统中窗口、菜单等的字体? 微软不想让你改

如果你感觉win11系统中显示的字体不好看,想换。等一等,微软本不想让你改。 Windows 11 在默认情况下并没有提供直接修改系统默认字体的选项,而需要进行注册表或其他高级设置来更改系统字体。这可能是因为微软希望保持系统的一致性和稳定性&a…

[Realtek sdk-3.4.14b]RTL8197FH-VG+RTL8812F WiFi使用功率限制功能使用说明

sdk说明 ** Gateway/AP firmware v3.4.14b – Aug 26, 2019**  Wireless LAN driver changes as:  Refine WiFi Stability and Performance  Add 8812F MU-MIMO  Add 97G/8812F multiple mac-clone  Add 97G 2T3R antenna diversity  Fix 97G/8812F/8814B MP issu…

可狱可囚的爬虫系列课程 07:BeautifulSoup4(bs4)库的使用

前面一直在讲 Requests 模块如何使用,那都是在请求阶段要做的事情,相信很多网友都在等一个能够开始爬网站信息的教程,今天它来了,今天我要给大家讲一个很简单易懂的库:BeautifulSoup4。 一、概述&安装 Beautiful…

KylinV10 安装 MySQL 教程(可防踩雷)

KylinV10 安装 MySQL 教程(可防踩雷) 1、直接用 apt 快捷安装 MySQL $ sudo apt-get update #更新软件源 $ sudo apt-get install mysql-server #安装mysql然后你会发现,KylinV10 安装畅通无阻,并没有设置密码的场景&#xff0c…

你相信光吗?2D 后效与光照技术分享!

“ 很多朋友提到后效,就会想起那些 3D 游戏大作,但实际上,后效在 2D 游戏开发中的应用也是非常广泛的。恰当地使用后效,可以使一款 2D 游戏的画质提升好几个台阶。今天邀请到了社区大佬 wing,给大家分享一下 2D 后效框…

MyBatis ORM映射

MyBatis只能自动维护库表”列名“与”属性名“相同时的对应关系&#xff0c;二者不同时无法自动ORM 因此需要使用到ORM映射。 共有两种解决办法&#xff1a;1.列的别名 2.结果映射 1.列的别名 在SQL中使用 as 为查询字段添加列别名&#xff0c;以匹配属性名 public List<…

nodejs+vue+微信小程序+python+PHP高校成绩分析系统-计算机毕业设计推荐

综合购物商城管理经历和对网上信息归纳整理的结果&#xff0c;在实际应用中&#xff0c;将用户分为两种&#xff1a;管理员和高校成绩分析系统综合网络空间开发设计要求。目的是将高校成绩分析从传统管理方式转换为在网上管理&#xff0c;完成高校成绩分析管理的方便快捷、安全…

pyCharm 创建一个FastApi web项目,实现接口调用

FastApi和Django区别 我这边演示项目使用的fastApi作为web框架&#xff0c;当然主流一般都是使用Django做web框架&#xff0c;但是Django是一个重量级web框架他有很多组件&#xff0c;如授权&#xff0c;分流等全套web功能。我这边呢只需要有个接口可以被别人调用&#xff0c;…

【超详细前后端项目搭建】前端vue3+ts项目(引入ElementPlus、Axios)、后端springboot搭建(创建接口操作mysql数据库)实现前后端联调

目录 前言一、前端项目1、使用vue脚手架创建项目1.1检查vue版本1.2 使用vue脚手架创建项目 2、删除项目多余文件&#xff0c;修改配置项目2.1、删除以下文件2.1、在views下创建index文件2.2、修改router/index.ts路由文件&#xff1a;2.3、修改App.vue文件&#xff1a;2.4、初始…

气候变化与环境保护:全球研究与未来趋势

导言 气候变化和环境保护是当今社会亟待解决的全球性难题。本文将深入探讨这一主要流行研究方向的发展历程、遇到的问题、解决过程&#xff0c;以及未来的可用范围&#xff0c;着重分析在各国的应用和未来的研究趋势&#xff0c;以探讨在哪些方面能够取得胜利&#xff0c;以及在…

PySpark中DataFrame的join操作

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…

期货开平规则(期货交易开平规则解析)

什么是期货开平规则 期货开平规则&#xff0c;简单来说是指期货交易中的开仓和平仓所遵循的一系列规定。具体而言&#xff0c;开仓是指买入或卖出期货合约&#xff0c;建立一个新的持仓&#xff1b;平仓则是指买入或卖出相应数量的期货合约&#xff0c;用以解除原有持仓。开平…

什么是数据仪表板?数据可视化仪表盘怎么制作?

在数据经济时代&#xff0c;分析数据是每个企业做出最佳决策的关键。但是&#xff0c;手动分析和解释大量数据是不可行的。数据可视化对于分析数据中存在的各种有价值信息至关重要&#xff0c;包括可见趋势和隐藏趋势等。仪表盘显示可视化趋势和信息&#xff0c;例如 KPI、趋势…

简易实现 STL--list

实现 list 的主要思想及过程 首先&#xff0c;实现过程中的所有代码必须放在自己定义的命名空间中。 定义一个结点的结构体类模板&#xff0c;结点的数据类型就应该是模板类型 T&#xff0c;定义的 next指针和 prev指针都应该是模板指针类型&#xff0c;并且结构体类中药有构…

2017年第六届数学建模国际赛小美赛A题飓风与全球变暖解题全过程文档及程序

2017年第六届数学建模国际赛小美赛 A题 飓风与全球变暖 原题再现&#xff1a; 飓风&#xff08;也包括在西北太平洋被称为“台风”的风暴以及在印度洋和西南太平洋被称为“严重热带气旋”&#xff09;具有极大的破坏性&#xff0c;往往造成数百人甚至数千人死亡。   许多气…

UE4移动端最小包优化实践

移动端对于包大小有着严苛的要求,然而UE哪怕是一个空工程打出来也有90+M,本文以一个复杂的工程为例,探索怎么把包大小降低到最小。 一、工程简介 工程包含代码、插件、资源、iOS原生库工程。 二、按官方文档进行基础优化 官方文档 1、勾选Use Pak File和Create comp…