一种基于游戏引擎的AR模式探讨(上)
前言
因為對 AR 游戲領域的好奇,在網上搜集了一些資料。但是關于 AR 技術在游戲中實際應用的文章較少,而且大多數文章只是簡單的介紹高通的 SDK 的使用,沒有關于 AR 的核心技術。
簡單了解目前的 AR 模式,大多數都是通過對相機中環境的檢測,包括使用一些識別圖去進行 AR 的檢測觸發。然后再通過對圖像的疊加完成增強現實的效果。后來看到一篇關于 unity 實現 AR 的文章。盡管文章中實現的是一個 APP。但是它這種關于 AR 的想法我認為是完全可行的。在該作者想法的基礎上,我構建了一種不同于現在常見 AR 的一種系統架構。由于我暫時沒有發現其他人對這種 AR 模式的定義,為了闡述的方便,我在這篇文章中將這種 AR 系統稱為 Lefland’s AR,簡稱“L-AR”。
最初我是以游戲架構為主提出的,但是隨著這個想法的成熟,我發現這個模式(L-AR)不僅可以創建出全新的 AR 游戲方式,而且可以應用到未來的實際生活中,作為一種生活中的 AR 技術來使用。
接下來我將分成三部分講述這種模式(L-AR),第一是現有 AR 的分析,第二是 L-AR 架構方式的整體系統闡述,最后是 L-AR 在未來的應用與發展以及這種模式可能會出現的問題。
第一部分
現有的 AR 技術,以高通的 ARSDK 為模板來闡述一下現在的 AR 模式。先來說一下這種 AR 使用的操作,主要是以識別圖為主,將所需要的識別圖上傳到高通的網站,然后可以生成 unity 的文件,導入到 unity 中,然后對想要顯示的模型進行設定,綁好 AR 相機,就可以完成目前很常見的通過圖像識別顯示出的 AR。
因為其中很多的技術都被封裝了,所以也不好說其中比較有技術性的部分。就單獨來看最終呈現時的圖像層次。后面的一層,就是我們相機拍攝的環境。前面的一層是呈現在識別圖上的模型,通過識別圖去定位模型的景深。最后通過兩層圖像的疊加,完成最后呈現給用戶的狀態。這種模式已經很成熟了,而且操作難度不高,個人開發者也完全可以掌握其使用。
然后我們來看一下這種模式的 AR 的缺點。總體而言,這樣的 AR 很難給用戶一種類似于 VR 的沉浸式體驗,尤其是應用在游戲中的時候。很多時候這個 AR 只是個會動的模型,很難在游戲的模式中有所創新。而且受限于技術的封裝,沒有辦法完成很多底層的修改。其中,識別圖定位以及無圖定位,都是使用圖像識別技術來完成的對圖像的質量要求較高,并且容易出現“漂浮感”,讓人感覺模型漂浮在空中,讓人很難有沉浸式的體驗。較為單一的互動模式,還有對背景地點無交互(背景只是單純的背景,換成任何其它的背景或是純黑最后的效果也是一樣的),這些都是制約了 AR 開拓游戲市場的問題。
第二部分
分析:
一、首先我們來分析一下理想中的 AR 需求,以《劇場版刀劍神域》為例,來看一下我們理想中的 AR 是一個什么樣子:男主角參加了一次多人線下的 BOSS 戰,然后玩家們戴上了 AR 設備,拿著體感控制器就一起上去打 BOSS 了。這一段中,我們可以看到,游戲的場景是在現實場景的基礎上增強得到的,保留了場景中的可以移動的空間的設定,僅僅是在一些建筑的外形加以裝飾。這是第一條,對原場景的保留和增強。在二手手游買賣平臺中,我們有隊員,并且可以實時看到他們在游戲中的樣子,并且可以在旁邊顯示玩家信息。。這是第二條,多名玩家在同一場景中的實時交互。不同玩家可以在不同的位置看著同樣的 BOSS 對他們發動攻擊,這是第三條,公共 AR 環境的唯一性。
二、從上述幾條中,我們就發現了目前 AR 系統中存在的問題。由于使用的是識別圖或者是獲取相機景深建立空間模型的方式,無法對多人的游戲環境進行實時的同步并且建立唯一的絕對空間。玩家設備間的互相定位和交互的實現也是較為困難的。
新的模式:
在前人的想法的基礎上我構想出一種 L-AR,通過游戲引擎內對現實世界的提前構筑并通過畫面的疊加來完成一種增強現實的效果。
一、畫面層次分析:
最后一層是相機捕獲的現實場景,向前一層是引擎中的游戲場景,游戲場景中隱藏所有地形,只保留需要在 L-AR 中出現的游戲內容。再向前一層是游戲的 UI 和玩家的操作面板。將這些疊加在一起達到增強現實的效果。
二、系統結構分析
以 Unity 為例,我們的整體思路是把玩家在現實中的實景和游戲中的場景結合起來,因此,我們需要:
- 一個第一人稱的相機
- 一個按照真實場景的真實尺寸搭建的環境(在游戲中隱藏)
- 游戲中應該有的模型(NPC,敵人,BOSS,道具,武器,寶箱)
- 一個用來映像相機獲得的圖像的背景平面(跟隨相機)
- 玩家的輸入控制(1)相機的移動通過手機傳感器獲取的 GPS 坐標的差值進行移動,通過加速度傳感對微小的移動進行矯正,并且對相機的旋轉和俯仰進行控制。使得外部世界和游戲內世界始終保持同步。(2)玩家可以通過手機屏幕上點擊虛擬按鍵來使用物品,打開寶箱,發動技能,和目前的手機游戲相同(以 RPG 游戲為例)
- ⑥和正常的同類型游戲別無二致的游戲系統
- ⑦針對你想要進行游戲的場地進行實地的考察,并且將所有的游戲元素結合現場的實際情況進行安排和布置,打造一個獨一無二的 AR 游戲世界。
三、以 Unity 為例,在構建中的技術難點問題的解決方案
?
- 首先是玩家的移動,我們需要在 unity 中獲取手機的 GPS 信息,由于目前的 GPS 定位的誤差較大,無法直接用于我們的移動。所以我選擇采用 GPS 位置的差值進行位置的定位。玩家需要在現實場景中一個固定的位置開始游戲,然后這時定位玩家的 GPS,作為原點。之后不斷刷新玩家 GPS 信息,并且更新相機的位置。
- 相機跟隨手機角度的旋轉:通過手機的加速度傳感器獲取手機當前的狀態信息,通過四元數的方式傳遞給游戲中的相機。傳感器獲得的信息可能會因為手機的抖動產生擾動導致偏移,這時我們需要在代碼中加入一個低通濾波器來除去高頻的雜波。
- 游戲中物體與現實世界的真實交互:我們需要整個場景的建模,然后對它們添加碰撞器,將對他們的渲染關掉,讓其在相機中不顯示。并且調整渲染順序,使透明的場景可以遮擋游戲中的其他物體。達到一種“真實”的感覺。
- 聯機游戲的設計:通過 P2P 對等網絡進行區域內玩家信息的傳輸。
- 游戲性:單機游戲可以向 Rougelike 冒險發展,以隨機物品和戰斗為主。聯機游戲可以向 MMORPG 發展,以線上線下的社交為主。
總結
以上是生活随笔為你收集整理的一种基于游戏引擎的AR模式探讨(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【GPU精粹与Shader编程】(一)
- 下一篇: 如何用行为树开发游戏AI以及任务系统?