Unity-Cesium for Unity 快速入门

文章目录[x]
  1. 0.1:主要内容:
  2. 0.2:先决条件
  3. 0.3:一、新建工程,导入Cesium For Unity包
  4. 0.4:二、连接到Cesium
  5. 0.5: 三、将地球添加到您的场景
  6. 0.6:四、配置主摄像机
  7. 0.7:五、将全球 3D 建筑添加到您的场景
  8. 0.8:六、探索你的场景
  9. 0.9:七、下一步

这是使用 Cesium World Terrain 和 Cesium OSM Buildings 构建 Cesium for Unity 应用程序的快速入门指南。

主要内容:

1. 将 Cesium for Unity 包导入 Unity
2. 创建关卡并从 Cesium ion 导入资产
3. 设置项目的默认 ion 资产令牌
4. 使用 Cesium 的 DynamicCamera 导航您的场景

先决条件

1. 已安装Unity 2021.3.2f1及以上版本,推荐最新版Unity 2021.3+ LTS 。
2. 一个Cesium帐户,用于将地形和建筑资​​产流式传输到 Unity 中。如果您还没有免费的Cesium帐户,请注册一个。
 Cesium ion 是一个用于流式传输和托管 3D 内容的开放平台,包括全球精选数据,您可以使用这些数据创建自己的真实世界应用程序。

一、新建工程,导入Cesium For Unity包

1. 新建一个Unity工程。
Unity 建议使用 Unity Hub 创建项目。本教程是使用 Unity Hub 3.3.0 编写的。通过单击新建项目按钮从项目选项卡创建一个新项目。应打开一个新窗口,允许您配置项目。本教程使用3D (URP)模板,但3D (HDRP)模板也适用。为您的项目命名并选择其文件位置。然后,按创建项目。您的新项目将立即打开。
Cesium for Unity 适用于通用渲染管线 (URP)和高清渲染管线 (HDRP)。但是,它不支持 Unity 的内置渲染器。如果您选择空的 3D 项目作为模板,Cesium 加载的数据集将无法正确呈现。
2. 项目完全加载后,通过转到菜单中的Edit > ProjectSettings...打开项目设置。
3. 单击左侧的PackageManager标签。

4. 使用以下设置添加一个新的Scoped Registry ,然后单击Save:
Name:Cesium
URL: https: //unity.pkg.cesium.com
Scope(s):: com.cesium.unity

 

5. 关闭项目设置,然后通过转到菜单中的Window > PackageManager。

6. 在包管理器中,单击包下拉菜单并选择My Registries。

7. Cesium for Unity会出现在包列表中。点击它,然后点击Install。Cesium for Unity 及其依赖项将被下载并安装。

8. 在上一步之后,您可能会看到这个弹出窗口。
会出现这个窗口是因为 Cesium for Unity 依赖于TextMeshPro包中的资源,Unity 项目中默认不包含该资源。要导入这些资源,请单击导入 TextMeshPro 基本资源。如果您不小心关闭了这个窗口,您也可以使用Window > TextMeshPro > Import TMP Essential Resources导入资源。

 

二、连接到Cesium

1. 通过从菜单中选择Cesium > Cesium打开Cesium窗口。

2. 单击连接到Cesium按钮。

3. 将打开一个弹出式浏览器窗口。如果您尚未登录,请登录您的Cesium帐户。您还可以使用您的 Epic Games、Github 或 Google 帐户登录。
4. 登录后,您会看到一个提示,要求您允许 Cesium for Unity 访问您的资产。选择Allow,然后返回 Unity 继续。

5. 现在您将为您的项目创建一个默认访问令牌。您从 Cesium ion 流式传输的每项资产都需要一个访问令牌。在本教程中,您将设置一个项目范围的访问令牌,您的所有资产都将使用该令牌。
单击Cesium窗口顶部的Token按钮。
6. 将出现一个新窗口来配置令牌。选择创建新令牌选项,并根据需要重命名令牌。然后,按创建新项目默认令牌按钮。
您创建的新令牌将添加到您的Cesium帐户中。
如果您的 Cesium ion 帐户中已经有一个您想要使用的令牌,您可以从“使用现有令牌”下拉列表中选择它,而不是创建一个新令牌。

 三、将地球添加到您的场景

每当您创建新项目时,Unity 都会创建一个新的SampleScene 。随意重命名您的场景。在Hierarchy窗口中验证它是否包含Main Camera和Directional Light。如果缺少这些对象中的任何一个,您可以通过分别单击GameObject > Camera或GameObject > Light > Directional Light从菜单中添加它。
有了场景中的这些基本对象,您就可以从 Cesium ion 添加资产了。
1. 在Cesium窗口中,通过单击该条目旁边的按钮添加“ Cesium World Terrain + Bing Maps Aerial imagery ”。
添加“Cesium World Terrain + Bing Maps 航拍图像”。

地形将开始出现在场景中。 此场景显示棕色和绿色的山麓,顶部是蓝天,中间是道路。

2. 查看层次结构窗口。您应该会看到两个新的游戏对象。其中之一,Cesium World Terrain,是您刚刚创建的 tileset。tileset 的父级CesiumGeoreference是在您第一次将 3D Tileset 添加到场景时自动创建的。
3. 如果尚未选择 Cesium World Terrain,请立即选择它。在Inspector窗口中,您会看到有关此游戏对象的更多信息。

这是一个Cesium3DTileset组件。当附加到游戏对象时,它将 3D Tiles 数据流式传输到 Unity 并提供配置该 tileset 的方法。您将在以后的教程中了解许多可用设置。现在,您可以自行探索和尝试不同的设置。将鼠标悬停在任何设置上以了解有关其功能的更多信息。

 

准备就绪后,继续下一部分。

 

四、配置主摄像机

在您的场景中,您应该有一个名为Main Camera的游戏对象,并附加了一个Camera组件。如果您自己将相机添加到关卡,它可能会被称为Camera。此相机将在播放模式期间捕捉您的场景。您可以通过单击“游戏”选项卡进行预览。
您可能会注意到地平线上的地形被奇怪地切断了。在四处移动编辑器相机时,场景视图中也可能发生这种裁剪,但通常不太明显。
在编辑器中,您可能会注意到在移动相机时地平线上的地形被切断了。发生这种情况是因为 Unity 中的相机只能看到它们前方的有限范围。如果您从Scene视图查看您的相机,您可以看到它的范围可视化为一个截锥体,如下所示。
相机视锥体的起点和终点由剪裁平面定义。这些表示对象将出现的距相机的距离。很明显,相机看不到很远的距离。

 

Cesium World Terrain 是一个全尺寸的地球,因此 Unity 正在渲染跨越数十万英里的地形,仅从这个相机视图!但是,默认情况下,Unity 的相机未配置为可以看到这么远的对象。幸运的是,您可以手动调整裁剪平面,以便相机可以在播放模式下正确查看场景。
1. 从Hierarchy窗口中选择您的相机,然后转到Inspector中的Camera settings 。找到Clipping Planes的值。
Near裁剪平面是距摄像机开始出现对象的最小距离。如果这是一个很大的值,靠近相机的物体将不会出现。另一方面,Far裁剪平面是物体将出现的距相机的最大距离。任何比 Far 平面更远的东西都不会出现。
很明显,相机看不到很远的距离。但是,这可以在Camera组件中轻松更改。

 

2. 将Near值设置为 1,将Far值设置为一个较大的值,至少 100,000。这将显着扩展相机的视野并防止地形在游戏中被剪裁。
在您自己的应用程序中,这些值可能会根据您的用例而改变。例如,如果您打算仅显示远处的数据,则可以将 Near 平面设置为更大的值。尽量不要让远平面离近平面太远,否则您可能会遇到渲染问题。有关更多详细信息,请参阅相机组件的Unity 文档。

 

现在您的相机可以看到更多的场景,请随意调整相机的位置以获得地形的最佳视野。您可以使用场景视图中的移动和旋转工具将相机移动到完美的位置。您还可以通过分别按键盘上的W和E键来切换到这些工具。
Unity Editor 的相机与游戏内相机的工作方式略有不同。您可以通过单击“场景”视图中的相机图标来查看其设置。

编辑器相机有一个Dynamic Clipping选项,它会根据场景中可见的内容自动调整相机的 Near 和 Far 值。选中此选项后,无法手动调整 Near 和 Far 平面。
此设置在使用 Cesium for Unity 时很有用,尤其是在放大和缩小地球时。然而,自动调整并不总是精确的,削波仍可能发生。如有必要,您可以禁用此选项并自行设置 Near 和 Far 值。如果您想在编辑器中更快地环游地球,您还可以更改相机速度。

五、将全球 3D 建筑添加到您的场景

现在您已经调整了相机以渲染更多 Unity 场景,让我们返回到向世界添加内容。Cesium for Unity 可以可视化的不仅仅是地形,我们可以用城市建筑的全球数据集来展示这一点。

 

1. 在Hierarchy窗口中选择CesiumGeoreference游戏对象。该对象确定您的 Unity 场景设置在世界的哪个位置。可以使用此游戏对象更改场景的当前纬度、经度和高度。
2. 在Inspector窗口中,在Origin (Longitude Latitude Height)标题下查找Latitude、Longitude和Height变量。
这些坐标目前指向美国科罗拉多州丹佛市外的山丘。
3. 将这些变量更改为您喜欢的城市的坐标。本教程使用美国伊利诺伊州芝加哥市的以下坐标。
纬度:41.878101
经度:-87.59201
高度:1000.0
输入这些坐标后,场景将转移到新位置。

4. 城市看起来很平坦,因为Cesium世界地形不包括建筑细节。幸运的是,可以添加 Cesium OSM Buildings 数据集来填补空白。在Cesium窗口中,找到Quick Add Cesium ion Assets下面的Cesium OSM Buildings选项。单击以将数据添加到场景中。
建筑物现在应该出现在地形的顶部。您或许能认出构成芝加哥天际线的一些建筑物!

六、探索你的场景

现在您已经将全球真实世界内容添加到场景中,让我们学习如何导航它。您将了解多种在场景中移动编辑器相机的方法。您还将了解Dynamic Camera,它是 Cesium for Unity 软件包中包含的控制器,可帮助您在游戏模式下浏览地球的巨大尺寸。
可以使用键盘和鼠标控制编辑器相机。选择场景视图后,使用箭头键向前、向后、向左或向右移动相机。您可以通过在“工具”菜单中选择手形图标或按住鼠标中键,然后在“场景视图”窗口中拖动来平移相机。
要用相机环顾四周,请按住鼠标右键并将鼠标拖过Scene View。您还可以通过按住Alt 键并用鼠标左键拖动来旋转相机。最后,您可以使用鼠标的滚轮,或按住Alt键的同时用鼠标右键拖动,以放大和缩小场景。
如果编辑器相机移动得太慢,您可以按照上一步中的描述调整相机速度。

 

对于播放模式,Unity 提供了一个角色控制器组件,您可以将其附加到相机以在场景中移动它。但是,您可能需要一个控制器来处理现实世界数据的规模,并且可以在任何高度有效地导航地球。这就是 Cesium for Unity动态相机的用武之地。

 

什么是动态相机?
Cesium 的 DynamicCamera 是一个全球感知相机控制器,可以根据它在地球上的位置调整其方向。DynamicCamera 能够动态调整其裁剪平面,因此地球在缩小时不会被裁剪。它还允许用户使用鼠标滚轮调整其移动速度,并提供沿曲线路径在全球位置之间飞行的能力,从而提供更轻松的全球导航。

 

1. 使用 Cesium 面板,将Dynamic Camera添加到您的场景中。

 

DynamicCamera应该出现在Hierarchy窗口中现有的CesiumGeoreference下。

2. 通过在Hierarchy窗口中选择Main Camera 并在Inspector中取消选中其名称旁边的框来禁用Main Camera。DynamicCamera将成为场景的新主相机。您也可以从场景中完全移除主相机对象。
3. 由于DynamicCamera是一个地理参考对象,它将保持其相对于其在地球上的坐标的位置,而不是标准的 Unity 世界坐标。这意味着如果CesiumGeoreference 的 Origin更改为不同的位置,DynamicCamera将留在后面。

 

如果您想将它移动到新位置,请在Hierarchy窗口中选择它并在Inspector中找到它的Transform。将其Position的X、Y和Z 坐标更改为 0 以将其移动到 Unity 原点。您也可以右键单击Transform上的三个点组件并从下拉菜单中选择重置。
4. 你已经准备好测试你的场景了!按顶部工具栏上的播放按钮。
您可以使用 W、A、S 和 D 键以及鼠标来飞来飞去。您还可以使用 Q 和 E 键相对于地球垂直移动相机。如果需要更改速度,请使用鼠标滚轮。
您已经使用 Cesium for Unity 创建了您的第一个场景。随意探索和检查世界!

 

七、下一步

现在您已准备好将自己的资产添加到场景中。
接下来工作:
1.添加数据集。
2.在地球上放置物体。
3.构建子场景。
点赞
  1. Swing说道:

    安装cesium for untiy 提示报错怎么处理,显示防火墙和环境变量设置问题。

    1. Alan Alan说道:

      大概率是因为提供cesiumForUnity包的服务器在国外,在国内访问经常出现问题。

  2. viply说道:

    大佬,如果我想平坦的地形不想要山体之类的高度,如何搞?还有就是我做了一个本地的影像切片,加载进去后一定要依附在默认地形上吗?我能不能单独显示这个影像切片?

  3. Felicity说道:

    大佬,使用cesium的插件,然后要怎么加载天地图

    1. Alan Alan说道:

      兄弟 这个我还不会,我记得B站上有人讲,你可以查查看。

发表回复

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像(已失效)