PlacingObjectsontheGlobe_译

2023-11-04

PlacingObjectsontheGlobe_译

已经创建了一个关卡并且输入一些像CesiumWorldTerrain或者一个城市的摄影测量模型真实世界资产,接下来你可能想要从标准UnrealEngine工具箱添加一些对象:格网、植物、人物、等等。幸运地,CesiumforUnreal很好地与你熟悉的UnrealEngine工作流集成。
在这里插入图片描述
在这个教程,你会:
1)添加一个简单的UnralEngine对象到关卡。
2)学习更多CesiumforUnreal集成到UnrealEngine的细节,可以帮助你避免问题。

预备:
1)你已经有一个用CesiumforUnreal创建的世界,或许根据Quickstart或者AddingPnotogrammetry教程创建。现在你想要添加更多UnrealEngine对象到关卡。

添加静态格网到一个CesiumforUnreal关卡
添加靠近CesiumGeoference原点的对象跟添加它们到任何UnrealEngine关卡时一样的。
1)如果编辑相机没有靠近CesiumGeoference(几公里之内),在WorldOutliner点击CesiumGeoference,然后在Details面板点击PlaceGeoferenceOriginHere。你可能也想要重置FloatingPawn的Location到(0,0,0)让游戏模式开始在相同的位置。
2)点击 Window -> PlaceActors打开PlaceActors面板。
3)拖拉一个静态格网对象,像Cube,到关卡视口。
4)使用关卡编辑器视口按需求移动,旋转,缩放静态格网。
任何常规UnrealEngine对象都可以用常规方式添加到关卡。然而,这儿有了解更多的有用的细节,它们在下面会讨论到。

世界原点重置
原点重置是一个UnrealEngine要素,帮助在一个大的世界保留顶点精度。它通过分割OrginLocation为一系列整型坐标值(而不是单精度点)。当OriginLocation改变时,关卡中每一个对象的单精度点坐标值会更新以致所有对象在相同的位置,像之前它们相对关系的位置,但是现在最新指定的OriginLocation是游戏世界的(0,0,0)点。
默认,CesiumGeoference自动随视口在世界动而重置世界原点到视口附近。这个确保了石口附近的对象有很小的坐标值,并且因此可以更精确表现。反过来,这个避免了一个叫做“jitter抖动”的渲染失真,
即相机和相机附近的另一个物体的大坐标值中的舍入误差会导致物体在相机或物体移动时出现“到处跳跃”。
在这里插入图片描述
甚至随着世界原点重置,远距离的对象有很大坐标值并且表现更少精度。但是这个不精确不是问题因为对于远距离物理在顶点位置的小错误映射更少的像素。
世界原点重置满足一个重要的目的,但是它有以下两个缺点:
1)当OriginLocation改变时关卡中的每一个对象位置频繁更新有一些性能消耗。
2)一些UnrealEngine对象不支持世界原点重置。在重置之后这些对象会有个错误的位置,或者显示其他东西。
如果你想在你的应用中视口在原点附近,或者至少远离世界原点时视口不看近距离的对象,禁用世界原点重置时安全的。只要不选择CesiumGeoference的KeepWorldOriginNearCamera属性:
在这里插入图片描述

你看不见的就是你得不到的
CesiumforUnreal的Cesium3DTileset角色用视口独立的方式对象流送大量数据集到你的应用。它们执行两个功能,这对于测量可以很容易地以tb或更大的单位度量的渲染数据集:细节层次和筛选,是必要的。
细节层次意味着完整的瓦片集被分割成成为瓦片的多分辨率金字塔的独立小片。宽泛来说,CesumforUnreal为接近视口的模型的组成选择高分辨率瓦片,远离是视口的模型的组成选择更低分辨率的瓦片。
筛选意味着我们不再加载或者不可见的渲染模型组成。筛选的一个关键形式是视口锥体筛选,排除视口后的瓦片或者视口外的瓦片。筛选这些瓦片意味着更少的数据下载和在UnrealEngine中更少地加载渲染瓦片集,提高运行时性能和效率。
然而,筛选带来一个重要的警告:如果你不看它,它也就不存在。筛选瓦片不发送到UnralEngine,这个意味着:
1)它们不投射阴影。
2)它们不造成任何物理交互。
想象一个角色站在你面前,在CesiumWorldTerrain表面。UnrealEngine的重力模拟将角色保持在表面。现在你转过去,背对着角色。角色所站的贴图将不再可见,所以它将被剔除。突然,角色在虚空中盘旋,他们开始落下到灭亡。
相似地,一个高建筑当你在它上转到背后将停止投射阴影,因为在UnrealEngine世界它真实生成存在。
为了避免这些问题,我们可以为瓦片集禁用视口锥体筛选,对于物理、阴影和其他目的是重要的。在WorldOutliner点击Cesium3DTileset,在Details面板找到Cesium -> TileCulling,不选EnableFrastumCulling。
在这里插入图片描述

地球是椭球
由于地球曲率,我们从CesiumGeoference原点位置移动越远,UnrealEngine减z方向越少是局部向下方向的精确表示。为了精确,下方向通过给我们每从原点移动1公里粗略0.01度。从原点移动100公里,重力方向“错”大约1度。这对于很多应用来说可能是糟糕的,但当我们到达地球的另一边时,重力方向是180度,与我们期望的方向是180度。物体放置在地球的另一边,并遵从UnrealEngine配置重力将落入空间。
地球的球形也影响其他UnrealEngine行为,不仅物理,相机通常由一个向上的方向,但是对于一个球形行星来说“upright”是不正确的。Cesium的FloatingPawn自动计算这个,其他Pawn不会。
处理球星行星的不幸的实际需要拥有以下技术,以从简单到复杂的顺序:
1)待在一个相对小的区域,大概100公里左右。
2)设置独立子关卡,每一个用它们自己的CesiumGeoference,在地球上的每个兴趣部分。这个技术看
BuildingGlobeScenesWithSublevels
教程。
3)使用CesiumGeoreferenceComponent去给任何Unreal的Actor添加限制全球注意(看以下的“我们可以转换动态对象为地理参考对象”)。
4)手动扩展你的游戏对象注意球形地球。

常规UnrealEngine对象适合游戏世界,不是真实世界
像以上我们使用Cube,当我们放置常规UnrealEngine对象,我们给它们一个游戏世界的坐标。目前,没什么惊奇的。
然而,游戏世界坐标系统和真实世界坐标系统是不吻合的。CesiumGeoreference角色对象通过原点参数定义,可以改变。重要的注意是,当CesiumGeoreference原点改变时,整个UnrealEngine世界在地球上移动到一个新的位置,包括在地球上的所有对象。
如果我们放置一个对象在丹佛边上的山,然后改变CesiumGeoreference原点,我们看到对象移动到意大利北部,山以意大利北部山代替。因此,在你开始建立你的关卡之后,不移动CesiumGeoreference原点是很重要的。
在这里插入图片描述
在这里插入图片描述

地理参考对象遵循不同的规则
以上对于几乎所有的UnrealEngine对象来说是正确的,但是有一些对象遵循一个不同的规则。我们称之为Georeferencedobjects。
不像适合游戏世界的规则对象,一个地理参考对象是与地球吻合的。它有一个用双精度,地心地固坐标或者等于经度纬度高的位置表述。例如,如果这些坐标放在近威廉·佩恩雕像旁边,费城市政厅顶部,它会留在待在那里,直到我们移动它,即使我们在CesiumGeoreference调整原点坐标,以澳大利亚悉尼歌剧院为中心。
Cesium的FloatingPawn是一个地理参考对象的例子。这是为什么,和在Quickstart描述的一样,一个CesiumGeoreference的改变不改变地球上卒的位置的改变。另一个重要的地理参考对象是
Cesium3DTileset。瓦片集知道它们在地球上的哪个位置,它们就待在那儿。

我们可以转换动态对象为地理参考对象
我们可以通过给对象附加一个CesiumGeoreferenceComponent转换一个常规的UnrealEngine的Actor为一个地理参考对象:
1)在WorldOutliner点击角色对象,然后改变角色对象的Mobility属性为Movable。这个改变的原因解释在下边。
在这里插入图片描述
2)在Details面板点击AddComponent。
在这里插入图片描述
3)找到或搜索CesiumGeoreference并点击添加它到Actor。
在这里插入图片描述
仅通过添加CesiumGeoreference组件,我们已经转换在这个Actor为一个地理参考对象。现在,如果改变CesiumGeoreference的角色对象的原点(小心理解CesiumGeoreferencecomponent和CesiumGeoreferenceactor),对象将会正确在地球上。我们也可以在CesiumGeoreference组件上直接用精确数字坐标指定Longitude/Latitude/Height或者Earth-CenteredEarth-Fixedcoordinates放置对象。
然而,有两个限制值得注意。
第一个上面暗指:我们仅可以给一个movable角色对象添加CesiumGeoreference组件。即使这个物体不会相对于地球移动,CesiumGeoreference角色对象的原点的改变也会改变它在游戏世界中的位置。因此,从UnrealEngine角度来看,它是可移动的。
第二个限制是给一个Actor一个相对地球精确的一直的位置不会解决所有问题。尤其,当我们远离原点时,UnrealEngine重力将会在错误的方向拉地理参考对象。
如果你想在地球的不同地方有多个区域,并且有物理,且从使用静态对象优化来说有益,这是一个子关卡的工作。

下步:
继续看BuildingGlobalSceneswithSublevels教程。

PS:
原文地址:https://cesium.com/learn/unreal/unreal-placing-objects/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PlacingObjectsontheGlobe_译 的相关文章

  • applicationContext.xml文件如何调用外部properties等配置文件

  • 记一次计算机20春招的过程

    今年秋招没有参加 因为考研 等到考研成绩出来 发现无缘复试 便开始准备春招 基本是从2月初就开始准备了 刚开始没有确定企业类型 胡乱投了一下 有百度大厂等 最后还是决定投银行 对于女生来说 还是比较稳定 主要投了中信银行 上海银行 苏州银行
  • C++继承和多态

    C 继承和多态 继承 继承的本质 代码的复用 在基类中给所有派生类提供统一的虚函数接口 让派生类进行重写 然后就可以使用多态了 类和类的关系 a part of 一部分关系 继承 a kind of 一种的关系 继承引入了一些概念 基类 父
  • es6~解构赋值

    ES6允许按照一定模式 从数组和对象中提取值 对变量进行赋值 这被称为解构 以前 为变量赋值 只能直接指定值 let a 1 let b 2 let c 3 ES6 允许写成下面这样 let a b c 1 2 3 上面代码表示 可以从数组
  • 微信小程序实现附件(图片/视频)上传及附件(图片/视频)预览

    微信小程序的图片 视频上传功能 小程序官网是提供了相关的API语法 本例使用了 wx chooseMedia 选择或拍摄图片 视频附件 通过 wx uploadFile 方法上传至服务器 在需要的地方将服务器存储的附件地址查询出来提供展示预
  • 分糖果(c++)

    传送门 这道题真是简单到不能再简单 思路 判断L n是否小于R N 如果是 输出n 1 最大余数 否则输出R N 余数尽量大 因为L N R N 且L lt R 本题代码最多10行 include
  • MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainC

    一 问题描述 MSVCRTD lib crtexew obj error LNK2019 无法解析的外部符号 WinMain 16 该符号在函数 tmainCRTStartup 中被引用 Debug jk exe fatal error L
  • 两个C++编译异常及解决方法-does not name a type和field `XX' has incomplete type

    两个C 编译错误及解决办法 does not name a type和field XX has incomplete type 编译错误一 XX does not name a type 编译错误二 field XX has incompl
  • CH1-数字逻辑基础

    文章目录 一 数制和码制 1 1 数字量和模拟量 1 2 数制和码制 一 数制 二 数制转换 三 码制 二 逻辑代数中的基本运算 与门 或门 非门 与非门 或非门 与或非门 异或门 同或门 三 基本和常用公式 3 1 基本公式 3 2 常用
  • 通过ribbon 根据服务名获取所有服务实例的IP和端口列表

    代码使用SpringCloud版本E3 业务场景 今天遇到一个业务场景 要求根据服务名获取当前微服务集群中所有的对应服务实例的IP和端口 通过分析源码推算出了写法 原理简述 如果代码中引入了spring cloud netflix core
  • Spring Boot 集成 WebSocket

    假设有这样一个场景 服务端的资源经常在更新 客户端需要尽量及时地了解到这些更新发生后展示给用户 如果是 HTTP 1 1 通常会开启 ajax 请求询问服务端是否有更新 通过定时器反复轮询服务端响应的资源是否有更新 ajax 轮询 在长时间
  • win下nacos-2.2.2搭建开发环境(3种模式)

    nacos安装模式 单机模式 Derby 这种模式是极简模式 数据没法持久化存储 适合开发环境 单机模式 MySQL 这种模式支持数据持久化 数据会存储到MySQL中 适合生产环境 集群模式 这种模式适合生产环境并且服务节点个数较多 不存在
  • 导入android project到 eclipse 出现Unable to resolve target 'android-8'的错误

    今天导入一个Android的例子程序 出现了Unable to resolve target android 8 的错误 刚开始以为是没导入包或者是phoneGap没配置好 可是折腾了好久还是报错 最后google之后才发现原来是ADK版本
  • node—第三方模块之mysql模块

    mysql模块 专门用来连接mysql数据库 2
  • [每日两题系列]刷算法题咯~~

    今日题目 从尾到头打印链表 移除重复节点 本系列所选题目均来自力扣或者牛客网站 所选题目主要是以其中的简单题为主 中等题为辅 包含少数困难题 原因是 本人目前能力还不够 开展这个系列的目的是督促自己 在暑假的时间里也要保持有一定的刷题量 拒
  • leetcode刷题(10.8总结)

    1 移除链表元素 题目描述 https leetcode cn problems remove linked list elements class Solution def removeElements self head ListNod

随机推荐

  • mysql表设计----列类型介绍

    author skate time 2012 02 18 mysql表设计 列类型介绍 在我们设计数据库时一些经验 合理的评估表的增量 预计大小 分库分表 整库表的数量 为了方便维护与性能 mysql库一般500张表以里 等 从基本的说起
  • unity 最新场景加载SceneManager.LoadScene的用法

    摘自 http www heyclock com archives 708 随着unity的不断更新 你是否发现之前的场景加载 Application LoadLevel 已经过时了呢 下面我们来介绍信的场景加载的用法 1 2 3 4 5
  • vue项目video、img配合canvas截图及资源跨域处理

    解决 VUE项目video img截图及资源跨域处理 视频截图 跨域处理 视频截图 代码如下
  • Imagination官方信息速递2023年8月期

    白皮书下载 通过Photon架构创建身临其境的图形体验 2023 年 Imagination 将基于 PowerVR Photon 架构的光加线速集群 RAC 的演进引入 IMG DXT 图形处理单元 GPU IMG DXT GPU 不仅通
  • 第十五节课 使用Samba或NFS实现文件共享及DNS域名解释服务

    这节课主要讲解了Samba文件共享服务和NFS网络文件系统配置及使用 autofs自动挂载服务 DNS域名解释服务及bind服务程序配置等
  • 测试:概念篇

    目录 简单介绍测试 我们先简单的介绍一下测试工程师 简单来看看测试和开发的区别 测试的基本概念 什么是需求 BUG 的概念 测试用例 什么是测试用例 为什么有测试用例 测试周期 开发模型 瀑布模型 螺旋模型 敏捷软件开发 V 模型 W 模型
  • java编码技巧

    判断某个集合是否包含某值 ArrayUtils contains Object array Object objectToFind 缓存 service层先判断缓存是否有此数据 有则返回该数据 没有则从数据库获取 并存入缓存 往插入数据以后
  • QEMU安装及测试

    QEMU README QEMU is a generic and open source machine userspace emulator and virtualizer QEMU官网链接 https www qemu org Git
  • EasyPoi导出Excel

    这几天一直在忙工作中的事情 在工作中有一个问题 可能是因为刚开始接触这个EasyPoi 对其也没有太多的理解 在项目中就使用了 有一个需求 是要导出项目中所有的表格 今天就对这个需求进行分析和实现吧 需求 导出项目中所有的表格 导出文件为E
  • osgFBO(九)多pass---2,pass2,shader将背景从红色变为绿色

    二 pass2是比较完整的 同时有输入纹理和输出纹理 与pass1类似 这里只列出不同的地方 1 pass2摄像机输入tex1 osg ref ptr
  • 火焰检测 数据集

    开源项目1 https github com gengyanlei fire smoke detect yolov4 tree master yolov5 有数据集 Pytorch YOLOV4 火焰目标检测 石头儿啊的博客 CSDN博客
  • SpringBoot接口实现视频在线播放

    获取所有的mp4在线播放地址 并当前端调用该接口时返回mp4视频文件名及其播放地址 mp4视频存放在D盘的video文件夹下 ApiOperation 获取所有MP4播放地址 GetMapping get video address pub
  • 1. Qt小游戏 --- 推箱子

    1 说明 这个小游戏主要使用Qt中的绘制事件函数 paintEvent 在画布上面不停的绘制图形 并使用定时器做时间上的触发处理 这个小游戏只是做了简单的逻辑处理 具体复杂的功能读者可自行发挥 效果展示如下 Qt制作推箱子小游戏 2 相关代
  • 正负压产生电路(9V,12V)

    正负压输出电路 开关电源知识储备 xl6007 电荷泵 原理图和PCB 开关电源知识储备 在dc dc拓扑中有着buck 降压 boost 升压 buck boost 升降压 其原理简单总结是 利用储能元件 如电容电感 对电流的释放进行控制
  • vue3.0--使用element-plus的$message

    前题已经按如上步骤安装了按需加载的element plus 项目中使用this message 使用成功了 import ElMessage from element plus components ElMessage ElMessage
  • Error setting null for parameter #2 with JdbcType OTHER

    mybatis执行时报错内容如下 Error setting null for parameter 2 with JdbcType OTHER Try setting a different JdbcType for this parame
  • atcoder ABC 128

    目录 B guidebook c switches D equeue B guidebook B Guidebook atcoder jp 多关键字排序 按主要关键字 次要关键字排序 用结构体存储主次要关键字 用sort排序 sort可以对
  • squid 高匿配置 用户名密码配置

    1 安装squidyum install squid2 修改配置文件 在 http access deny all 上面加上如下权限配置 注意 一定要在这句上面 用户名密码配置 auth param basic program usr li
  • openGL之API学习(五)光照

    基本的光照模型主要包括 环境光 漫反射 镜面反射 环境光是在晴天室外到处看到的光的类型 环境光也就被建模为一个没有光源 没有方向并且对场景中的所有物体产生相同的点亮效果的一种光 环境光在很多情况下会被尽量的避免去考虑 因为它看上去有点太人工
  • PlacingObjectsontheGlobe_译

    PlacingObjectsontheGlobe 译 已经创建了一个关卡并且输入一些像CesiumWorldTerrain或者一个城市的摄影测量模型真实世界资产 接下来你可能想要从标准UnrealEngine工具箱添加一些对象 格网 植物