本文介绍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. 撸了一个简易的配置中心,顺带整合到了SpringCloud

    大家好,我是三友~~ 最近突然心血来潮(就是闲的)就想着撸一个简单的配置中心,顺便也照葫芦画瓢给整合到SpringCloud. 本文大纲 配置中心的概述 随着历史的车轮不断的前进,技术不断的进步,单体 ...

  2. Azure DevOps Pipelines部署.Net Core 应用到Kubernetes

    一.    先决条件 1.Azure Repos Git/Git和项目上传 把本地的Net Core项目上传至Azure Repos Git/Git 2.Docker Registry Service ...

  3. nginx启停shell脚本

    #!/bin/bash # 编写 nginx 启动脚本 # 本脚本编写完成后,放置在/etc/init.d/目录下,就可以被 Linux 系统自动识别到该脚本 # 如果本脚本名为/etc/init.d ...

  4. 微光互联 TX800-U 扫码器无法输出中文到光标的问题

    问题背景 某检测场有一批扫码器,购于微光互联,型号 TX800-U,用于在不同办理窗口间扫描纸质材料上的二维码,简化录入过程.扫码器通过 USB 接入 PC 系统 (windows),自动安装驱动,接 ...

  5. Can not set int field xxx to java.lang.Long 错误

    Can not set int field xxx to java.lang.Long 错误 这个错误其实是因为Java程序和MySQL表中字段的属性匹配不一致 我的报错是Can not set ja ...

  6. PHP配置负载均衡

    我项目是用宝塔面板.所以这次用宝塔面板演示. 环境: LNMP 代码:2套.2套代码除了配置其他都是一样 域名:1个.2级域名.其实一级二级都没关系 /************************ ...

  7. C语言爱心表白程序

    #include <stdio.h> #include <math.h> #include <windows.h> #include <tchar.h> ...

  8. 小米MIUI禁止系统更新

    删除downloaded_rom的文件夹,随便找一个文件(文件,不是文件夹),重名为downloaded_rom(是把一个文件重命名),这样系统后台偷偷下载时,就不知道该存放更新包的文件,就无法偷偷更 ...

  9. 8.gitlab服务器搭建(基于centos7)

    gitlab服务硬件要求 建议服务器最低配置:2核 2G以上内存(不包含2GB,2GB内存运行的时候内存直接爆掉) 官网给出的推荐配置:4核 4GB内存 支持500个用户,8核 8GB内存 支持100 ...

  10. 漫谈Entity-Component-System

    原文链接 简介 对于很多人来说,ECS只是一个可以提升性能的架构,但是我觉得ECS更强大的地方在于可以降低代码复杂度. 在游戏项目开发的过程中,一般会使用OOP的设计方式让GameObject处理自身 ...