AR實踐|基於Unity的傳送門——穿越如此簡單

2021-02-15 虛擬實境技術及應用

- 正文開始 - 


如果對AR的開發感興趣,或者初學AR開發的人想小小炫技一下,傳送門真的是一個很好的入門項目。實現起來非常簡單,只要與有一個內面顯示,外面隱藏的場景模型就可以了,當然,模型最好有一個門,這樣才有穿門而入的感覺,也會有虛實兩屆穿越的感覺。

作者實現了一個傳送門,靈感來源於哆啦A夢任意門。疫情之下,人們減少外出,也取消了許多旅行計劃,為彌補無法旅遊的遺憾,作者原本想利用傳送門實現虛擬旅遊概念。項目使用Free 3D網站現有建築模型,利用Unity和Google ARCore實現AR,打開本軟體即可出現任意門,從不同的角度透過任意門可以看到相應角度的門內景物,而繞至門後便只可看到門的背面,無法看到門內景象,這符合任意門的特點。走進門內,可以通過改變手機角度實現全方位的遊覽。

2020年初,新冠疫情席捲全球,受其影響,人們取消了大量出行計劃。儘管全球各地通過網際網路發起了諸如線上音樂會等活動來增添居家樂趣,但旅行計劃被打斷的遺憾仍然存在,為彌補此遺憾,本產品聚焦居家旅遊,參考哆啦A夢任意門的思路,實現在AR場景下的虛擬遊覽。任意門的創意體現了90後的童年記憶,也包含了對童年的懷念。

 方案 

/ 開發引擎選擇 /

Unity是全球應用非常廣泛的實時內容開發平臺,為遊戲、汽車、建築、影視動畫等領域的開發者提供強大且易上手的創作工具,全平臺所以遊戲中有超過一半都使用Unity 進行創作【1】。

然而開發新手並不了解各種引擎之間的區別,在尋找教學視頻的過程中了解到Unity具有直觀的GUI開發界面,同時提供豐富的教程,對開發新手來說上手較為容易。同時,Unity提供多種AR、VR引擎,給後續開發提供了許多便利。因此選擇Unity作為開發引擎

/ AR引擎選擇 /

目前世界主流的AR SDK提供廠商主要是Vuforia、Metaio等。其中Metaio在被Apple重金收購後就再未對外公開過SDK,經過兩年的封閉開發,Apple已經打造出了強大的ARKit,能夠基於龐大的IOS和iPad設備生產出各種驚豔的AR產品。Vuforia也在2015年11月被PTC公司收購,後續一直在更新並提供SDK,眾多的功能以及高質量的識別技術,使得Vuforia深入人心。

而ARCore是谷歌於2017年推出的搭建增強現實應用程式的軟體平臺。它可以在現下多種流行開發平臺中使用,本身封裝了一套本地API,通過它可以實現一些最基礎的AR效果,比如手勢監聽、世界定義、燈光識別等【2】。

由於開發者的電腦不是IOS系統,在選擇AR引擎時首先排除了ARKit,而隨著Unity版本的更新,Vuforia中的一些函數無法繼續使用,因此決定選擇ARCore

/ 模型選擇 /

本產品最初的設計並不是用於虛擬旅遊,而是通過任意門傳送到一個完全虛擬的動漫世界,這是開發者個人愛好的體現。然而在以動漫《夏目友人帳》中場景為藍本進行建模的過程中,開發者感受到了個人能力的不足,預感將無法完成模型的搭建,因此轉變思路,忍痛放棄動漫世界的主題,將目光投向居家旅遊。

為給使用者帶來身臨其境的體驗,預期建模效果是能實現真實場景到AR場景70%-80%的復刻,這對建模精度的要求很高,受個人能力限制,開發者清楚地認識到實現這一目標的可能性較低,因此選擇在模型網站上尋找現有建築模型,用於產品設計。

 開發流程 

/ 軟硬體 /

本產品的實現過程中,硬體採用安卓系統智慧型手機華為P30

軟體採用Unity、Google ARCore和Visual Studio編譯環境。

/ 開發結構/ 


圖1 開發結構圖

Fig.1 Project development structural diagram

綜上對開發引擎、AR引擎、使用模型以及軟硬體的選擇,本產品的開發結構如上圖所示。

/ 功能描述 /

本產品是一款AR虛擬旅遊軟體,打開軟體即可出現任意門,在門外可觀察到門內景象,而繞至其背後則只能看到門的背面,走進任意門可對門內景物進行全方位的遊覽。

/ 開發過程 /

ARCore導入及環境配置

ARCore-Google Developer官方網站中下載arcore-unity-sdk-v1.1.0.unitypackage,將其導入Unity,導入後做以下更改:ARCore中控制識別圖片的腳本為ARCore Session,其具有public變量Session Config,當完成識別後將顯示指定模型。控制待顯示模型的腳本為ARCore Session Config,因此將3D模型生成Perfab,並將腳本中的變量Grid Visualizer指向該Perfab

 

圖2  ARCore腳本設置

Fig.2 Scripts setting

 

圖3  環境腳本設置

Fig.3 Scripts Setting of Grid

平面捕捉

編寫C#腳本,對ARCore的工作狀態進行檢查,並獲取檢測到的平面

 

圖4  平面捕捉腳本

Fig.4 Scripts of Plane Detecteing

Google ARCore SDK提供了給檢測到的物體產生蒙皮的腳本,現在只需要將其粘貼進新建立的Grid Visualizer腳本中即可。

 

圖5  ARCore腳本

Fig.5 Scripts of ARCore

在Material中選擇由ARCore提供的PlaneGrid。

 

圖6  網格材料

Fig.6 Grid Material

當ARCore檢測到平面時,該腳本將被應用於每個被檢測到的平面。

導入模型場景資源

導入模型資源,該模型來源於Free 3D網站,由3dMAX進行製作。為了實現簡單任意門效果,最主要的地方是場景需要被「隱形衣」包裹,給被包裹的場景留出一個門的位置。

 

圖7  導入模型外觀

Fig.7 Appearance of the model

 

圖8  導入模型內部

Fig.8 Inside of the model

 

圖9  模型腳本設置

Fig.9 Scripts Setting of Model

實現任意門效果

最後需要給導入的模型穿上「隱形衣」,新建一個平面,通過腳本編寫,可實現除門以外的模型全部不可視的效果,該平面就是「隱形衣」。

 

圖10  部分平面腳本

Fig.10 Scripts of PortalPlane

 

圖11  隱形效果

Fig.11 Invisible Effect

 效果及測試 

在具有一定行走空間的地方打開程序,可以看到任意門。

 

圖12  效果1

Fig.12 The Scene on Android 1

從門正面向內部看,可見內部景象,角度不同則景象不同

繞至門的側面及背面,只可見任意門,不可見其內部結構。

 

圖13  任意門側面

Fig.13 The Side of The Door

進入任意門內部,可從各個角度進行全方位遊覽。

 

圖14  任意門內部-1

Fig.14 The Inside of The Door-1

 

圖15  任意門內部-2

Fig.15 The Inside of The Door-2

 

圖16  任意門內部-3

Fig.16 The Inside of The Door-3

 

  項目總結 

1、目前實現了基於AR技術的任意門開發,使用現有中世紀教堂模型完成了門內景象;

2、通過改變Portal Plane包裹的區域可實現任意門的嵌套,即可以實現多個虛擬場景之間的轉換;

3、在本項目的基礎上,可加入景點音頻介紹、虛擬路標等功能,使本產品成為較為專業的虛擬旅遊軟體。

 致謝 

在項目的開發過程中,我學習了許多網頁上的內容,例如CSDN上許多優秀博主的文章,同時也在youtube和嗶哩嗶哩上觀看了一些Unity教學視頻和開發實例,最後照貓畫虎獨立完成了本項目的開發製作,感謝在網絡上無私分享學習經驗的博主和up主。

參考文獻(References)

[2] ARCore簡介https://blog.csdn.net/zxm317122667/article/details/80408205https://blog.csdn.net/zhang2333333333/article/details/105001086?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control

相關焦點

  • 自製AR版《傳送門》中自由穿梭
    【本文由83830原創發布,轉載請註明出處】《傳送門》系列遊戲,作為 Valve 的代表作品,一直深受全世界遊戲玩家們的喜愛。目前已經發布的《傳送門1》和《傳送門2》,自從玩家們得知 Valve 與 HTC 合力開發 HTC Vive 以來,玩家們就開始期待 Valve 會不會突然大發慈悲製作《傳送門》或者是《半條命》等系列遊戲的 VR 版。《傳送門》是一款風格和玩法都別具一格的遊戲。玩家手中的武器並非為射殺敵人而存在,而是用來在牆壁、地板上打開出口或實施類似於空間穿梭的特殊操作。
  • 論文精選 | 基於unity3D AR體感遊戲的設計與實現
    kinect2.0體感設備和 unity3D 2017.4.3開發AR體感遊戲。來  源《兵工自動化》2019年第9期《基於unity3D AR體感遊戲的設計與實現》作者:王濤單位:西安航空學院網絡信息中心,西安,710077引用格式:王濤。基於unity3D AR體感遊戲的設計與實現[J].兵工自動化,2019, 38(9):16-22.歡迎引用,謝謝!
  • 我的世界:玩家最期待的五個傳送門,第五個穿越時空,萬眾期待!
    傳送門是一種十分強大的物品,堪稱神器,它能讓玩家瞬間跨越到不同世界,像我們所熟知的傳送門有末地傳送門、下界傳送門等等,那麼你還想在原版世界中出現哪些傳送門呢?下面就讓我們一起來看看世界中玩家最期待的五個傳送門,第五個穿越時空,萬眾期待!第一個,天堂傳送門。在我的世界中地獄一般被稱為下界,而天堂則被稱為天域,關於天域,在世界中已經是一個老生常談的話題了。
  • 關於《傳送門》的十個事實
    當ND的開發者接到V社的邀請時,他們還以為是個簡單的交流活動。沒想到一進V社的大門,就受到了G胖的親自歡迎,當場敲定了offer。官方設定的梗是最後結局中,從天上掉下來的那個圓環,他們還為這個圓環起了名字Hoopy the Hoop……正是基於製作組對於蛋糕和圓環的不同態度,在傳送門2中,關於蛋糕的彩蛋很少很少,而那個叫hoopy的圓環卻到處都有……
  • 我的世界虛無世界3傳送門怎麼做2020
    我的世界虛無世界3傳送門做法介紹2020:首先在遊戲中建造長為5方塊高為6方塊的框架。然後能量雕符石放在框架底部中央。其次其他的雕符石可放在任一位置。在傳送門框架建成時,就會留下長為3方塊高為4方塊用於進入傳送門的框架內部空隙。這樣虛無世界3傳送門就做好了。
  • 我的世界天啟之境傳送門怎麼製作 傳送門製作步驟教程
    我的世界天啟之境傳送門怎麼做?在我的世界裡,會有著各種各樣的玩法,其中就有人問天啟之境傳送門怎麼做?下面就去看看吧。一、天啟之境:混沌進入辦法  想要進入2020年春節我的世界手遊推出的天啟之境混沌玩法,玩家需要在主世界創建一個「天啟傳送門」後開啟傳送門進入,而新版本的引導之書告訴了我們建造傳送門需要收集黑曜石、藍冰兩種素材,最後我們還需要一個打火石。
  • 盤點《我的世界》六大傳送門
    末地傳送門只出現於要塞中,由12個末地傳送門框架圍成一個水平方向邊長為5的缺角正方形。如果要激活傳送門,每一個框架都必須要有末影之眼激活。末地傳送門位於要塞裡的傳送門房間中,懸在巖漿池之上,有一排樓梯可供攀登到傳送門邊框。樓梯中鑲嵌著一個蠹蟲刷怪箱。有少數末地傳送門框架已經被末影之眼激活(通常為1-2個),但大部分還未激活。
  • 《元氣騎士》古代傳送門在哪 古代傳送門進入方法
    導 讀 元氣騎士古代傳送門進入方法 元氣騎士手遊中,玩家把大廳升級至最新後,下方的魔法大廳內就會出現「古代傳送門」裝置,當玩家靠近古代傳送門時,系統就會提示玩家是否消耗
  • 真·情懷開發團隊發布《傳送門》VR 版
    目前已經發布的《傳送門1》和《傳送門2》,在 Steam 遊戲平臺上也是好評爆表。自從玩家們得知 Valve 與 HTC 合力開發 HTC Vive 以來,玩家們就開始期待 Valve 老總 G胖會不會突然大發慈悲製作《傳送門》或者是《半條命》等系列遊戲的 VR 版。有的玩家甚至還期待著傳聞已久的《半條命3》。
  • 解謎遊戲三件寶:氣流、膠體、傳送門
    現在的解謎遊戲好像都很喜歡加入簡單的「傳送門」設計。我是在玩《細胞解謎大冒險》(Cyto’s Puzzle Adventure)時想到這個問題的,也有可能是更早的時候。我在上周評測的《伏特》有傳送門,印象裡,《憤怒的小鳥2》也有傳送門,《果凍方塊》也有,簡單搜索一下,就能發現《放了那隻豬》《零點年代》等遊戲也是如此,而且上述的遊戲玩法都各不相同,大概只能統稱為解謎遊戲。先來談談《細胞解謎大冒險》是怎麼樣的,說起來,這款遊戲還有些新意。遊戲的主題是「彈射」,圍繞彈射又增加了「黏著」和「伸縮」兩個概念。
  • 《迷你世界》地心傳送門怎麼做 地心傳送門製作方法
    導 讀 迷你世界地心傳送門怎麼做" src="http://image.9game.cn/2020/6/
  • DELLEMCUnityXT380XT480存儲 170000元
    大篆科技於2009年成立,是活躍於華東地區教育、科研、醫療、公安領域,具有豐富實踐經驗的信息技術公司。經過幾年的發展,大篆科技成長為一家專業銷售戴爾伺服器、戴爾存儲器、戴爾網絡產品,emc存儲。並為客戶提供網絡構架、網絡規劃、大數據解決方案、雲計算、私有雲、混合雲等企業級集群部署的專業化公司。
  • 抖音傳送門紅包怎麼發 傳送門禮物做什麼用的?
    抖音傳送門是一個禮物,傳送門禮物。
  • 《元氣騎士》古代傳送門攻略 古代傳送門打法小技巧
    導 讀 元氣騎士遊戲版本更新之後,小編發現古代傳送門變得更好打了,在這裡給大家分享一些小技巧吧。
  • 穿越黑暗之門--序章
    那就是黑暗之門,一道奇異的可以將人傳送到另外一個世界的門。儘管他和他氏族的成員並沒有親身體驗過傳送,但他卻曾經見證過偉大的部落戰士們穿越過那道門,為了榮耀而與人類和他們的同盟作戰。雖然在那以後曾有幾個獸人帶著部落的最新戰況回來,但是最近卻沒有任何人穿越過那道門。沒有隻言片語,沒有偵察兵,什麼都沒有。  突然,格萊塔爾感覺到黑暗之門似乎有一些異樣。
  • 最強蝸牛俱樂部傳送門活動玩法攻略 俱樂部傳送門活動怎麼玩
    最強蝸牛俱樂部傳送門活動怎麼玩?最強蝸牛在最近的更新預告中,公布了新的玩法俱樂部傳送門活動,這次的活動詳細的玩法應該是各位玩家不清楚的。在這個活動裡,我們可以擊敗異界生命體,建造傳送門。下面就是這次活動的具體攻略了,希望大家喜歡。
  • 我的世界:虛無世界傳送門最簡單的製作方法!
    下面我們就來說說怎麼在虛無世界裡快速造出傳送門吧。在這個全新的model裡一共有很多的世界和全新的生物,以及新的武器裝備補給等等,虛無世界的傳送門就類似於老版的地獄門,因為老版之中只有地獄可以去其他敵方探索,而且物資也比較稀缺,多數玩家以挖鑽石為主。
  • 與其等G胖出《傳送門3》 不如自己做一個《傳送門故事:梅爾》
    而在眾多「缺3」大隊裡,《傳送門》毫無疑問是最受矚目的遊戲之一。 可要說它只是個MOD那也太對不起這作品了,因為無論從哪個角度來看,《傳送門故事:梅爾》都可以說是一部新的《傳送門》遊戲! 《傳送門故事:梅爾》的故事發生在1代和2代之間,在1代結尾女主角雪兒幹掉了反派GLaDOS(實際是停機),但自己還是被機器人拉回了實驗室陷入沉睡。而此時新的傳送門槍黃色核心Virgil找到了另一個光圈科技中的倖存者,也就是本作的主角梅爾,兩人一同協力對抗光圈科技的保全系統Atlas,最終將其擊敗。
  • mc下界更新的「廢棄傳送門」是抄來的?我的世界:官方逼死MOD!
    20w16a這一版本Mojang破天荒地在《我的世界》加入了一個「廢棄傳送門」,即在主世界的地下會隨機的誕生一個通往下界,但破損了的地獄門。同時地獄門上有一種特殊的「黑曜石」叫做「哭泣的黑曜石」!起初,我們還認為這是Minecraft官方哪位神人的想法,總算是給地獄的世界觀填了坑。畢竟在一個正常思維模式探險下,不看教程,普通人幾乎不可能想到該建造這樣一個傳送門框架,而破損的傳送門也便是提供了這樣一個行為的理論基礎。
  • 《命運2》威寇斯傳送門怎麼開啟英雄模式 威寇斯傳送門英雄開啟方法
    導 讀 命運2威寇斯傳送門英雄模式怎麼開啟?命運2是一款多人在線角色扮演遊戲。