花一周為XREAL Air 2 Ultra做Demo:空間計算開發(fā)入門,真如此簡單?

?? 由 文心大模型 生成的文章摘要

在今年1月份,美國拉斯維加斯舉辦的CES 2024上,XREAL發(fā)布了XREAL Air 2 Ultra,這是繼XREAL X以來XREAL推出的第二款真正具備6DoF空間定位能力的AR眼鏡。

當時在CES現(xiàn)場,XREAL Air 2 Ultra就給筆者留下了深刻的印象——鈦合金的框架與電致變色鏡片的搭配讓這款產(chǎn)品在外觀上就具備了出色的質感,優(yōu)秀的SLAM能力和精準的手勢識別對于一款主打空間計算的AR眼鏡來說也是不可或缺的功能。

不過CES現(xiàn)場排隊等待體驗XREAL Air 2 Ultra的人實在太多,因此留給每個體驗者的時間就十分有限。筆者在現(xiàn)場不到半個小時的體驗時間里,只來得及看一看XREAL官方提供的Demo,有點囫圇吞棗意猶未盡的感覺。

▲XREAL Air 2 Ultra在CES 2024現(xiàn)場
▲XREAL Air 2 Ultra在CES 2024現(xiàn)場

時隔6個多月,在7月31日,這款AR眼鏡終于是正式發(fā)售了,售價3999元。我們也是第一時間拿到了一臺XREAL Air 2 Ultra,終于能夠更深入的體驗一下XREAL第二款、同時市面上也很少見的雙目SLAM AR眼鏡。

1月份我們在CES現(xiàn)場體驗時,使用的是XREAL Air 2 Ultra + OPPO Find X5手機的組合;而在5月底,XREAL推出了最新的空間計算單元Beam Pro,作為手機的替代,Beam Pro在搭配AR眼鏡使用時做了許多體驗上的優(yōu)化。這次評測中,我們也將使用XREAL Air 2 Ultra + Beam Pro的組合,來看一看XREAL為空間計算打造的一體化開發(fā)套件,表現(xiàn)究竟怎么樣。

值得一提的是,伴隨著XREAL Air 2 Ultra的發(fā)布,XREAL還基于跨平臺游戲引擎Unity構建了最新的NRSDK軟件開發(fā)套件,因此這次我們不僅會去體驗XREAL Air 2 Ultra的所有硬件功能,還將嘗試著基于最新版NRSDK開發(fā)一個運行在Beam Pro上的空間應用,以更好的了解XREAL Air 2 Ultra + Beam Pro的組合對于開發(fā)者來說具備怎樣的意義。

閑話不多說,讓我們進入正題吧!

XREAL Air 2 Ultra,專為輕量級體驗打造的空間計算產(chǎn)品

XREAL Air 2 Ultra這款新品給我們的第一印象是驚艷。從外觀來看,這款產(chǎn)品相比XREAL Air系列其他眼鏡的最大的差異,是其采用了鈦合金作為框架,亮面金屬的邊框相比純塑料的材質讓這款眼鏡具備了更強的質感和時尚感。

結合電致變色鏡片本身的濾光效果,XREAL Air 2 Ultra更像是一款精致的墨鏡。這也是全球首款采用這一材質作為框架的AR眼鏡。

▲XREAL Air 2 Ultra上臉效果實拍,很接近大尺碼的墨鏡
▲XREAL Air 2 Ultra上臉效果實拍,很接近大尺碼的墨鏡

鈦合金的框架有效的減輕了眼鏡的整體重量。相比同樣具備雙目SLAM能力的XREAL X眼鏡106克的重量,XREAL Air 2 Ultra的重量僅有83克,與Air 2 73克、Air 2 Pro 75克的重量十分接近。較輕的重量為眼鏡的佩戴舒適度提供了基礎的保證,XREAL還做了更多的設計來保障長時間使用場景下的佩戴體驗。

鼻托方面,XREAL Air 2 Ultra提供了3種尺寸的鼻托支架,用戶可以自行拆卸更換,此外鼻托支架的支撐角度也能夠自由調節(jié),為不同鼻梁高度和形狀的用戶提供最舒適的支撐。接觸鼻子的部分,XREAL Air 2 Ultra采用的是柔軟的中空氣墊,不易下滑可以提供穩(wěn)穩(wěn)的支撐,同時還能夠有效的分散眼鏡重量對鼻子的壓迫。

鏡腿設計上,XREAL Air 2 Ultra支持三個角度的調節(jié),讓用戶可以將眼前呈現(xiàn)的畫面放在最習慣的高度。鏡腿夾腳微微內收,佩戴上臉時既能提供很好的夾合力確保眼鏡不下滑,也不會對太陽穴和耳朵上方的位置產(chǎn)生壓迫。

在顯示方面,XREAL Air 2 Ultra采用了XREAL自研的第三代“驚鴻銳影”光學引擎,顯示面板是兩塊來自索尼的0.55英寸1080P分辨率的Micro-OLED,光學模組則由XREAL自研,F(xiàn)oV達到52°(其余Air系列產(chǎn)品均為46°),能夠實現(xiàn)120Hz刷新率、500尼特亮度、100000:1的對比度和107%的sRGB色域覆蓋,表現(xiàn)十分出色。這種Micro-OLED + BirdBath的組合,是目前市面上使用最廣泛、也是公認顯示效果最好的AR眼鏡光學方案。

實際體驗來看,XREAL Air 2 Ultra的畫面精細不會有明顯的像素顆粒感,整體色彩觀感優(yōu)秀,沒有察覺出偏色的情況,120Hz的刷新率確保了用戶在轉動頭部時畫面顯示依然流暢無撕裂,較高的對比度讓畫面中暗部的細節(jié)更出色,這些優(yōu)點綜合到一起,帶來了令人印象深刻的顯示效果。

▲XREAL Air 2 Ultra的顯示模組:Birdbath光學方案+Micro OLED屏幕
▲XREAL Air 2 Ultra的顯示模組:Birdbath光學方案+Micro OLED屏幕

而電致變色鏡片目前已經(jīng)成為了BirdBath光學方案高端AR眼鏡產(chǎn)品的標配,無論在晴朗的室外還是光線較弱的室內,只需要輕輕按下鏡腿底部控制電致變色鏡片的按鈕,我們就能讓其切換到最適合的透過率,確保XREAL Air 2 Ultra能夠提供最佳的顯示效果。

我們使用場景較暗的電影畫面分別測試了室外明亮環(huán)境、室內明亮環(huán)境以及室內昏暗環(huán)境下XREAL Air 2 Ultra表現(xiàn)。從結果來說,這款AR眼鏡提供的三檔電致變色鏡片調節(jié)功能能夠應對大多數(shù)的使用場景:室外可以調節(jié)至透過率最低的一檔,確保強光下AR眼鏡的畫面依然清晰可見,室內昏暗環(huán)境下可以調至透過率最高的一檔,確保你依然可以看見周圍的環(huán)境。

還需要指出的是,XREAL Air 2 Ultra并沒有采用一些友商產(chǎn)品上使用的屈光度調節(jié)功能,而是給用戶提供了近視插片框架,用戶可以根據(jù)自己的需求前往眼鏡店配片。

▲近視插片框架
▲近視插片框架

也許有不少人會認為屈光度調節(jié)功能十分方便好用,但在我們看來,目前大多數(shù)AR眼鏡提供的屈光度調節(jié)功能體驗仍有待提升,一方面是屈光度調節(jié)范圍有限,而目前國內人群高度近視的人占比并不低,另一方面是通常近視還會伴隨著散光、斜視等其他問題,僅僅調節(jié)屈光度并不能帶來最好的視覺體驗,還可能會加重眼睛的負擔,讓用戶能夠根據(jù)自己的實際情況去進行定制或許是一個更好的選擇。

音頻方面,XREAL Air 2 Ultra采用的是AR眼鏡上常見的開放式設計,在雙側鏡腿上下方各配備了一個超線性立體揚聲器。這種設計方式,主要考驗的是音頻系統(tǒng)在嘈雜環(huán)境下的表現(xiàn)以及對漏音的控制能力。

▲鏡腿上方麥克風和揚聲器
▲鏡腿上方麥克風和揚聲器

我們在地鐵車廂中實際測試了XREAL Air 2 Ultra超線性立體揚聲器的能力,在將音量調節(jié)至較大的情況下,我們在車廂嘈雜的環(huán)境中依然能夠清晰的聽見揚聲器中傳來的人聲和背景音樂,但與此相對應的是隨著音量的變大,會有一定的聲音外泄,不過整體來說外泄聲音較小難以分辨其中的內容,用戶無需太過擔心因為聲音外放而對他人造成干擾。

為XREAL Air 2 Ultra開發(fā)空間應用

前文我們提到過,伴隨著XREAL Air 2 Ultra的發(fā)布,XREAL還將其基于跨平臺游戲引擎Unity構建了NRSDK升級到了2.2.1版本。結合XREAL Air 2 Ultra的雙目SLAM能力,這套SDK可以為開發(fā)者提供6DoF空間定位、手勢識別、圖像識別、平面檢測、深度網(wǎng)格、空間錨點等豐富的功能。

在這次評測中,我們將會嘗試兩件事,幫助大家對基于XREAL Air 2 Ultra開發(fā)空間應用這件事有更好的了解:

一是將NRSDK中自帶的示例場景構建成可執(zhí)行的App安裝到Beam Pro上并且確保運行成功;

二是對示例場景做一些修改,將NRSDK提供的功能全部集成進去整合到一個App中,同樣我們需要將其安裝到Beam Pro上并且確保運行成功。

在進行這兩件事之前,首先我們需要確保開發(fā)環(huán)境全部安裝正確。

為XREAL Air 2 Ultra和Beam Pro開發(fā)空間應用,要安裝Unity 2019/2020/2021/2022.X四個版本之一,同時還要安裝Unity中Android Build Support組件確保能夠將Unity工程文件編譯成安卓應用。這里我們下載安裝的是Unity 2022.3.37f1c1 LTS個人版。

此外,還需要額外安裝Android Studio,然后通過Android Studio安裝Android SDK 10.0及以上的版本,由于Beam Pro操作系統(tǒng)的是Android 14版本,我們直接下載了最新的Android SDK。

最后,你還需要一個代碼編輯器,這里我們選擇了最常用的Visual Studio 2022個人版。

準備好開發(fā)環(huán)境,下載好NRSDKForUnity的包,我們就可以正式開始開發(fā)工作了。

在Unity中新建一個項目,導入剛剛下載好的NRSDKForUnity包,按照XREAL開發(fā)者社區(qū)的文檔修改好項目的設置,這時我們可以在Unity左側的窗口中看到,NRSDK提供了非常豐富的示例場景。

根據(jù)開發(fā)者文檔的指引,我們首先嘗試構建HelloMR這一場景。

NRSDK為Unity編輯器提供了一鍵修改項目設置的功能,大部分設置內容采用默認即可,需要手動調整的設置主要是Build Settings -> Player Settings下面的公司名和App名稱。另外需要注意的是如果你是為Beam Pro構建App,Build Settings -> Player Settings -> Other Settings -> Write Permission應當設置成Internal而不是開發(fā)者手冊中寫的External(SDCard),否則在Beam Pro上運行時會報存儲空間不足的錯誤。

在構建菜單添加場景時,按照順序將HelloMR以及下圖中所列舉的全部場景都加入到Scenes In Build窗口中,否則菜單中點擊不同按鈕切換場景的功能將不會生效。

接下來構建成功生成APK文件后,即可在Windows命令行工具中通過ADB命令為Beam Pro(需開啟開發(fā)者模式)安裝應用或者直接將APK文件傳輸?shù)紹eam Pro機身存儲然后通過文件管理器安裝。安裝完成后就能夠在XREAL Air 2 Ultra的Home頁面上看到圖標。

點擊運行,成功啟動!能夠正常進入各個場景中。

接下來,讓我們Get Hands Dirty,自己上手去從零開始搭建一個Demo場景吧!

先疊個甲,我們只能算得上是入門級的開發(fā)者,因此最終呈現(xiàn)的場景只能追求功能的實現(xiàn),而無法兼顧到場景的美術效果,還請大家見諒!

▲我們的Demo應用成功出現(xiàn)在了主菜單上,93913的LOGO就是
▲我們的Demo應用成功出現(xiàn)在了主菜單上,93913的LOGO就是

前文提到過,NRSDK有6DoF空間定位、手勢識別、圖像識別、平面檢測、深度網(wǎng)格、空間錨點一共六大能力,在近一周的開發(fā)時間里,我們最終在Demo中成功加入了除空間錨點外的全部功能,而受限于時間和開發(fā)能力,剩下的空間錨點功能只能等后續(xù)有空再補上。

先說結論吧,從開發(fā)的整體體驗來說,NRSDK為開發(fā)者提供了非常詳細的功能Demo,給開發(fā)者們作為參考。對于大多數(shù)基礎功能的實現(xiàn),開發(fā)者只需要將NRSDK中提供的對應Prefab組件拖入到場景中就能夠直接使用這些功能。

換句話來說,只要開發(fā)者對于使用Unity開發(fā)3D應用有一定的經(jīng)驗,就可以快速上手XREAL Air系列AR眼鏡的應用開發(fā)。大多數(shù)時候開發(fā)者只需要將精力放在體驗本身的交互和邏輯上即可,有效的降低了空間應用的開發(fā)門檻。

接下來則是我們實現(xiàn)每個功能的細節(jié):

6DoF功能的開啟最為簡單,只需要在NRSDK提供的NRCameraRig組件調整一下Tracking Type追蹤類型即可。NRSDK提供了4種追蹤模式:6DoF、3DoF、0DoF(即跟頭模式,畫面會始終出現(xiàn)在面前固定的位置)、0DoF Stable(猜測是用于高鐵、飛機等場景的防抖模式)。

XREAL Air 2 Ultra會使用眼鏡兩側的SLAM攝像頭來識別特征點,并追蹤這些特征點隨時間的運動,結合眼鏡IMU傳感器的讀數(shù)來確定自身在環(huán)境中移動時的位置和方向。因此這里直接選擇6DoF模式即可。我們也可以通過代碼在Demo運行時動態(tài)的切換追蹤模式。

開發(fā)者手冊的信息顯示,6DoF追蹤還能為開發(fā)人員提供了實時地圖構造和 3D 點云,可以為應用程序提供有關環(huán)境物理結構的信息。

接下來我們要給Demo加入手勢識別和手勢追蹤功能。

手勢識別和手勢追蹤是最貼近自然的交互方式,對于提升與虛擬物體交互的沉浸度有非常大的幫助。NRSDK能夠識別每只手23個關節(jié)的位置和姿勢,讓開發(fā)者可以根據(jù)自己的需要定義手部動作和程序指令的對應關系。

同時,NRSDK已經(jīng)內置了對6種手勢的識別,給開發(fā)者提供了更易上手的選項。NRSDK還為控制器和手勢兩種交互方式實現(xiàn)了統(tǒng)一的事件機制,讓我們無需額外的開發(fā)工作,也能夠輕松的讓一款應用同時適配支持/不支持手勢識別的XREAL Air系列AR眼鏡。

在我們的Demo中可以看到,控制的方式可以在控制器和手勢識別間進行快速的切換,我們可以像使用控制器那樣直接的與虛擬的物體進行交互。

在手勢交互方面,NRSDK中默認提供的是使用手部射線進行選取、手勢負責確認的方式,這種方式對于XREAL Air 2 Ultra + Beam Pro這種最適合坐著使用的組合來說最為合適。當然開發(fā)者也完全可以不依賴于射線,開發(fā)更貼近現(xiàn)實世界的交互方式,但這也意味著用戶可能需要四處走動才能與周圍環(huán)境中的虛擬物體進行交互。

我們嘗試向Demo中加入的第二項功能,是Depth Meshing深度網(wǎng)格,從中一窺XREAL Air 2 Ultra對于周圍環(huán)境的建圖能力。

根據(jù)NRSDK的開發(fā)者手冊的引導,我們在Unity中只做了一些簡單的步驟,就成功的讓深度網(wǎng)格呈現(xiàn)在了我們的面前。隨著我們不斷的觀察向新的方向和區(qū)域,深度網(wǎng)格也在同步進行生成。在沒有做任何優(yōu)化的情況下,深度網(wǎng)格的生成速度已經(jīng)穩(wěn)定且高效,從精準度方面來看,深度網(wǎng)格的位置是十分準確的,在精度方面也足以勝任大部分的場景。

而有了這些帶有物理碰撞檢測的深度網(wǎng)格,我們就可以在應用中實現(xiàn)虛擬物體和現(xiàn)實物體的交互,甚至能夠實現(xiàn)用現(xiàn)實物體遮擋虛擬物體的效果。從視頻中可以看到,在深度網(wǎng)格生成后,我們可以讓一些虛擬物體自由落體到深度網(wǎng)格上。毫不夸張的說,深度網(wǎng)格是一款空間計算設備最重要的能力之一。

在開發(fā)者文檔中我們看到,NRSDK還提供了針對深度網(wǎng)格的分類功能,支持10個種類的標簽,包括了室內常見的墻壁、地板、天花板、門,室外常見的道路、人行道、草坪、建筑等等,并且可以針對每個種類的標簽設置一個Prefab并顯示在對應的深度網(wǎng)格位置,相當于一個進階版本的平面檢測。

接下來是圖像檢測的功能。我們需要做的是將需要被識別的圖片導入到項目中,然后為這些圖片生成一個數(shù)據(jù)集Tracking Image Database,最后還要填入圖片對應實物的尺寸。

做完這些準備工作,我們還要設定圖片被識別后出現(xiàn)的虛擬物體,如果想要讓出現(xiàn)的虛擬物體可以被交互,還需要撰寫相應的交互代碼。

▲Spatial Life中用到的標記卡片,我們的Demo使用了左側的Marker。
▲Spatial Life中用到的標記卡片,我們的Demo使用了左側的Marker。

我們在Demo中直接使用了官方的Spatial Life應用中用到的綠色卡片,做了一個簡單的功能示例——當XREAL Air 2 Ultra識別到這張卡片時,會在卡片上生成一輛小汽車的模型,然后我們可以通過手勢來與這輛小汽車進行交互,讓它下落到對應周圍環(huán)境生成的深度網(wǎng)格上。

針對具體的實現(xiàn)方法,官方的開發(fā)者手冊寫的并不是特別詳細,也是讓我們摸索了很長一段時間。前面的步驟開發(fā)者手冊中寫的都沒有什么問題:首先我們需要為想要追蹤的圖片建立數(shù)據(jù)集,然后在NRKernalSessionConfig文件中設置好我們剛剛建立的數(shù)據(jù)集,隨后可以在Unity編輯器中新建一個空的GameObject,并添加NRSDK中提供的MarkerDetector.cs腳本文件作為這個GameObject的組件。

到達這一步,我們已經(jīng)可以做到通過SLAM攝像頭追蹤目標圖片,并通過NRSDK提供的一些列API在程序中實時獲取追蹤的狀態(tài)。不過想要像Spatial Life中那樣讓虛擬物體跟隨著現(xiàn)實世界中的XREAL Markers動起來,我們還需要一些額外的步驟。

在項目文件夾中新建一個Prefab,然后為其新增一個NRSDK中提供了的NR Trackable Image Behaviour腳本。在腳本的Image Target參數(shù)中選中我們希望識別的圖片,這個腳本會自動的幫我們完成一些設置,并且會在Unity編輯器中顯示一張?zhí)摂M的追蹤圖片。

接下來我們只需要在這個Prefab下面繼續(xù)添加在識別到圖片后想要呈現(xiàn)的虛擬物體即可。

最終呈現(xiàn)的效果如下面一系列的動圖所示:我們首先掃描了附近環(huán)境生成了一個深度網(wǎng)格,在視頻中以彩色背景呈現(xiàn),在畫面右方有一塊高出的地面的部分,是一張圓形的茶幾,我們將綠色的XREAL Marker放在了茶幾邊緣,然后啟動了圖像追蹤功能,當XREAL Air 2 Ultra檢測到當前視野中出現(xiàn)了Marker,就會顯示出我們預先設計好的虛擬物體。

隨后我們拿起了這張Marker實物并進行了轉動,虛擬的玩具車也會始終跟隨Marker的位置和姿勢運動。盡管由于手和Marker的互相遮擋導致了追蹤的短暫丟失,但是一旦遮擋部分露出來,追蹤就能夠立馬恢復。

最后結尾,我們通過一個Pinch手勢觸發(fā)了我們?yōu)橥婢哕噷懙慕换?,讓其向前行駛,躍下茶幾,落在了代表地面的網(wǎng)格上。

至此,我們也算是基本達成了在開發(fā)Demo前為自己預設的目標。

唯一剩下的空間錨點功能我們直接借用開發(fā)者手冊的內容做個補全吧,這一功能可以讓虛擬物體被錨定在現(xiàn)實世界的某一個位置上,即使用戶關閉應用再打開,這個虛擬物體所在的位置也不會發(fā)生變化,這對于為用戶提供一致且可靠的AR體驗十分重要,還可以被用于實現(xiàn)多用戶參與的AR體驗,實現(xiàn)博物館導覽等類似的體驗。

▲官網(wǎng)的Spatial Anchor示例
▲官網(wǎng)的Spatial Anchor示例

寫在最后

一周的時間里,我們?yōu)閄REAL Air 2 Ultra + Beam Pro開發(fā)了一個畫面簡陋但功能較為完備的空間應用Demo。在上述提到的功能之外,我們還參照官方Tutorial順利實現(xiàn)了應用內的視頻錄制功能。唯一的遺憾,是XREAL Air 2 Ultra并沒有RGB攝像頭,因此我們只能錄制黑色背景的機內畫面。而無法錄制以現(xiàn)實環(huán)境作為背景的MR視頻來完整的展示使用這款AR眼鏡時的畫面。

需要說明的是,作為一個Unity新手,我們在開發(fā)的過程中也遇到了一些不那么順暢的地方。例如我們常常在和一些奇怪的代碼玄學搏斗,最常見的一個問題,就是Ctrl+C、Ctrl+V的代碼沒問題,一旦自己嘗試著加上一些新功能運行總是出狀況,讓我們花費了大量的時間去排查BUG所在。

▲NRSDK開發(fā)者手冊頁面
▲NRSDK開發(fā)者手冊頁面

此外,官方提供的NRSDK開發(fā)者手冊目前還是純英文的,對于國內的開發(fā)者來說沒有那么方便;開發(fā)者手冊在部分功能的說明上寫的較為簡略,對于一些剛剛接觸NRSDK和AR眼鏡應用開發(fā)的開發(fā)者來說需要一定的時間去摸索才能更好的了解NRSDK提供的各項功能和API接口。

好在NRSDK的示例場景中已經(jīng)提供不少現(xiàn)成的代碼可以供開發(fā)者參考,尤其是針對一些核心功能甚至提供了不止一個示例來幫助開發(fā)者更好的掌握NRSDK和XREAL Air 2 Ultra + Beam Pro的能力,但我們也十分希望后續(xù)XREAL能夠進一步完善NRSDK的開發(fā)者手冊并且提供更豐富的Tutorial,更好的幫助開發(fā)者了解如何為XREAL Air系列產(chǎn)品開發(fā)出優(yōu)秀的應用。

可以確定的是,如果你對輕量級空間應用的開發(fā)擁有濃厚的興趣,那么NRSDK、XREAL Air 2 Ultra、Beam Pro的組合,是一個頗具性價比的選擇:具備雙目SLAM能力的XREAL Air 2 Ultra硬件素質出眾且輕便易攜;Beam Pro專為空間計算體驗設計和優(yōu)化;NRSDK提供了強大且齊全的空間計算底層能力,使用簡單易上手。

根據(jù)XREAL透露的數(shù)據(jù),目前XREAL Community里聚集的XR開發(fā)者數(shù)量已經(jīng)達到數(shù)千人,這讓我們十分期待后續(xù)能夠在XREAL Air 2 Ultra + Beam Pro這套空間計算組合上,看到越來越多優(yōu)秀的空間應用涌現(xiàn)。

「93913原創(chuàng)內容,轉載請注明出處」