目录
Cesium For Unity 最新实践流程2 - 20221208
上一篇 Cesium For Unity3d 最新实践流程-2022-12-01 讲了如何使用 Cesium For Untiy 发布的项目进行,本篇将讲述如何通过新建项目,加载在线、本地等三维数据的流程。
1、项目初始化
1、新建项目
点击新项目,选择 3D(URP)模板。也可以选择 3D(HDRP)模板,需要注意的是,Cesium for Unity 支持 Universal Render Pipeline(URP) 和 High Definition Render Pipeline(HDRP) 两种渲染管线,但并不支持 Built-in 渲染管线。如果选择空的三维项目作为模板,Cesium 将无法正确渲染要加载的数据集。
2、未下载该模板的需要先下载,然后点击创建项目即可。
2、项目设置
创建完成后,项目正常打开如下:
1、Edit/Project Settings/Package Manager
打开 Edit/Project Settings
在 Package Manager 中设置如下:
Name: Cesium URL: https://unity.pkg.cesium.com Scope(s): com.cesium.unity
2、Window/Package Manager
选择 Window/Package Manger
点击 Packages,选择 My Registries
选中 Cesium for Unity,点击 install
安装完成后,会弹出一个窗口,如下,弹出此窗口的原因是 Cesium for Unity 依赖于 TextMeshPro 包中的资源,默认情况下 Unity 项目中不包含该包。因此需要点击 Import TextMeshPro Essential Resources,来导入依赖的资源。
导入资源时,确保 Fonts、Resources、Shaders、Sprites 全部被勾选。
如果意外关闭此窗口,还可以通过 Windows/TextMeshPro/Import TMP Essential Resources 来打开。
安装完成后,可以通过 Project/Assets/TextMesh Pro 位置查看勾选的是否已经安装:
3、登录 Cesium icon
1、点击 Cesium/Cesium,点击 Connect Cesium ion ,获取 Token
登录 Cesium ion 账户,没有账户的需要先注册账户。点击后会打开一个网页用于登录,登录成功后,会提示 Cesium for Unity is requesting the following permissions,点击 Allow 即可。
点击 Allow 之后,网页会提示 Successfully,然后回到 Unity 桌面项目即可。
可以看到,登录之后,Unity 桌面项目下已经有了 Cesium 的资产:
由于 Cesium 的每个资产都需要 Token,因此需要创建 Token。
点击 Token,选择 Create a new token,可以修改 Name,然后点击 Create New Project Default Token,这将为 Cesium 的所有资产创建 Token,以供使用。
创建好的 Token 将存在于当前 Cesium ion 账户中,如果已经之前已经有过 Token,可以选择 Use an existing token.
4、确认项目场景中是否存在 Main Camera 和 a Directional Light
如果场景中不存在 Main Camera、Direction Light,可以在 GameObject > Camera 、GameObject > Light > Directional Light
中分别点击添加即可。
2、添加数据
1、添加地形、影像、建筑模型
点击 Add,在 Cesium ion Assets 下选择 CesiumWorld Terrain,点击右侧的 Add to Level。
可以看到,三维地形数据已经加载到场景中:
添加 Bing Maps 影像:
添加 Cesium OSM Buildings:
添加之后,可以看到 Hierarchy 下 有 CesiumGeoreference,其下方有添加后的地形图层和建筑图层。
关闭项目后,重新打开,可能会遇到地形资产访问权限问题,如下,地形不显示,可以点击 throize the project's default token to access this asset,也可以重新登录 Cesium ion,申请 Token。
2、配置主摄像头
在 Unity 中,地平线上的地形在移动摄像机时会被切断,在 Game 选项卡查看场景时,剪切甚至更糟。
为了解决这个问题,可以设置主相机的裁剪平面的值。
近平面是对象开始出现的相机的最小距离。如果此值较大,则不会显示靠近相机的对象。
远平面是物体将出现的与相机的最大距离。任何比远平面更远的东西都不会出现。
而近、远裁剪平面的值需要根据所使用的的数据、场景相应确定。如果计划显示远处的数据,则可以将仅平面设置为较大的值。尽量不要让远平面离近平面太远,否则可能会遇到渲染问题。
此处将近平面设置为1,远平面设置为 1000000.
并取消勾选 Dynamic Clipping,Dynamic Clipping(动态裁剪),可根据场景中的可见内容自动调整摄像机的近裁剪平面和远裁剪平面的值。勾选之后,就无法手动调整近裁剪平面和远裁剪平面的值了。动态裁剪并总是精确的,仍然可能发生裁切。
3、设置场景默认坐标
点击 CesiumGeoreference,设置 Origin(Longitude Latitude Height),设置后场景会自动跳转到设置位置。
如下,调整为上海位置。
3、添加自己的本地或在线三维数据
1、选择点击添加 Blank 3D Tiles
2、添加后将在 CesiumGeoreference 下出现一个名为 Cesium3DTileset 的图层。
3、点击 Cesium3DTileset 图层进行设置
可以修改名称,如下修改为 Cesium3DTilesetTian,然后修改 Source 下的 Tileset Source 选择 From Url,可供下载 3DTile 数据地址:https://cesiumjs.s3.amazonaws.com/downloads/unreal-learning-content/Tileset.zip
4、设置三维数据地址,此地址可以设置在线地址也可以是本机数据地址
此处设置的为本机数据,需要注意的是 URL 地址中 \ 需要替换为 /,如 E:\5UEAndUnityAnd3D\Tileset\tileset.json 替换为 E:/5UEAndUnityAnd3D/Tileset/tileset.json,而且地址中 不允许存在空格,空格需要剔除。
5、双击图层定位到
双击 Cesium3DTilesetTian 之后,可以看到数据已经加载,但场景异常如下:
6、点击 CesumGeoreference,然后点击右侧的 Place Origin Here
7、再次双击 Cesium3DTilesetTian,可以看到模型加载正常,地形、影像显示正常。
8、但此时模型数据部分是被埋在地下的,此时可以设置当前图层的 Transform/Position 的 Y 值为 74
可以看到修改后,模型数据集已经在地上了。
同理,可以从任何服务器或本地加载 3DTile 数据、地形数据、影像数据,要完全脱机加载资产可以考虑设置 a 来提供数据。可以填充以 .localhost 结尾的URL 字段,如:http://localhost:portNumber/path/to/asset ,如果需要加载 WMS 服务数据,URL应指向资产的主文件,(例如 tilemapresource.xml):http://localhost:portNumber/imageryAsset/tilemapresource.xml
4、打包
选择 File/Building Settings,Platform 选择 Windows,点击 Build And Run,执行构建打包。
5、运行
运行打包后的程序,效果如下:
若运行后,无法显示地形、地图等,请登录 Cesium ion 后,重新打开尝试。
当前打包后的程序,暂无鼠标、键盘事件,场景暂无法缩放、移动等。