当前位置: 首页 > news >正文

利用 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 上数据的可用性方面发挥着至关重要的作用。

墨尔本市政厅的街道视图,由超过 500,000 个单独的网格渲染而成。图片由Aerometrex提供。

图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入门到精通-分布式存储产品的测试实践

分布式存储产品的测试实践 在分布式存储产品的测试过程中,测试到底做了些什么事情呢? 一:测试工作内容 需求,设计评审 测试需要参与到每一个过程中 在设计评审的时候就需要知道验收的标准,这是最重要的开始。因为这…...

ESP32读取DHT11温湿度数据

芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

【AI学习】三、AI算法中的向量

在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

SpringTask-03.入门案例

一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...

管理学院权限管理系统开发总结

文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐)​​ 在 save_images 方法中,​​删除或注释掉所有与 metadata …...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...