【数字孪生】Nginx发布数字孪生三维建模模型服务及调用方法

【数字孪生】Nginx发布数字孪生三维建模模型服务及调用方法

  • 一、需求
  • 二、实施步骤
    • 2.1 准备模型文件
      • 2.1.1 3D tiles模型
      • 2.1.2 3D Tiles标准文件格式
    • 2.2 配置nginx server块
      • 2.2.1 Nginx能干啥
    • 2.3 访问
  • 三、实现效果

一、需求

利用三维渲染引擎Cesium加载3D tiles模型。

二、实施步骤

2.1 准备模型文件

在这里插入图片描述

2.1.1 3D tiles模型

3D tiles模型是一种用于三维地理信息系统(GIS)和建筑信息模型(BIM)的数据格式。这种模型被设计用来高效地存储和传输大量的3D空间数据,它能够支持高分辨率的3D地图和复杂的城市景观。
3D tiles模型主要包含以下几个关键的组成部分:

  1. 层次结构:3D tiles将一个大型的3D模型分解成许多小的、可管理的部分,称为瓦片(tiles)。每个瓦片代表模型中的一个较小区域。这种层次结构使得它能够处理非常庞大的三维数据集。
  2. 数据编码:瓦片中的数据通常以一种高效的方式进行编码,例如使用一种叫做“Point Cloud Compression”的压缩技术,这可以大大减少存储需求和加快传输速度。
  3. 灵活性:3D tiles模型支持多种类型的数据,包括点云、纹理、法线、颜色等。这使得它非常适合用于复杂的3D场景,如城市规划、建筑设计、环境监测等。
  4. 兼容性:该模型已经被多个标准和开源GIS和BIM软件支持,例如CesiumJS、Three.js、Blender等,这使得3D tiles模型具有很好的互操作性。
  5. 高效加载:3D tiles模型支持渐进式加载,这意味着可以先加载用户当前需要的部分,而不是整个模型。这大大提高了用户体验,特别是在网络条件有限的情况下。
    总的来说,3D tiles模型提供了一种高效、灵活且易于使用的手段来处理和传输3D空间数据,这在今天越来越重视三维可视化和虚拟现实的世界中具有重要意义。

2.1.2 3D Tiles标准文件格式

3D Tiles标准是一种用于传输和存储大规模3D城市景观、地形和其他3D数据的文件格式和数据结构。它由几个不同的文件格式组成,这些格式协同工作以支持3D数据的加载、渲染和交互。3D Tiles标准文件格式主要包括以下几种:

  1. .b3dm (Binary 3D Model):
    • 包含模型数据的二进制文件格式,通常用于存储复杂的3D模型,如建筑物、地形等。.b3dm 文件可以直接被WebGL等图形API使用,不需要额外的解析步骤。
  2. .i3dm (Instanced 3D Model):
    • 包含实例化3D模型的数据,这种格式用于存储可以重复使用的3D对象,如城市中的建筑物或地形中的树木。.i3dm 文件包含一个指向实际模型数据的引用(如.b3dm文件)以及定义实例位置、旋转和缩放属性的数据。
  3. .pntm (Point Cloud Metadata):
    • 用于存储点云数据的文件格式。点云数据通常用于表示大量的点状对象,如城市中的灯柱或地形中的树木。
  4. .qtm (Quadtree Metadata):
    • 用于存储瓦片索引数据的文件格式。瓦片是3D Tiles数据集的基本组织单位,.qtm 文件包含瓦片的层级结构和引用。
  5. .json (JSON):
    • 用于存储3D Tiles集的元数据,如场景描述、瓦片配置、样式信息等。.json 文件定义了整个3D场景的结构和内容。
  6. .glb (GLTF Binary):
    • 虽然不是3D Tiles标准的一部分,但.glb文件格式常与3D Tiles一起使用。它是一种二进制格式的GLTF(Game Loading and Interaction Format)文件,用于存储3D模型数据。.glb文件可以被.b3dm文件引用,作为实际模型数据的一部分。
      这些文件格式共同构成了3D Tiles数据集,支持大规模、高效的3D地理空间数据可视化。3D Tiles标准还定义了如何将这些文件组织成一个目录结构,以及如何通过HTTP协议进行数据的传输和加载。

2.2 配置nginx server块

	 server {listen       80;server_name  127.0.0.1;#增加文件类型types {application/octet-stream b3dm;}#访问的路径location /3dtiles {#存放模型的文件夹alias F:/mars3d-max-shihua-3dtiles-master;autoindex on;add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Methods "GET, OPTIONS";add_header Access-Control-Allow-Headers "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type";add_header Access-Control-Allow-Credentials true;}}

2.2.1 Nginx能干啥

Nginx的灵活性和模块化设计使得它能够适应多种不同的服务器角色,并且通过配置文件进行简单的修改就可以切换不同的服务类型。这使得Nginx成为了一个非常强大和多用途的网络服务器解决方案。
以下是Nginx可以充当的一些主要服务器类型:

  1. HTTP服务器
    • 这是Nginx最基本的角色,作为Web服务器直接为客户端提供HTTP服务。它可以提供静态资源,如网页、图片、CSS文件等。
  2. 反向代理服务器
    • 当Nginx作为反向代理服务器时,它接受客户端的请求,将请求转发给后端服务器,并将响应返回给客户端。这可以用于负载均衡、缓存静态内容、TLS终止(SSL Offload)等。
  3. 负载均衡器
    • Nginx可以通过分配请求到多个后端服务器来平衡负载,从而提高应用程序的性能和可靠性。它支持多种负载均衡算法,如轮询、最少连接、IP哈希等。
  4. 应用服务器
    • 虽然Nginx不是传统意义上的应用程序服务器,但它可以通过配置模块来支持各种应用程序服务,如提供PHP、Python、Node.js等语言的处理能力。
  5. 邮件代理服务器
    • Nginx可以配置为SMTP、IMAP和POP3邮件代理服务器,用于处理邮件传输和存储。
  6. 文件服务器
    • Nginx可以用来共享和管理文件,通过配置目录列表或提供文件下载功能。
  7. API服务器
    • Nginx可以作为API的网关,处理API请求,将请求转发到后端服务,并且可以进行权限校验、数据格式转换等。
  8. 视频流媒体服务器
    • 通过配置相应的模块,Nginx可以支持视频流媒体服务,如使用HLS(HTTP Live Streaming)或DASH(Dynamic Adaptive Streaming over HTTP)来传输视频内容。

2.3 访问

重启nginx后,修改cesium资源加载URL,

 const tileset = new Cesium.Cesium3DTileset({url: "http://127.0.0。1/3dtiles/shihua/tileset.json",});

三、实现效果

一般地,3D Tiles数据文件夹下包含一个html文件,双击就可以看到模型渲染效果。
在这里插入图片描述

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

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

相关文章

下载JDK17版本详细教程(下载、安装、环境变量配置)

官网下载 Oracle 甲骨文中国 | 云应用和云平台 安装 更改自己的安装位置。点击下一步,记住自己的安装位置 环境配置 右键此电脑点击属性---高级系统设置----环境变量 在系统变量里面点击新建环境变量JAVA_HOME,下面填入自己的jdk安装地址&#xff0c…

关于微服务跨数据库联合查询的一些解决思路

微服务架构的一个非常明显的特征就是一个服务所拥有的数据只能通过这个服务的API来访问。通过这种方式来解耦,这样就会带来查询问题。以前通过join就可以满足要求,现在如果需要跨多个服务集成查询就会非常麻烦。 解决思路 下面提供几个思路仅供参考 表…

【鸿蒙HarmonyOS开发笔记】常用组件介绍篇 —— Toggle切换按钮组件

概述 Toggle为切换按钮组件,一般用于两种状态之间的切换,例如下图中的蓝牙开关。 参数 Toggle组件的参数定义如下 Toggle(options: { type: ToggleType, isOn?: boolean })● type type属性用于设置Toggle组件的类型,可通过ToggleType枚举…

python异常:pythonIOError异常python打开文件异常

1.python读取不存在的文件时,抛出异常 通过 open()方法以读“r”的方式打开一个 abc.txt 的文件(该文件不存在),执行 open()打开一个不存在的文件时会抛 IOError 异常,通过 Python 所提供的 try...except...语句来接收…

linux查看服务器登录成功和登录失败的命令

last 查看成功登录服务器的信息,包括ip,时间,登录用户,时长。lastb 查看登录服务器失败的信息。 last命令实例: 其他参数: -a:把从何处登入系统的主机名称或ip地址,显示在最后一行…

.rmallox勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言: 近年来,勒索病毒的威胁日益增加,其中一种名为.rmallox的勒索病毒备受关注。这种病毒通过加密文件并勒索赎金来威胁受害者。本文将介绍.rmallox勒索病毒的特点,以及如何恢复被其加密的数据文件,并提供预防措施&a…

Css提高——flex布局及其相关属性

目录: 1、传统布局与flex布局的区别 2、flex的布局原理 3、flex常见的父项属性 3.1、flex-direction :设置主轴的方向 3.2、justify-content 设置主轴上的子元素排列方式 3.3、flex-wrap 设置子元素是否换行 3.4、align-items 设置侧轴上的子元素排…

Linux:系统初始化,内核优化,性能优化(1)

我们安装好了一个服务器之后,一定要对他的系统,内核,性能一系列进行一个优化,否则当大并发的情况下很可能出现问题,我把要优化的东西直接罗列出来并介绍,后期可以直接编写一个脚本拿到服务器上直接用就行 …

在深圳,为什么硬件工程师的待遇还不如软件?

深圳触觉智能科技有限公司 硬件明明比软件更难,为何在国内… 硬件明明比软件更难,但硬件工程师待遇却不如软件工程师,硬件工程师常被忽视,被视为可轻易模仿的“配角”,默默付出却鲜获认可。比如八年以上的资深硬件工…

2024年普通人的创业机会在哪里?2024热门创业项目!2024普通人想翻身的风口行业!

创业千万别冲动,社区团购代理创业失败案例! 是不是一开始挺看好这个赛道,看别人做的风生水起,以为不难,真正开始做才发现不好做,没有先天优势,货源和客源从零开始积累,开始就是摸着石…

Java 世界破破烂烂,电音小猫缝缝补补

Java 世界破破烂烂,电音小猫缝缝补补 Java 通用代码生成器光 2.4.0 电音之王尝鲜版六正在研发,昨天发布了介绍视频,请见: https://www.bilibili.com/video/BV1yD421j7UP/ 电音之王尝鲜版六支持哑数据模式,支持枚举。…

学嵌入式真的很烧钱吗?

如果是走嵌入式单片机方向,这篇内容,很适合预算1000以下的,作为发育参考。 下面是我2011年的入行成本: 买了智能小车,还有51开发板,杂七杂八,可能一共不到1000。 一开始迷之自信了,买…

软件测试方法 -- 等价类边界值

测试用例的定义 测试用例是为了特定的目的而设计的一组测试输入、执行条件和预期的结果,以便测试是否满足某个特定需求。通过大量的测试用例来检验软件的运行效果,他是指导测试工作进行的依据。 下面我们介绍几种常用的黑盒测试方法 等价类划分法 定…

ABS10-ASEMI开关电源专用ABS10

编辑:ll ABS10-ASEMI开关电源专用ABS10 型号:ABS10 品牌:ASEMI 封装:ABS-4 最大重复峰值反向电压:1000V 最大正向平均整流电流(Vdss):1A 功率(Pd):中小功率 芯片个数:4 引脚…

NetSuite多脚本性能研究

在项目中,随着复杂度的提升,客制脚本以及各类SuiteAPP的应用,导致某个对象上挂载的脚本大量增加,最终导致了性能问题。表现在保存单据时时间过长,严重影响人机界面的用户感受。基于此问题,我们开展了NetSui…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Grid)

网格容器,由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 仅支持GridItem…

Web 开发模式演进过程

作为初学者,要了解 Web 开发模式的演进过程,并从这些演进过程中看到变化,这样有利于开发者的思路提升。 什么是 Web 开发 Web :网页,可以通过浏览器访问的资源 Web 开发:基于网页载体的软件开发&#xff…

mac下Appuim环境安装

参考资料 Mac安装Appium_mac电脑安装appium-CSDN博客 安卓测试工具:Appium 环境安装(mac版本)_安卓自动化测试mac环境搭建-CSDN博客 1. 基本环境依赖 1 node.js 2 JDK(Java JDK) 3 Android SDK 4 Appium&#x…

Verilog——综合和防真

2.1综合 Verilog 是硬件描述语言,顾名思义,就是用代码的形式描述硬件的功能,最终在硬件电路上实 现该功能。在Verilog描述出硬件功能后需要使用综合器对Verilog代码进行解释并将代码转化成实际 的电路来表示,最终产生实际的电路&a…