本文介绍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加载倾斜摄影的更多相关文章

  1. Cesium加载倾斜摄影数据

    (1)倾斜摄影数据仅支持 smart3d 格式的 osgb 组织方式, 数据目录必须有一个 “Data” 目录的总入口, “Data” 目录同级放置一个 metadata.xml 文件用来记录模型的位 ...

  2. ceisum_加载倾斜摄影模型

    osgb转换为3Dtiles格式(使用工具转换) 然后加载到cesium中(加载代码见下,可以控制模型高度) var offset = function(height,tileset) { conso ...

  3. cesium 学习(五) 加载场景模型

    cesium 学习(五) 加载场景模型 一.前言 现在开始实际的看看效果,目前我所接触到基本上都是使用Cesium加载模型这个内容,以及在模型上进行操作.So,现在进行一些加载模型的学习,数据的话可以 ...

  4. cesium初探之加载三维模型

    项目需要用到二三维地图切换,本来准备研究ArcGIS js for Web 3d,但考虑到版权的问题,决定试着用cesium来做,于是花了2天时间抱着试试看的心态把cesium从环境配置到加载三维模型 ...

  5. cesium 加载倾斜摄影模型(这里有一坑)

    代码如下: // Construct the default list of terrain sources. var terrainModels = Cesium.createDefaultTerr ...

  6. Cesium专栏-Billboard加载Gif图片

    Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以 ...

  7. OSG加载倾斜摄影数据

    目录 1. 概述 2. 实例 2.1. 代码 2.2. 解析 3. 结果 1. 概述 ContextCapture(Smart3D)生成的倾斜摄影模型数据一般都形如如下组织结构: 在Data目录下包含 ...

  8. cesium图形上加载图片

    <!DOCTYPE html> <html> <head> <!-- Use correct character set. --> <meta c ...

  9. Cesium加载三维倾斜摄影数据

    具体技术来源自论文 基于Cesium的倾斜摄影三维模型Web加载与应用研究. 技术架构图 应用实例 利用一个实际实例来详细说明如何利用Cesium加载倾斜摄影数据,并进行可视化和交互操作. 首先,利用 ...

  10. Cesium如何通过addImageryProvider方法加载SkylineGlobe Server发布的WMS服务

    某某某单位用SkylineGlobeServer7版本发布了好些服务,然后让我们在Cesium里都加载进来展示. 其实只要符合OGC标准的,加进来还是很容易的. 示例代码如下: function te ...

随机推荐

  1. Java学生管理系统(详解)

    相信大部分人都有接触过这个 Java 小项目--学生管理系统,下面会分享我在做这个项目时的一些方法以及程序代码供大家参考(最后附上完整的项目代码). 首本人只是个初学Java的小白,可能项目中有许多地 ...

  2. 18.MongDB系列之批量更新写入Python版

    在实际的工作中,难免批量更新的数量极大,pymongo提供了便捷的客户端供使用 假设读者对pandas比较熟悉,下图为事先准备好的dataframe import pandas as pd from ...

  3. 34.HyperLinkedModelSerializer详解

    HyperLinkedModelSerializer继承ModelSerializer,只是自动多出了一个url字段,其他都是一样的 不同之处在于使用超链接来表示关联关系而不是主键 默认情况下Hype ...

  4. LabVantage仪器数据采集方案

    LabVantage的仪器数据采集组件为LIMS CI,是一个独立的应用程序/服务,实现仪器数据的采集(GC.LC等带有工作站的仪器). 将仪器输出数据转换为LIMS所需数据并传输,使用Talend这 ...

  5. Vue ref 和 v-for 结合(ref 源码解析)

    前言 Vue 中组件的使用很方便,而且直接取组件实例的属性方法等也很方便,其中通过 ref 是最普遍的. 平时使用中主要是对一个组件进行单独设置 ref ,但是有些场景下可能是通过给定数据渲染的,这时 ...

  6. JS逆向实战3——AESCBC 模式解密

    爬取某省公共资源交易中心 通过抓包数据可知 这个data是我们所需要的数据,但是已经通过加密隐藏起来了 分析 首先这是个json文件,我们可以用请求参数一个一个搜 但是由于我们已经知道了这是个json ...

  7. ES6 学习笔记(八)基本类型Symbol

    1.前言 大家都知道,在ES5的时候JavaScript的基本类型有Number.String.Boolean.undefined.object.Null共6种,在es6中,新增了Symbol类型,用 ...

  8. Dubbo-聊聊通信模块设计

    前言 Dubbo源码阅读分享系列文章,欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrap ...

  9. Day2:基本的Dos命令

    打开CMD的方式 开始+系统+命令提示符(右键以管理员身份运行可拿到最高权限) Win键+R 输入 cmd打开控制台(推荐使用) 桌面上按住shift+鼠标右键,打开powershell窗口 文件搜索 ...

  10. java学习之Servlet

    0x00前言 Servlet就是一个接口我们需要写一个类然后去实现Servlet,就可以被服务器识别到.request是用来接受客户端传过来的参数,respone是用来响应客户端的页面.我们所用的容器 ...