1. 程式人生 > >GIS的VR支援:CityEngine如何通過Unity支援HTC Vive?

GIS的VR支援:CityEngine如何通過Unity支援HTC Vive?

原文地址
作者:Markus Lipp
時間:2017年9月12日

Esri CityEngine是將城市模型和其他3D GIS內容引入虛擬現實(VR)的好工具。它允許您為手機(見ArcGIS 360 VR)和臺式PC建立VR體驗。

在這篇博文中,我們將逐步描述如何快速將3D資料匯入桌面VR頭戴式裝置,如HTC Vive。為了在VR中的3D環境中進行互動和導航,我們還將展示如何簡單地設定手動控制器和傳送功能。

作為3D資料集的示例,我們使用CityEngine City Wizard建立的虛擬城市,該資料可以通過歡迎螢幕或通過 File menu – New – City嚮導輕鬆訪問。

匯出你的城市環境

作為第一步,選擇城市的中心部分,然後轉到File – Export Models

這裡寫圖片描述

Autodesk FBX在CityEngine和Untiy中都很出色。在下一個對話方塊中,您可以調整一些引數。 Simpify Terrain Meshes用於減少平坦區域中的三角形數量,對於良好的效能來說很重要。還可以選擇 Create Texture Atlases,這樣可以減少繪製次數。(譯者注:將多個紋理打包為單一紋理,並通過紋理座標來訪問對應區域可以減少底層渲染引擎的消耗)您可以進一步選擇Embed Textures“以更容易地在Unity使用這些資料。您可能需要向下滾動才能找到這些選項。

這裡寫圖片描述

匯入到Unity

所得到的FBX檔案可以在CityEngine Navigator的’models‘資料夾中找到。將此檔案拖放到空的Unity場景的資原始檔夾中。

拖放

然後將城市拖動到“Hierarchy ”檢視中。它也將出現在3D場景檢視中。雙擊Hierarchy檢視中的城市,然後放大一些。現在,我們來調整相機的位置。選擇Main Camera並使用移動工具將其放置在街道上。小Camera Preview會有幫助的。

城市拖網

設定VR

要啟用VR,請轉到Edit – Project Settings – Player,並勾選檢查器的Virtual Reality Supported

VR SDK設定

預設情況下只新增Oculus SDK,但這不適用於HTC Vive。要新增Vive支援,請單擊小的“+”符號,然後單擊OpenVR。 OpenVR可以適用於Oculus和HTC Vive。將OpenVR拖到Oculus前面,或者簡單地刪除Oculus。
按3D檢視上方的Play 按鈕。如果SteamVR和VR眼鏡安裝正確,將顯示一個小的SteamVR彈出視窗,城市將顯示在VR中。如果在SteamVR彈出視窗中出現警告,請參閱HTC Vive或Oculus Rift設定說明以尋求幫助。

SteamVR介面

新增移動

我們現在有一個與初始相機定位的場景。如果你有足夠大的房間,你可以自身走動一下去探索街道。但是,您如何瀏覽更大的區域?

傳統上,3D遊戲使用控制器輸入實現連續運動。然而,在VR中,許多使用者會引起不適,因為移動的視覺刺激與靜止的感覺不符。

一個解決方案是使用傳送移動。使用者直接在不同的位置之間切換,而不是連續旅行。幸運的是,這在Unity中很容易實現。首先,單擊Window – Asset Store。可能會要求您登入,然後搜尋SteamVR外掛,然後單擊Import。在“SteamVR Settings”對話方塊中,單擊“Accept All”。

SteamVR外掛

將資料夾“SteamVR / InteractonSystem / Core / Prefabs”中的“Player prefab”拖放到“Hierarchy”中。就像我們之前使用Main Camera一樣,將其移動到3D場景中的一個不錯的位置。然後刪除主相機,因為Player prefab已經包含相機。

拖放機

現在,將一些來自SteamVR / InteractonSystem / Teleport / Prefabs的TeleportPoint prefabs拖放到3D檢視中,並將Teleporting預製拖放到Hierarchy*中。為了更方便地在更大的場景中傳送,您可以增加傳送引數中的弧距。

設定傳輸點
當您啟動場景時,您現在可以通過點選Vive控制器並傳送到傳送點上的綠色路徑來傳送到這些位置。

萬歲

執行起來,它與Oculus Touch一樣的出色。

Oculus Touch

您還可以新增傳送區域:雙擊3D檢視中的街道,然後建立副本。單擊檢查器中的Add Component,並新增傳送區域以及Mesh Collider

傳送設定

現在你可以在VR中這條街上的任何地方傳送。

傳送Vive

調整場景

你可能會注意到樹木看起來有點怪異。要修復此問題,請單擊Assets/Materials,然後選擇所有綠色樹材料。然後在檢查器中選擇Cutout作為渲染模式。這將從透明部分中刪除高亮部分。

結論

在CityEngine和Unity中使用幾個簡單的步驟和預置功能,您可以建立引人入勝的VR體驗。通過新增額外的外掛,如SteamVR運動系統,可以改進體驗。

您可以新增進一步的簡單調整來提高視覺質量:通過在Unity中新增螢幕空間環境遮擋(SSAO)提高對細節的深度感知。 Unity還為現實陰影提供了全球照明解決方案。

在VR中顯示更大的城市時,重要的是要注意表現。 理想情況下,它應該執行90fps,以達到舒適的VR體驗。 為了提高效能,可以在Unity中啟用Single-Pass立體渲染。 此外,CityEngine的基於規則的性質可以為幾何形狀建立不同的細節級別,例如將較少的細節新增到遠處的建築物中。 由於Unity的多平臺特性,很容易在多個平臺上部署VR體驗。 例如,它與HTC Vive和Oculus Rift相容,還可以為Windows全息照相機新增Microsoft Hololens支援。 我們將進一步完善這一工作流程,使GIS2VR在未來更加容易。 你有興趣看到為Unreal Engine等提供的指南嗎? 我們很樂意收到到您的反饋。

譯者注:Markus屬於蘇黎世研發中心,在I3S的設計和實現過程中,也曾和他遠端合作過一段時間。