PlacingObjectsontheGlobe_译

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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jennifer33K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值