利用 3D 地理空间数据实现Cesium的沉浸式环境
推荐:使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景
为了将大量异构 3D 地理空间数据处理和分散到各行各业的地理空间应用程序和运行时引擎,Cesium 创建了 3D Tiles,这是一种用于高效流式传输和渲染大量异构数据集的开放标准。3D Tiles是一种可流式传输的优化格式,旨在支持最苛刻的分析和大规模模拟。
Cesium for Omniverse 是 Cesium 对 NVIDIA Omniverse 的开源扩展。它以惊人的速度和质量在全球范围内提供 3D 图块和现实世界的数字孪生。该扩展使用户能够使用通用场景描述 (OpenUSD) 从任何 3D 地理空间内容源快速、高精度地创建真实世界的模型。
借助 Cesium for Omniverse,您可以使用平铺管道快速启动 3D 地理空间应用程序开发,以流式传输您自己的内容。您还可以通过整合来自常用 3D 和摄影测量应用程序(如 Autodesk、Bentley 软件和 Matterport)的真实环境来增强 3D 内容。
例如,您可以将 Bentley 的铁矿石开采设施的 iTwin 模型与 Cesium 集成,以便项目规划人员在精确的地理空间环境中可视化和分析设施。借助 Cesium for Omniverse,项目规划人员可以使用设施的数字孪生与当地公用事业、工程师和居民共享计划和潜在影响,同时考虑特定于位置的详细信息,例如天气和照明。

图1.Bentley 南非铁矿石开采设施的 iTwin 模型在其精确的地理空间环境中可视化
该扩展程序最有趣的功能之一是准确、全尺寸的 WGS84 虚拟地球仪,具有实时光线追踪和 AI 驱动的 3D 地理空间工作流程分析功能。开发人员可以创建与地球的交互式应用程序,以共享动态地理空间数据。
OpenUSD 3D 瓷砖的新机遇
正如 Cesium 通过与 3D Tiles 的开放性和互操作性来构建 3D 地理空间生态系统一样,NVIDIA 正在实现基于 OpenUSD 的开放和协作的工业元宇宙。OpenUSD 最初由皮克斯开发,是一个开放且可扩展的生态系统,用于在 3D 世界中描述、合成、模拟和协作。
通过将 3D Tiles 连接到 OpenUSD 生态系统,Cesium 为定制 3D Tiles 并将其集成到由全球各行各业的开发人员构建的元界应用程序中开辟了新的可能性。例如,流行的 AECO 工具可以利用 OpenUSD 添加由 Cesium 流式传输的 3D 地理空间上下文,以实现强大的工作流程。
为了进一步与美元互操作,Cesium 的开发人员创建了一个以美元为单位的自定义模式,以支持其全尺寸虚拟地球仪(图 2)。
Cesium的虚拟地球是基于世界大地测量系统 1984 (WGS84) 坐标系的地球表面的数字表示。它涵盖了地球的地形、海洋和大气,使用户能够以高精度和真实感探索和可视化地理空间数据和模型。
创建全尺寸虚拟地球仪

图2.Cesium全尺寸WGS84虚拟地球仪
Cesium 3D 工程和生态系统总监 Shehzan Mohammed 表示:“利用 USD 与 3D Tiles 和 glTF 的互操作性,我们创建了额外的工作流程,例如将内容从 Bentley 的 LumenRT for Omniverse、Trimble Sketchup、Autodesk Revit、Autodesk 3ds Max 和 Esri ArcGIS CityEngine 导入到 NVIDIA Omniverse 中,在精确的 3D 地理空间环境中。
在 Omniverse 中,地球的所有信息(例如切片集、影像图层和地理配准数据)都以美元存储。USD 是虚拟世界的高度可扩展和强大的交换。USD的一个关键功能是自定义架构,您可以使用它为复杂和精密的虚拟世界用例扩展数据。
Cesium的团队开发了一个自定义模式,为虚拟地球的关键元素定义了特定的类。架构的C++层使用 OpenUSD TfNote 系统主动监控状态更改,确保在必要时及时更新图块集。Cesium原生用于高效的磁贴流。Omniverse 的较低级别的 Fabric API 用于磁贴渲染,确保最佳性能和高质量的地球可视化表示。
其结果是一个强大而精确的WGS84虚拟地球仪,创建并无缝集成到USD框架内。
开发扩展
为了开发Omniverse的扩展,Cesium的开发人员利用Omniverse Kit,一个低代码工具包来帮助开发人员开始构建工具。Omniverse 工具包在 Omniverse 中提供了示例应用程序、模板和常用组件,它们充当强大应用程序的构建块。
Omniverse Kit同时支持Python和C++。扩展的代码主要用 Python 编写,而磁贴流代码是用 C++ 实现的。Python 代码和 C++ 代码之间的通信尽可能使用 PyBind11 绑定和 Carbonite 插件的组合。

图3.全宇宙中的Cesium离子延伸
在项目的初始阶段,团队严重依赖 作为参考。在熟悉了该平台后,他们开始利用 Omniverse Kit 的高度模块化设计,并开发了自己的 Kit 应用程序来促进开发过程。此应用程序充当了整个 Cesium 团队的通用开发环境,他们可以在其中建立自己的默认设置并轻松启用常用扩展。kit-extension-template-cpp
Cesium 使用了许多现有的 Omniverse Kit 扩展,例如 和 ,并创建了自己的扩展来简化任务执行。例如,他们的扩展Cesium电动工具具有更高级的开发人员工具,例如地理空间坐标转换以及将太阳研究与场景的地理配准信息同步。他们计划在未来开发更多这样的扩展,因为他们与Omniverse一起扩展。omni.example.uiomni.kit.debug.vscode
高性能流媒体
维护 3D Tile 和全球内容的高性能流式处理对于 Cesium 的街道级到全球规模的工作负载来说可能是一个挑战。为了解决这个问题,他们的团队依靠 Omniverse Fabric API,该 API 支持高性能创建、修改和访问场景数据。结构在实现 Cesium 的最佳性能水平、提高加载速度、运行时性能、模拟性能和 GPU 上数据的可用性方面发挥着至关重要的作用。

图4.墨尔本街道级摄影测量由 30 GB 和超过 500,000 个单独的网格组成。图片由Aerometrex提供
Cesium 以 Fabric 为基础,整合了一个对象池机制,可以在瓷砖卸载时回收几何体和材料,从而优化资源利用率。切片流式处理通过 HTTP 或本地文件系统进行,从而提供高效的数据传输。
原文链接:利用 3D 地理空间数据实现Cesium的沉浸式环境 (mvrlink.com)
相关文章:
利用 3D 地理空间数据实现Cesium的沉浸式环境
推荐:使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 为了将大量异构 3D 地理空间数据处理和分散到各行各业的地理空间应用程序和运行时引擎,Cesium 创建了 3D Tiles,这是一种用于高效流式传输和渲染大量异构数据集的开放标准。3D Tile…...
微服务——ES实现自动补全
效果展示 在搜索框根据拼音首字母进行提示 拼音分词器 和IK中文分词器一样的用法,按照下面的顺序执行。 # 进入容器内部 docker exec -it elasticsearch /bin/bash# 在线下载并安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch…...
北斗+5G 织就精确定位的“天罗地网”
今年,邓中亮更忙了。 外部会议,内部讨论,课题研究,还有疫情困扰期间没能出的差铆足劲似的补上,一天里,从离开床和回到床中间的时间都被工作冠名了。 北京邮电大学教授邓中亮 忙碌的加速键在2020年按下暂停…...
Ansible Roles详解
Ansible 的角色(Roles)是一种组织和管理任务和变量的方法,可以帮助您更好地组织和重用 Ansible 代码。角色是一个可重用的、自包含的 Ansible 单元,它封装了一组任务和变量,可以在不同的剧本中轻松地重用。 角色的目录…...
微服务学习笔记-基本概念
微服务是一种经过良好架构设计的分布式架构方案。根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。 微服务的架构特征: 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力&…...
Linux查看GPU显卡/CPU内存/硬盘信息
显卡信息命令/CPU内存/硬盘 1.显卡2、CPU内存3、硬盘 1.显卡 nvidia-smi nvidia-smi(显示一次当前GPU占用情况) nvidia-smi -l(每秒刷新一次并显示) watch -n 5 nvidia-smi (其中,5表示每隔6秒刷新一次终端…...
SQLAlchemy 入门:Python 中的 SQL 工具包和 ORM
SQLAlchemy 是 Python 中一款非常流行的数据库工具包,它对底层的数据库操作提供了高层次的抽象。在本篇文章中,我们将介绍 SQLAlchemy 的两个主要组成部分:SQL 工具包 (SQL Toolkit) 和对象关系映射器 (Object-Relational Mapper, ORM) 的基本…...
react Hook+antd封装一个优雅的弹窗组件
前言 在之前学vue2的时候封装过一个全局的弹窗组件,可以全局任意地方通过this调用,这次大创项目是用react技术栈,看了一下项目需求,突然发现弹窗还是比较多的,主要分为基础的弹窗以及form表单式的弹窗,如果…...
HICP学习--BGP综合小实验
需要完善 一、实验拓扑 二、实验需求 1、R2-7每台路由器均存在一个环回接口用于建立邻居,同时还存在一个环回来代表连接用户的接口;最终这些连接用户的接口网络需要可以和R1/8的环回通讯 2、AS2网段地址172.16.0.0/16 减路由条目数量 三、实验步骤 首先配置IP R…...
grafana中利用变量来添加dashboard详情页地址实现点击跳转
背景 最近弄grafana的dashboard,突然想到各个dashboard之前可以直接跳转到不同详细页面的面板,于是找了找实现方法 实现 以stat 格式的面板为例,显示出各个pod的对应状态, PromQL是(avg(kube_pod_status_phase{phase"Running", namespace!"kube-system"…...
正则表达式练习
正则表达式练习 工具目的代码运行结果 工具 pycharm 目的 https://www.77xsw.cc/fenlei/1_1/:第一页的网址 https://www.77xsw.cc/fenlei/1_2/:第二页的网址 ... https://www.77xsw.cc/fenlei/1_10/:第十页的网址 代码 import requests im…...
leetcode做题笔记73矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 思路一:记录行列值 void setZeroes(int** matrix, int matrixSize, int* matrixColSize){int row[matrixSize],col[*matrixColSize];fo…...
【2.1】Java微服务: Nacos的使用
目录 Nacos介绍 Nacos安装 下载和安装 修改端口 启动 服务注册与发现 导入Nacos管理依赖 导入服务依赖 配置Nacos的服务地址 启动服务,查看已注册的服务 服务分级存储模型 分级存储模型介绍 具体结构 配置实例集群 同集群优先的负载均衡策略 服务权重配置…...
vue安装及环境配置
vue安装及环境配置 1.安装 Node.js 2.配置默认安装目录和缓存日志目录 3.配置环境变量 4.配置淘宝镜像 5.安装vue和脚手架 6.创建并运行项目 1.安装 Node.js Download | Node.js 在这里👆下载的是最新版,如果要安装以前的版本👇&…...
java使用正则表达式时遇到的问题
标准的正则表达式是什么样的 Node.js(JavaScript) 在正则表达式中,斜杠(/)用来表示正则表达式的开始和结束。在JavaScript中,正则表达式可以使用斜杠包裹起来,以表示这是一个正则表达式的字面量。 在Node.js中&…...
Git介绍及常用命令详解
一、Git的概述 Git是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。 Git 会跟踪我们对文件所做的更改,因此我们可以记录已完成的工作,并且可以在需要时恢复到特定或以前的版本。Git 还使多人协作变得更加容易&…...
赛事 | 第25届中国机器人及人工智能大赛全国决赛榜单发布
第25届中国机器人及人工智能大赛成功举办 2023年6月13日至14日,第二十五届中国机器人及人工智能大赛于海南科技职业大学成功举办。大赛由中国人工智能学会主办,共有来自清华大学、哈尔滨工业大学、中国科学技术大学、西安交通大学等500多所高校进入全国…...
JavaScript+Asp.Net MVC5同时下载多个文件
前端同时启动多个下载任务(但是没有做压缩包下载) 前端JavaScript脚本: var idList [1,2,3];//要下载的列表 $.each(idList, function (index, item) {downloadURL("/File/GetPdf?id" item); });var count 0; var downloadUR…...
如何实现前后端分离-----前端笔记
本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论,如有侵权请联系,将源码补充写的更快哦!!!等一会把源码补一下哦! 拿一个项目看…...
Ceph入门到精通-分布式存储产品的测试实践
分布式存储产品的测试实践 在分布式存储产品的测试过程中,测试到底做了些什么事情呢? 一:测试工作内容 需求,设计评审 测试需要参与到每一个过程中 在设计评审的时候就需要知道验收的标准,这是最重要的开始。因为这…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...
