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

【数字孪生】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.kler.cn/a/272764.html

相关文章:

  • MySQL 数据库 :SQL 语句规约(不得使用外键与级联,一切外键概念必须在应用层解决。)
  • 攻防世界 unseping
  • 交直流混合微电网多台互联变换器并联
  • OpenCV相机标定与3D重建(60)用于立体校正的函数stereoRectify()的使用
  • Windows 蓝牙驱动开发-蓝牙设备栈
  • iOS面试模版
  • Jasypt 配置文件加密的用法
  • JavaScript爬虫进阶攻略:从网页采集到数据可视化
  • 基于Linux内核的socket编程(TCP)的C语言示例
  • 常用的 C# 第三方开发库
  • .Net使用ElasticSearch
  • (黑马出品_高级篇_03)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • ICBatlas数据库-转录组免疫检查点阻断疗法数据
  • 使用BBDown下载bilibili视频的方法
  • sentinel黑白名单权限控制
  • 物联网协议模块快速选择实用入门
  • 在Docker上传我们自己的镜像(以springboot项目为例)
  • Gin 框架中实现路由的几种方式介绍
  • 找出字符串中第一个匹配项的下标-力扣
  • 【C语言】linux内核软中断
  • 主播美颜技术原理与应用探究:美颜SDK的前沿技术解析
  • python for循环打印字符串、指定区间范围数字以及打印区间数字内的奇数和偶数
  • docxTemplater——从word模板生成docx文件
  • Jetson orin nano 8G设置ROS下launch文件开机自启动脚本文件
  • 废狗的Python连接MySQL之旅
  • 美区PayPal绑visa卡注意事项