來源:映維網
從《星際迷航》的全息甲板到《銀翼殺手》的全息投影,人類對混合現實的浪漫幻想從未止息。隨著科技的不斷進步,我們在實現所述愿景方面已經取得了長足的進步。實際上,利用微軟的HoloLens,Facebook的Oculus Quest,以及蘋果的ARKit等工具,社區正在為靠近這個科幻未來而進行一系列的探索與拓荒。
日前,Fanbank(專注于為中小商家提供用于在線銷售,個性化定價和自動化客戶忠誠度管理的SaaS解決方案商)的首席技術官斯科特·蓋耶(Scott Geye)就通過博文介紹了他是如何用Quest和Unity等工具制作了一個炫酷的混合現實公寓。他表示,希望自己的分享能夠鼓勵大家天馬行空地進行創新和嘗試。下面是映維網的具體整理:
我的混合現實公寓
1. 如何用Oculus Quest和Unity創建一個混合現實游樂場
在過去的數年里,我越來越迷戀下一個通用計算平臺是什么。同時,我越來越對這個未來所需的時間感到沮喪。作為一名軟件工程師,我只想開發出酷炫的產品,但我只能使用已有數十年歷史的技術,或尚屬于萌芽階段、可能永遠無法突破的新平臺。我希望開發出驚人的增強現實/虛擬現實/混合現實應用程序,而我只需一副價格合適,視場寬廣,雙手/世界追蹤能力強的輕型AR眼鏡。我可是在看著你哦,蘋果和Facebook。
但目前可用的只有位于沉浸式頻譜一端的移動AR,以及位于另一端的VR頭顯(除非你愿意花一大筆錢購買少有人能承受的設備)。當談到在所述平臺構建軟件時,你會發現很難實現酷炫的游戲和新奇的體驗。當我的想象力被手機屏幕的方框,或頭顯與周圍環境的斷離所粉碎時,我放棄過不止一個原型。
所以,當我“耐心地”等待新一代設備上市時,我決定先使用現有的設備來實現我理想中的功能:Oculus Quest。我想看看將現實公寓映射成一個虛擬副本是否能給我一種真正的混合現實感,并允許我有效地“試用”當今硬件所無法支持的應用程序。
在這篇教程中,我將向你介紹我是如何一比一地映射真實公寓,并在Unity中制作虛擬版本所有步驟。我喜歡用Mac,所以一切都將以Mac為中心,但同樣的步驟應該適用于Windows的Unity。如果你是一名Unity新手,甚至不是開發者,請不要擔心,因為相關步驟不涉及編碼,所以像這樣的項目是一個非常棒的學習方式。
在后面的教程中,我將使用我們在這里構建的平臺來探索將物理和虛擬相結合的新應用程序。特別感謝格雷格·麥迪遜(Greg Madison)和昆汀·瓦倫博伊斯(Quentin Valembois)給我的靈感,以及幫助我開始的訣竅。
2. 測量和繪制你的平面圖
下面開始吧。如果你擁有房間的詳細平面圖,你已經領先一步。否則,你只能像我一樣自行測量每一堵墻壁。傳統的卷尺并不能解決所有問題,而諸如iOS搭載的AR測量應用同樣沒有給我帶來好運。最后我購買了一個激光測量設備,并嘗試在更遠的距離獲得更高的精度。這個裝置和廣告描述一樣,但我發現最大的問題是,墻壁并不像我預期的那樣筆直。不僅墻壁之間不是完全垂直,甚至墻壁本身都是呈現一定的波浪狀,而這影響了激光的讀取掃描(專業提示:要獲得更佳的視線,你可以在激光和墻壁之間放置書籍)。最后我選擇了結合激光測量和傳統卷尺,并降低了我對完美的期望。一旦獲得了可用于Unity的基本模型,你就可以進行虛擬漫游,并在需要的地方進行調整。
測量時,你可以使用任何二維繪圖程序(我用的是Graphic),甚至是老式的繪圖紙來繪制平面圖。當我們將平面圖輸入到Unity時,我們需要確保比例正確。在現實世界中,一個單位等于1米,所以我建議用厘米進行測量,然后選擇一個比例尺來繪制,這樣得到的圖像不會太大(如1個像素等于1厘米)。即使你的房間很長,你都要確保畫布的尺寸是一個完美的正方形。因為將一個正方形映射到Unity對象會更加容易。

我的公寓的2D平面圖
當完全畫好房間后,你還需要在平面圖之外畫一條100厘米的線。稍后我們會使用這條線來幫助我們正確縮放平面圖。
現在將平面圖導出為PNG,然后仔細檢查文件,確保背景為白色且不透明。當我們進入三維建模步驟時,這會令一切變得更簡單。
3. 設置Unity以進行VR開發
如果這是你第一次建立虛擬現實項目,建議你遵循這個教程進行設置。完成教程后,你應該已經完成以下操作:
安裝了Unity(如果這是你第一次安裝)創建了一個項目安裝了Oculus Integration配置了XR支持在 Oculus Developer Portal中創建了一個應用程序在開發者模式下設置你的任務在設備生成并運行一個示例項目
其中有一些繁瑣而費時的步驟,但一旦完成,你的項目和你的Quest就算是為本教程的其余部分做好了準備。
4. 在Unity繪制平面圖
打開Project視圖并將平面圖文件拖放到“Assets”文件夾中,或通過右鍵單擊“Assets”文件夾來執行導入。
接下來,創建一個新材質并將其命名為Floor Plan。然后單擊材質Inspector的Albebo,并從文件選擇器中選擇平面圖圖像。
現在在場景中創建一個新平面,如有必要,調整平面,使頂部朝向Y方向。將新的平面圖材質拖到平面上方以進行應用。現在你應該可以在場景中看到平面圖。

接下來創建一個新的立方體。默認情況下,立方體在每個維度上的比例都是1米,我們將它作為參考來正確縮放平面圖。將立方體移到我們先前在平面圖上繪制的1米線旁邊,然后縮放平面圖,令1米線與立方體的邊緣相匹配。

現在你的平面圖已經正確縮放,我們需要將二維線圖轉換為三維對象。我建議使用Unity的ProBuilder來實現這一點。這是一個易于學習的簡單工具,它提供了大量優秀的功能,當我們后面想要對房間中更復雜的部分建模時,我們就可以進行使用。下面我們設置ProBuilder。這里有一個介紹基礎知識的入門視頻。
從ProBuilder菜單選擇New Poly Shape,并在每個角圍繞房間的周長單擊,從而為與平面圖匹配的新形狀創建頂點。連接完所有墻壁后,你可以單擊“Edit Poly Shape”以拉直任何不適當的線。
我們現在可以將二維平面圖轉換為三維房間。選定新形狀后,可以通過在“Extrusion”字段的Inspector中輸入與房間高度(以米為單位)相匹配的新值,然后進行拉伸形狀(我的房間是2.8)。現在你應該會看到一個從外觀像是你房間的實體。

擠型后的平面圖
默認情況下,Unity渲染從對象外部反彈的光,但我們希望像在內部一樣查看對象。我們不必重建單獨的對象來表示墻壁、地板和天花板,我們只需在Inspector中勾選Flip Normals即可。這將繪制對象的內部,而現在我們可以在房間對象中放置camera、照明和對象,并從內部看到它的樣式。

翻轉法線的擠型平面圖
5. 對齊頭顯在真實世界的位置和虛擬世界的位置
這成為了最棘手的部分,因為你無法提前保證頭顯在物理空間中的位置與camera在虛擬空間中的位置相匹配。
這里涉及大量的猜測和檢查,所以你要做的第一件事就是關閉Oculus Quest的防護系統,這樣你就可以在房間里自由走動。只需戴上頭顯,導航到設置中的開發者菜單,然后關閉防護系統。

禁用這個選項將允許你在房間中漫游
回到Unity,進入你的Assets中的Oculus文件夾,在VR/Prefabs下找到OVRCameraRig并將其拖動到場景中。你需要把camera放在一個允許你在真實房間里放下的位置。我選擇了把camera放在兩堵墻相交的角落,這樣我就可以把頭顯的正面靠近墻壁,并將頭顯的中心與墻角對齊。你可以使用游戲camera的視圖來更好地查看頭顯的實際位置。

選擇一個可以安放頭顯的地方
這解決了兩個維度,但對于高度,請嘗試將camera設置為比地面稍低一點(我使用的Y值為-2.8)。不管怎樣,在測試場景時我們都必須調整所有三個維度。
現在是關鍵的時刻。請插入頭顯,并開始你的項目。當你第一次戴上頭顯時,camera就在你放到地板的位置(即便那可能不是物理頭顯所在的位置)。摘下頭顯,將其放到與虛擬camera匹配的位置。然后拿起右手控制器,按住Oculus按鈕。這將重置視圖并對齊物理頭顯與虛擬camera。頭顯現在將從正確的位置開始追蹤,當戴上它時,你應該該能被映射到房間的正確虛擬位置。順利的話,一切都能很好地結合在一起,而且你會感覺自己仿佛正在通過頭顯瀏覽你的房間,只是沒有家具。
接下來,你需要按照本教程將控制器模型和手部追蹤添加到場景中。一旦完成所述設置,你就可以重新運行項目,重新調整頭顯,并用雙手去感覺物理和虛擬映射之間的差異。你需要對camera的位置進行一定的調整,從而確保一切都盡可能地對齊。當你在房間里走來走去時,你可能會注意到有些墻壁的位置不正確,這時你可以使用ProBuilder進行調整和重新測試。
6. 裝飾房間
現在是有趣的地方:讓你的虛擬房間看起來更像是你的物理房間。我建議你無需過分追求100%精確,因為你可能會在不必要的地方浪費太多時間,比如照明設備、門把手和垃圾箱。我同時認為,裝飾一些不可能存在但更容易建模的物品會更容易和更有趣,并進一步說明虛擬世界的可能性。例如,我制作了一臺120英寸的電視。
Unity Assets Store中有非常多可用于沙發,桌子和椅子等基本物品的優秀免費asset。它們可能與你房間里的物品不完全匹配,但一旦正確地縮放,它們應該足夠接近,難以區分,不會影響我們以后要構建的任何一切。
我把最重要的家具和最重要的物品放在房間里:沙發。你會注意到,當向場景添加預構建資源時,它們的比例可能不正確。根據構建模型時的比例,有時它們會太大,有時則會太小。
為了幫助獲得正確的比例,我們將使用虛擬空間中的立方體作為指導。首先,測量真實世界物體的最長尺寸。對于我的沙發,我測量從地板到沙發后背頂部的距離,從每個靠手外側到沙發的距離,以及從后到前的距離。
一旦獲得了所有的測量數據,我們就可以創建一個全新的立方體,并對它進行縮放以匹配我們的測量。現在,將一個家具包中的預制件拖到場景中,并將其放置在立方體內部。使用Rect Tool更改尺寸以匹配立方體的尺寸(你可能需要選擇子對象并在單個方向進行調整)。

當你的對象在所有維度對齊立體放后,你就可以刪除虛擬場景中的立方體和對象位置。
現在,你需要測量兩個不同墻壁之間的距離,從而評估將對象放置在虛擬空間中的位置。同樣,一旦獲得了正確的測量,你可以在這里使用一個立方體作為放置對象的指導。當開始設置更多的對象時,你就可以相對地進行定位,甚至可以用眼睛觀察判斷位置,以便快速完成任務。
最后,我用商店里的預制資產來制作家具,廚房里的櫥柜,甚至是壁爐里的火。我用ProBuilder建立了我的吧臺區域,只留下了我的水槽和烤箱,因為我還有更多有趣的物品可以放在場景中。在空墻位置,我用ProBuilder嵌入墻面,突出我的陽臺、壁爐、窗戶和幾個壁龕。在房間中設置了點光源后,我同事可以刪除默認的定向光源,從而使房間的照明更加真實。

我完成的虛擬公寓的俯視圖*
7. 捕獲并排視頻
如果你已經來到這一步,恭喜你。下面這部分屬于可選項,但以防你想展示自己的作品,我想快速過一遍我是如何制作上述視頻。Quest內置視頻捕獲功能,所以真正困難的部分是把智能手機綁到頭顯,并點擊兩臺設備的錄制按鈕。
我決定進行DIY,只使用幾條橡皮筋。把每條橡皮筋穿過頭顯側面的頭帶,然后繞著頭顯前端起拉,并使其穿過另一側的尼龍頭帶。

沒什么特別高大上的工具,但非常管用
將智能手機滑入橡皮筋和頭顯之間,確保頭顯垂直對齊(水平對齊可能會鎖定手機并切斷錄制和格擋頭顯攝像頭)。確保橡皮筋不會遮住你的Quest攝像頭,然后在你的智能手機點擊“錄制”,戴上頭顯,在Quest中點擊錄制。我錄制的視頻時有點不穩定,但最終的視頻效果很好。
我用這個工具把Quest視頻放到我的筆記本電腦,然后用iMovie將這兩個視頻剪輯并拼接在一起。這兩個視頻的縱橫比和透視圖都有很大的不同,所以你必須仔細對比并選擇最佳的結果。我非常期待著看你所創建的內容。
8. 下一步
我們現在已經擁有了一個基本的混合現實平臺。我很高興能開始實現一些,我已經構思了一段時間但從未嘗試過的想法。有些純粹是UI概念。但我真的非常好奇自己是想如何與物理對象交互,以及什么樣的控制和交互最為有效。對于這種對原型制作非常有趣環境,我對只能存在其中的應用同樣有一些想法。
我會盡我最大的努力來記錄我所做的一切。希望我所構建的內容能夠鼓勵你去實現你自己的想法,因為對于即將到來的未來,我們都只是摸著石頭過河。
原文鏈接:https://yivian.com/news/77277.html
