首页 > 其他分享 >Cesium for Unreal加载倾斜摄影

Cesium for Unreal加载倾斜摄影

时间:2023-01-07 16:44:59浏览次数:53  
标签:插件 ion UE Unreal Cesium 加载

本文介绍UE4中通过Cesium插架加载本地倾斜摄影模型。Cesium for Unreal插件运行在UE环境何总运行Cesium,这样方便做一个GIS应用。

安装Cesium for Unreal插件

在UE 虚幻商城中,搜索 “Cesium for Unreal”, 然后下载插件,下载完成后,可以点击安装到引擎:

image.png
可以安装到引擎,需要UE 4.26以上,笔者使用4.27版本,也可以用于UE5.

启用插件

打开UE编辑器,创建一个项目,点击菜单: 编辑->插件,搜索 Cesium for Unreal

image.png

点击启用。

启用之后可能需要重启

添加Cesium SunSky

Cesium SunSky扩展了UE本身的SunSky,针对Cesium场景做了优化。
image.png

有关细节此处不详细说明。

添加Dynamic Pawn

image.png

DynamicPawn 是插件定制的基于Cesium场景的一个Pawn对象,赋予了基于地球的运动方式,此处也不详细说明。
实际上DynamicPawn不是必须的,也可以自己写一个Pawn 类来进行操作。但是DynamicPawn可以进行碰撞检测,让镜头总是在地球(或者倾斜摄影的表面运动),如果是挺大场景,可能这一点比较重要。

对于较小场景,可以自己进行Pawn类的编写适合自己的操作习惯。

添加倾斜摄影

首先添加一个Blank 3D Tiles Tileset 到场景中,插件将自动添加Cesium Georeference、CesiumCameraManager、CesiumCreditSystemBPM等其它三个控件(如果原先没有)
image.png
点击该对象,在该对象的详情页面设置加载的倾斜摄影路径,

image.png

在【细节】面板中,查找“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。)
比如笔者的案例中,使用本地文件加载,输入如下所示:
image.png

更改CesiumGeoreference定位(解决看不到)

CesiumGeoreference用于设置坐标系的原点。
鼠标选择添加的3d Tile模型,按F建聚焦该对象,然后,选择CesiumGeoreference对象,点击按钮“Place CesiumGeoreference Origin here”可以把原点定位到加载的模型处。
image.png

需要注意的一个选项是 “Keep World Origin Near Camera”,如果启用改选项,在运行态下,世界坐标原点会随着镜头的变化而变化,从而导致所有的actor(非Geo对象)的坐标都产生变化。 一般建议在小场景下,关闭次选项。 该选项的目的是在大场景下,避免对象的坐标值很大,超过UE可以能够存储的精度。

调整CesiumSunSky(解决一片黑)

如果场景是黑的或者较暗,可能是因为倾斜摄影地区是夜间,调整CesiumSunSky对象上的“Solar Time”属性。
image.png

至此,模型加载完成,如下图示。
image.png

有关3D Tile的一些说明

Maximum Screen Space Error

加载3d title模型后,我们可能看到模型的精度很差。
image.png
这个是因为** Maximum Screen Space Error造成的, Maximum Screen Space Error默认值是16。 ** Maximum Screen Space Error用于控制模型的精度,数值越大,精度越小,性能越好;反之,精度越大,性能越差。
选中3D title 模型,在 细节面板下->Level of Detail -> Maximum Screen Space Error可以设置值。
image.png

把值改为2后,看到的效果:
image.png

Enable Frustum Culling

改选项表示是否启用 镜头视椎体裁剪。 如果启用,镜头看不到的tile 将会被隐藏显示,当镜头看到的时候,又会重新加载,这就会导致,用户总是会看到tile从无到有的加载过程。
但是如果不启用,可能会导致很多tile在内存中不会被释放,从而导致内存溢出。

参考文档

https://cesium.com/learn/unreal/unreal-quickstart/
https://www.cnblogs.com/bimgis/p/16457060.html

关注公号“ITMan彪叔” 可以添加作者微信进行交流,及时收到更多有价值的文章。

标签:插件,ion,UE,Unreal,Cesium,加载
From: https://www.cnblogs.com/flyfox1982/p/17032948.html

相关文章

  • 点击获取Cesium中加载的3DTile模型的属性信息
    1.添加鼠标点击事件//鼠标单击左键事件viewer.screenSpaceEventHandler.setInputAction(functiononMouseClick(click){//自己需要写逻辑的地方......
  • 某dll劫持加载器样本分析
    目录Dll劫持,RobocraftBase.dll,调用1号导出函数LzSetArchive()load_10002BC0加载加密的jibmao.xml文件SRDI_10003320Dll劫持,RobocraftBase.dll,调用1号导出函数LzSetArch......
  • dremio 系统内部存储插件与自定义存储插件加载的区别
    dremio整体包含了两大类存储扩展,系统内部使用的,以及用户开发的,整体区别系统的目前是在dremio自己启动的时候就会注册以及使用的,比如加速反射的,home,元数据存储插件用......
  • 加载方法
    面试回来。主程提了一个问题,问Flash里面有几种加载资源的方式?应该有五种方式。第一种,普通加载。由URLLoader,Loader直接加载。第二种,是Embed元标签嵌入。第三种,是用applicat......
  • el-select懒加载
    有时候option选项太多,一次查询可能会返回上千条数据,这时候就需要懒加载,对数据进行分页查询在main.js中进行全局注册Vue.directive('el-select-loadmore',{bind(el,......
  • 流媒体篇:播放插件加载的时机
      客户端播放视频,是通过流媒体提供的一个插件,也可以看作是一个独立的程序。客户端启动以后,会直接拉起播放插件。  然后客户端点播的时候,会发送信息给播放插件(通过TCP......
  • mmdetection加载ndarray数据,并训练
    1.构造coco数据集,file_name为具体的ndarray文件名,类名的改变和class_num的配置和之前一样。保存的npy文件是归一化之后的结果2.修改数据加载代码,将2.修改网络输入inchann......
  • 反射2 - 类加载器
    类加载器Java的类主要分为3种Java核心类库:String,Object...JVM软件平台开发商自己声明定义的类:User,Child...相应的类加载器也有3种--Java17BootClassLoade......
  • InnoDB 表的批量数据加载
    概述加速innodb表的数据批量加载的方法解决方案将数据导入InnoDB时,关闭自动提交模式,因为它会为每次插入执行日志刷新到磁盘。要在导入操作期间禁用自动提交,请用 SE......
  • unity3d异步加载场景
    ​​unity3d​​​​loading界面​​​​异步加载​​​​进度条​​根据宣雨松前辈的教程来做的,因为我用到的场景不是在游戏里的那种(本人做增强现实的,完全把unity拿来做应......