GIS2VR:从CityEngine通过Unity到HTC Vive

Esri CityEngine是将城市模型和其他3D GIS内容引入虚拟现实(VR)的绝佳工具。它允许您为手机(请参阅ArcGIS 360 VR)和台式PC 创建VR体验。

在这篇博文中,我们将逐步介绍如何快速将3D数据导入桌面VR耳机,如HTC Vive。要在VR中的3D环境中进行交互和导航,我们还将展示如何简单地设置手动控制器和传送功能。

作为示例3D数据集,我们使用由CityEngine城市向导创建的虚构城市,可以通过欢迎屏幕或通过文件菜单 – 新建 – 城市向导轻松访问。

出口你的城市环境

首先,选择您所在城市的中心部分,然后转到文件 – 导出模型

出口模型

Autodesk FBX在CityEngine和Untiy中都运行良好。在下一个对话框中,您可以调整一些参数。Simpify Terrain Meshes减少了平坦区域中三角形的数量,对于良好的性能非常重要。同时选择Create Texture Atlases,这将减少drawcalls的数量。您可以进一步选择嵌入纹理,  以便更轻松地传输到Unity。您可能需要向下滚动才能找到这些选项。

导出设置

导入Unity

生成的FBX文件可以在文件夹模型中的CityEngine Navigator中找到。将此文件拖放到 空Unity场景的Assets文件夹中。

拖放

然后将城市拖动到“ 层次结构”视图中。它也将出现在3D场景视图中。在“ 层次结构”视图中双击城市以重新定位,然后放大一点。现在,让我们调整相机位置。选择主摄像头  并使用移动工具将其放在街道上。小型相机预览有  帮助。

城市的拖拉

设置VR

要启用VR,请转到“ 编辑” – “项目设置” – “播放器”,然后选中“检查”中支持的虚拟现实  。

VR SDK设置

默认情况下,只添加了Oculus SDK,这对HTC Vive无效。要添加Vive支持,请单击小+  然后单击OpenVR。OpenVR适用于Oculus和HTC Vive。在Oculus前面拖动OpenVR,或者只是删除Oculus。
按 3D视图上方的“ 播放”按钮。如果SteamVR和VR眼镜安装正确,将显示一个小型SteamVR弹出窗口,城市将显示在VR中。如果SteamVR弹出窗口中出现警告,请参阅HTC Vive或Oculus Rift设置说明以获取帮助。

SteamVR接口

添加运动

我们现在有一个带有初始相机位置的场景。如果你有足够大的房间,你可以身体四处走走,探索街道。但是,您如何浏览更大的区域?

传统上,3D游戏使用控制器输入实现连续运动。然而,在VR中,这会引起许多用户的不适,因为移动的视觉刺激与静止的感觉不匹配。

一种解决方案是使用传送移动。用户不是连续行进,而是直接在位置之间切换。幸运的是,这很容易在Unity中实现。首先,单击Window – Asset Store。系统可能会要求您登录。然后搜索SteamVR  插件,然后单击“ 导入”。在对话框SteamVR设置中,  单击全部接受。

SteamVR插件

将  播放器  预制件从资产文件夹SteamVR / InteractonSystem / Core / Prefabs拖放  到层次结构中。正如我们之前使用主摄像头所做的那样,将其移动到3D场景中的一个不错的位置。然后删除主摄像头,因为播放器  预制件已包含摄像头。

拖放播放器

现在,将一些TeleportPoint  预制件从SteamVR / InteractonSystem / Teleport / Prefabs  拖入3D视图,并将Teleporting  预制件拖入层次结构中。对于较大的场景中更容易意念移物,可以增加弧距离  的隐形传态  参数。

设置传输点
启动场景时,您现在可以通过单击Vive控制器并瞄准传送点上的绿色路径来传送到这些位置。

万岁

它与Oculus Touch一样好用。

Oculus Touch

您还可以添加传送区域:在3D视图中双击街道,然后创建副本。单击 检查中的“ 添加组件”,然后添加“ 传送区域  ”和“ 网格对撞机”

传送设置

现在,您可以在VR中传送这条街上的任何地方。

传送Vive

调整场景

您可能会注意到树木看起来有点奇怪。要解决此问题,请单击“ 资产/材料”  ,然后选择所有绿树材料。然后 在“检查器”中选择“ 剪切”作为渲染模式。这将删除透明部分的高光。

拧

结论

使用CityEngine和Unity中的一些简单步骤和开箱即用功能,您可以创建引人入胜的VR体验。通过添加其他插件,例如SteamVR运动系统,可以改善体验。

您可以添加更多简单的调整以改善视觉质量:在Unity中添加屏幕空间环境光遮挡(SSAO)着色器将改善小细节的深度感知。Unity还为逼真的阴影提供全局照明解决方案。

在VR中展示大城市时,重要的是要关注性能。理想情况下,它应该以90fps运行,以获得舒适的VR体验。为了提高性能,可以在Unity中启用单通道立体声渲染。此外,CityEngine的基于规则的特性可以为几何创建不同的细节级别,例如向远处的建筑物添加更少的细节。

由于Unity的多平台特性,可以轻松地在多个平台上部署VR体验。例如,它适用于HTC Vive和Oculus Rift,也可以为Windows Holographic构建,以添加Microsoft Hololens支持。

我们将进一步改进此工作流程,以使GIS2VR在未来更加轻松。您是否有兴趣看到虚幻引擎的类似指南(操作起来更复杂,但非常适合交互式高质量建筑可视化)?我们很乐意倾听您的反馈。