Cesium for Unreal加载倾斜摄影
本文介绍UE4中通过Cesium插架加载本地倾斜摄影模型。Cesium for Unreal插件运行在UE环境何总运行Cesium,这样方便做一个GIS应用。
安装Cesium for Unreal插件
在UE 虚幻商城中,搜索 “Cesium for Unreal”, 然后下载插件,下载完成后,可以点击安装到引擎:
可以安装到引擎,需要UE 4.26以上,笔者使用4.27版本,也可以用于UE5.
启用插件
打开UE编辑器,创建一个项目,点击菜单: 编辑->插件,搜索 Cesium for Unreal
点击启用。
启用之后可能需要重启
添加Cesium SunSky
Cesium SunSky扩展了UE本身的SunSky,针对Cesium场景做了优化。
有关细节此处不详细说明。
添加Dynamic Pawn
DynamicPawn 是插件定制的基于Cesium场景的一个Pawn对象,赋予了基于地球的运动方式,此处也不详细说明。
实际上DynamicPawn不是必须的,也可以自己写一个Pawn 类来进行操作。但是DynamicPawn可以进行碰撞检测,让镜头总是在地球(或者倾斜摄影的表面运动),如果是挺大场景,可能这一点比较重要。
对于较小场景,可以自己进行Pawn类的编写适合自己的操作习惯。
添加倾斜摄影
首先添加一个Blank 3D Tiles Tileset 到场景中,插件将自动添加Cesium Georeference、CesiumCameraManager、CesiumCreditSystemBPM等其它三个控件(如果原先没有)
点击该对象,在该对象的详情页面设置加载的倾斜摄影路径,
在【细节】面板中,查找“Cesium”类别。
Source可以填写倾斜摄影的来源。来源可以是Cesium ion,也可以From Url。
如果需要使用Cesium ion的线上数据,可以登录Cesium ion账户。通过点击【Add】按钮,弹出【Cesium ion Assets】选项卡,内部列表数据与线上Cesium ion账户内【My Assets】选项卡中的数据一样。因为Cesium ion数据服务器在国外,考虑到数据使用的安全性以及带宽流量,本文主要实践加载本地部署数据。
本地部署的时候,source选择From Url。
而From Url又可以是本地格式和网络格式。(本地格式:file:///C://tileset.json。网络URL地址格式:http:///tileset.json。)
比如笔者的案例中,使用本地文件加载,输入如下所示:
更改CesiumGeoreference定位(解决看不到)
CesiumGeoreference用于设置坐标系的原点。
鼠标选择添加的3d Tile模型,按F建聚焦该对象,然后,选择CesiumGeoreference对象,点击按钮“Place CesiumGeoreference Origin here”可以把原点定位到加载的模型处。
需要注意的一个选项是 “Keep World Origin Near Camera”,如果启用改选项,在运行态下,世界坐标原点会随着镜头的变化而变化,从而导致所有的actor(非Geo对象)的坐标都产生变化。 一般建议在小场景下,关闭次选项。 该选项的目的是在大场景下,避免对象的坐标值很大,超过UE可以能够存储的精度。
调整CesiumSunSky(解决一片黑)
如果场景是黑的或者较暗,可能是因为倾斜摄影地区是夜间,调整CesiumSunSky对象上的“Solar Time”属性。
至此,模型加载完成,如下图示。
有关3D Tile的一些说明
Maximum Screen Space Error
加载3d title模型后,我们可能看到模型的精度很差。
这个是因为** Maximum Screen Space Error造成的, Maximum Screen Space Error默认值是16。 ** Maximum Screen Space Error用于控制模型的精度,数值越大,精度越小,性能越好;反之,精度越大,性能越差。
选中3D title 模型,在 细节面板下->Level of Detail -> Maximum Screen Space Error可以设置值。
把值改为2后,看到的效果:
Enable Frustum Culling
改选项表示是否启用 镜头视椎体裁剪。 如果启用,镜头看不到的tile 将会被隐藏显示,当镜头看到的时候,又会重新加载,这就会导致,用户总是会看到tile从无到有的加载过程。
但是如果不启用,可能会导致很多tile在内存中不会被释放,从而导致内存溢出。
参考文档
https://cesium.com/learn/unreal/unreal-quickstart/
https://www.cnblogs.com/bimgis/p/16457060.html
关注公号“ITMan彪叔” 可以添加作者微信进行交流,及时收到更多有价值的文章。
Cesium for Unreal加载倾斜摄影的更多相关文章
- Cesium加载倾斜摄影数据
(1)倾斜摄影数据仅支持 smart3d 格式的 osgb 组织方式, 数据目录必须有一个 “Data” 目录的总入口, “Data” 目录同级放置一个 metadata.xml 文件用来记录模型的位 ...
- ceisum_加载倾斜摄影模型
osgb转换为3Dtiles格式(使用工具转换) 然后加载到cesium中(加载代码见下,可以控制模型高度) var offset = function(height,tileset) { conso ...
- cesium 学习(五) 加载场景模型
cesium 学习(五) 加载场景模型 一.前言 现在开始实际的看看效果,目前我所接触到基本上都是使用Cesium加载模型这个内容,以及在模型上进行操作.So,现在进行一些加载模型的学习,数据的话可以 ...
- cesium初探之加载三维模型
项目需要用到二三维地图切换,本来准备研究ArcGIS js for Web 3d,但考虑到版权的问题,决定试着用cesium来做,于是花了2天时间抱着试试看的心态把cesium从环境配置到加载三维模型 ...
- cesium 加载倾斜摄影模型(这里有一坑)
代码如下: // Construct the default list of terrain sources. var terrainModels = Cesium.createDefaultTerr ...
- Cesium专栏-Billboard加载Gif图片
Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以 ...
- OSG加载倾斜摄影数据
目录 1. 概述 2. 实例 2.1. 代码 2.2. 解析 3. 结果 1. 概述 ContextCapture(Smart3D)生成的倾斜摄影模型数据一般都形如如下组织结构: 在Data目录下包含 ...
- cesium图形上加载图片
<!DOCTYPE html> <html> <head> <!-- Use correct character set. --> <meta c ...
- Cesium加载三维倾斜摄影数据
具体技术来源自论文 基于Cesium的倾斜摄影三维模型Web加载与应用研究. 技术架构图 应用实例 利用一个实际实例来详细说明如何利用Cesium加载倾斜摄影数据,并进行可视化和交互操作. 首先,利用 ...
- Cesium如何通过addImageryProvider方法加载SkylineGlobe Server发布的WMS服务
某某某单位用SkylineGlobeServer7版本发布了好些服务,然后让我们在Cesium里都加载进来展示. 其实只要符合OGC标准的,加进来还是很容易的. 示例代码如下: function te ...
随机推荐
- 基于vite3+tauri模拟QQ登录切换窗体|Tauri自定义拖拽|最小/大/关闭
前两天有给大家分享tauri+vue3快速搭建项目.封装桌面端多开窗口.今天继续来分享tauri创建启动窗口.登录窗口切换到主窗口及自定义拖拽区域的一些知识.希望对想要学习或正在学习的小伙伴有些帮助. ...
- LcdTools如何实现PX01设置不同的画面不同的背光亮度
背光驱动分两种原理:恒压模式和恒流模式.恒压背光顾名思义提供恒定电压即可,这种屏正常来讲自带背光驱动电路,只需提供背光工作电压.背光使能和背光调光占空比控制.恒流背光指屏的背光只有纯灯串,需外部提供相 ...
- UEC 利用代理/委托写一个生命组件
首先基于ActorComponent创建一个组件 HealthComponent,将需要的变量与函数创建 #include "CoreMinimal.h" #include &qu ...
- IDEA中Java项目创建lib目录并生成依赖
首先介绍说明一下idea在创建普通的Java项目,是没有lib文件夹的,下面我来带大家来创建一下1.右键点击项目,创建一个普通的文件夹 2.取名为lib 3.把项目所需的jar包复制到lib文件夹下 ...
- Python基础之模块:1、模块的导入和使用
目录 一.模块 1.简介 2.模块的表现形式 二.模块的分类 1.自定义模块 2.内置模块 3.第三方模块 三.导入模块的句式 学前须知: 1.import句式 2.from...import...句 ...
- ES6 学习笔记(六)基本类型String
字符串String 1.字面量 需要注意的地方: 由单引号或双引号括起来的字符序列. 单双引号可以嵌套,由最外围引号定界字符串 字符串字面量可以拆分成数行,每行必须以反斜线(\)结束,且反斜线都不计入 ...
- cowsay和ansible
简介 cowsay是一款有趣的ascii图案输出工具,通过它可以方便的输出一头说话的牛牛(马?): # cowsay hello frankming _________________ < he ...
- 2022春每日一题:Day 37
题目:[USACO14FEB]Auto-complete S 字典树套路题,字典树优化剪枝,加个cnt标记即可 代码: #include <cstdio> #include <cst ...
- 19、从键盘输入两个数字n,m,求解n,m的最小公倍数
/* 从键盘输入两个数字n,m,求解n,m的最小公倍数 */ #include <stdio.h> #include <stdlib.h> void getLowsetComM ...
- Cacheable VS Non-Cacheable
1 基本概念 在嵌入式软件开发中,经常会碰到说某块内存是cache的,还是non-cache的,它们究竟是什么意思?分别用在什么场景?non-cache和cache的内存区域怎么配置?这篇博文将会围绕 ...