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.rhkb.cn/news/221480.html

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

相关文章

[DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案

[网络故障] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案 问题描述 最近,我在使用CSDN插件浏览 MOOC 网站时,遇到了一些网络故障。具体表现为: MOOC 中国大学慕课网:www.icourse163.org点击CSDN插件首页的 MOOC&#xff08…

【漏洞复现】CVE-2023-6895 IP网络对讲广播系统远程命令执行

漏洞描述 杭州海康威视数字技术有限公司IP网络对讲广播系统。 海康威视对讲广播系统3.0.3_20201113_RELEASE(HIK)存在漏洞。它已被宣布为关键。该漏洞影响文件/php/ping.php 的未知代码。使用输入 netstat -ano 操作参数 jsondata[ip] 会导致 os 命令注入。 开发语言:PHP 开…

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

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

大数据处理与分析-Spark

导论 (基于Hadoop的MapReduce的优缺点) MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架 MapReduce是一种用于处理大规模数据集的编程模型和计算框架。它将数据处理过程分为两个主要阶段:Map阶…

Python算法例19 创建最大数

1. 问题描述 给定两个长度分别是m和n的数组,数组的每个元素都是数字0~9,从这两个数组当中选出k个数字来创建一个最大数,其中k满足k<mn,选出来的数字在创建最大数里的位置必须与在原数组内的相对位置一致。返回k个元素…

宝塔Linux面板计划任务:文件夹改名方式天天切割日志脚本

新手第一次操作,目测成功且完美,供大家参考 current_time$(date %Y%m%d%H%M%S) old_folder_name"/www/wwwlogs" new_folder_name"/www/wwwlogs_${current_time}" mv "$old_folder_name" "$new_folder_name" m…

layui 树组件tree 通过API获取数据

一、简单 var treedata[];tree.render({elem: #addLeftType,id: demoId,data: treedata,showCheckbox: true,oncheck: function(obj){console.log(obj.data); // 得到当前点击的节点数据console.log(obj.checked); // 节点是否被选中console.log(obj.elem); // 得到当前节点元素…

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

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

npm安装依赖报错ERESOLVE unable to resolve dependency tree(我是在taro项目中)(node、npm 版本问题)

换了电脑之后新电脑安装包出错 👇👇👇 npm install 安装包报错 ERESOLVE unable to resolve dependency tree 百度后尝试使用 npm install --force 还是报错 参考 有人说是 node 版本和 npm 版本的问题 参考 新电脑 node版本:16.1…

HackTheBox - Medium - Windows - Aero

Aero 这个机器利用了今年比较新的cve,关于windows11的漏洞,类似于lnk、scf,但这个危害更高,通过易受攻击的windows11 利用theme、msstyles来实现RCE. Aero 是一台中等难度的 Windows 机器,最近有两个 CVE:…

Apache Tomcat httpoxy 安全漏洞 CVE-2016-5388 已亲自复现

Apache Tomcat httpoxy 安全漏洞 CVE-2016-5388 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用修复建议 总结 漏洞名称 漏洞描述 在Apache Tomcat中发现了一个被归类为关键的漏洞,该漏洞在8.5.4(Application Server Soft ware)以下。受影响的是组…

语音识别与人机交互:发展历程、挑战与未来前景

导言 语音识别技术作为人机交互领域的重要组成部分,近年来取得了巨大的发展。本文将深入研究语音识别与人机交互的发展历程、遇到的问题、解决过程、未来的可用范围,以及在各国的应用和未来的研究趋势。我们将探讨在这个领域,哪一方能取得竞争…

comfyUI + animateDiff video2video AI视频生成工作流介绍及实例

原文:comfyUI animateDiff video2video AI视频生成工作流介绍及实例 - 知乎 目录 收起 前言 准备工作环境 comfyUI相关及介绍 comfyUI安装 生成第一个视频 进一步生成更多视频 注意事项 保存为不同的格式 视频宽高设置 种子值设置 提示词与负向提示词…

如何将图片转为PDF

问题描述:如何将图片转为PDF,有时需要将纸质文档扫描成PDF,然后上传到网上。 解决办法:平时使用的方法是将图片插入到word文件中,然后将图片设置为浮于文字下方,然后调整图片的大小,铺满整个wo…

如何进一步优化Ubuntu服务器的性能

导读: 要进一步优化Ubuntu服务器的性能,您可以考虑以下几个方面:优化软件包管理: Ubuntu使用APT(Advanced Package Tool)作为其软件包管理工具。为了提高性能,您可以采取以下措施 要进一步优化U…

C# Tcplistener,Tcp服务端简易封装

文章目录 前言相关文章前言设计代码简单使用运行结果 前言 我最近有个需求要写Tcp服务端,我发现Tcp服务端的回调函数比较麻烦,简化Tcp的服务,我打算自己封装一个简单的Tcp服务端。 相关文章 C# TCP应用编程三 异步TCP应用编程 C# Tcpclient…

【ArcGIS微课1000例】0081:ArcGIS指北针乱码解决方案

问题描述: ArcGIS软件在作图模式下插入指北针,出现指北针乱码,如下图所示: 问题解决 下载并安装字体(配套实验数据包0081.rar中获取)即可解决该问题。 正常的指北针选择器: 专栏介绍&#xff…

Python Pandas Excel/csv文件的保存与读取(第14讲)

Python Pandas Excel/csv文件的读取于保存(第14讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…

Redis BitMap(位图)

这里是小咸鱼的技术窝(CSDN板块),我又开卷了 之前经手的项目运行了10多年,基于重构,里面有要实现一些诸如签到的需求,以及日历图的展示,可以用将签到信息存到传统的关系型数据库(MyS…

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

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