揭秘:從visionOS系統(tǒng)窺探Vision Pro頭顯
在WWDC 2023上,蘋果發(fā)布了Vision Pro頭顯和全新的visionOS操作系統(tǒng),并宣布開啟空間計算時代。在過去6年里,我們每年都會追蹤蘋果ARKit的功能迭代與更新,今年雖然移動端ARKit未更新,但推出了一些針對空間計算的ARKit功能,相當(dāng)有看點。
去年上線的RoomPlan雖然未在WWDC展示應(yīng)用場景,但因為在MR場景極具潛力,必然針對visionOS進(jìn)行更新。

總的來說,ARKit、RealityKit、RoomPlan等移動端功能,都將集成并適配全新的visionOS,從而為Vision Pro頭顯帶來與眾不同的體驗。要知道,蘋果為visionOS準(zhǔn)備了40多節(jié)課程,也足見重要程度。
為了更好的了解Vision Pro和visionOS的特性,今天我們對vision OS開發(fā)入門、ARKit、RoomPlan等幾個課程進(jìn)行總結(jié),窺探蘋果Vision Pro的更多可能性。
visionOS基礎(chǔ)架構(gòu)
據(jù)蘋果官網(wǎng)介紹,visionOS主要基于SwiftUI、RealityKit、ARKit幾大框架,開發(fā)工具則包括Xcode、Reality Composer Pro和Unity。其中大部分是此前就推出的,值得注意的是Reality Composer Pro是一個新的工具,特點是開發(fā)者提供了一個預(yù)覽和準(zhǔn)備3D內(nèi)容的工作流,好處是能幫助全面了解應(yīng)用開發(fā)所需的所有3D模型,以及在場景中的組合方式,加快應(yīng)用迭代。即使開發(fā)者只開發(fā)了部分場景,而沒有構(gòu)建一個完整的應(yīng)用,也能在Reality Composer Pro中快速預(yù)覽。

此外,開發(fā)者也可以通過MaterialX開放標(biāo)準(zhǔn),在Reality Composer Pro中自定義材質(zhì),特點是無需代碼,使用節(jié)點就能快速制作并預(yù)覽。
visionOS用戶界面
1)窗口視圖
我們知道,蘋果的空間計算平臺建立在開發(fā)者熟悉的ARKit基礎(chǔ)上,相比于移動端ARKit,特點是是將虛擬和現(xiàn)實深度融合,并結(jié)合手和眼等自然輸入方式。

在UI設(shè)計上也有很大不同,主要由窗口視圖、體積視圖和Space三大元素組成。其中窗口是一種2D界面,每個應(yīng)用可以開啟一個或多個窗口,窗口可以像macOS窗口那樣支持頁面重排、大小調(diào)整、自由移動/固定。應(yīng)用界面可包含傳統(tǒng)視圖和操控機(jī)制,同時也可以顯示3D模型,比如結(jié)合Model3D視圖,在2D界面中嵌入動態(tài)的3D內(nèi)容。蘋果指出,Model3D與普通圖像類似,可直接在應(yīng)用中加載,并顯示用RealityKit渲染的3D模型。
?2)體積視圖
除了窗口視圖外,開發(fā)者可以使用體積視圖來顯示3D內(nèi)容,有趣的是不同的應(yīng)用之間可共享一個體積空間。體積視圖可在空間中重新定位,并支持從多角度查看。此外,體積視圖也是基于SwiftUI場景,基于RealityKit功能來渲染3D,因此對ARKit開發(fā)者來講比較熟悉。
體積視圖可看作是窗口的擴(kuò)展,或是一種3D形態(tài)的窗口。相比于窗口,利用體積視圖展示3D模型的區(qū)別是可全方位展示3D模型,允許用戶從多角度查看。體積視圖專為Shared Space界面設(shè)計,因此顯示的3D模型都具有邊界(類似于邊界框)。
另外,開發(fā)者還可以在應(yīng)用中添加RealityView視圖,相比于體積視圖,RealityView可在不同坐標(biāo)顯示更多個3D模型。
3)Space模式
visionOS的Space模式主要有兩種,一種是不透明背景模式Full Space,另一種則是VST透視背景Shared Space。

在Full Space模式中,visionOS系統(tǒng)會在后臺隱藏其他應(yīng)用,只打開正在運行中的應(yīng)用。即使在完全沉浸的VR模式中,ARKit應(yīng)用也可以識別周圍場景,允許AR與之互動。
在Shared Space界面中,窗口和體積視圖以VST模式顯示,允許用戶在使用時也能看到周圍環(huán)境。如果用戶想要更沉浸的體驗,則可以開啟Full Space模式,在該模式下依然可以使用ARKit API的功能,比如在應(yīng)用中引入復(fù)雜的骨骼追蹤等等。
通過旋轉(zhuǎn)數(shù)碼旋鈕,用戶可以調(diào)整背景透視的程度,讓UI在完全沉浸和完全透視之間自然過渡。同樣,開發(fā)者也設(shè)置、固定應(yīng)用背景透視的程度,比如無透視、混合透視或可自由調(diào)節(jié)。
窗口視圖共享:SharePlay
visionOS可以像在macOS那樣,允許用戶共享任何窗口,包括AR快速查看內(nèi)容。當(dāng)人們共享Quick Look 3D模型時,visionOS會同步用戶的方向,以及AR比例、動畫和上下文信息,允許SharePlay繪畫中每個人獲得相同的體驗,從而實現(xiàn)遠(yuǎn)程可視化協(xié)作。
ARKit更新
我們知道,ARKit使用復(fù)雜的CV算法來理解周圍的場景,以及用戶的動作。相比于移動端ARKit,ARKit在空間計算平臺的作用相當(dāng)于一個成熟的系統(tǒng)服務(wù),它深層次融入visionOS系統(tǒng),為AR交互、VR游戲提供了動力。在WWDC 2023期間,蘋果公布了ARKit兩大新功能,主要面向空間計算:
1,環(huán)境追蹤(World Tracking)
該功能允許開發(fā)者將AR內(nèi)容錨定在物理場景中,ARKit會追蹤每個錨點的6DoF運動,并更新其位置,確保用戶佩戴頭顯四處移動時,AR圖像與周圍環(huán)境的相對位置保持固定。
WorldAnchor是一種可追蹤的錨點,開發(fā)者在空間中添加的任何WorldAnchor,都會在系統(tǒng)后臺自動保存,每次設(shè)備重啟后,依然會顯示在固定的位置。此外,持續(xù)性的錨點位置基于對應(yīng)的場景,比如你在臥室固定的AR錨點只能在臥室訪問,如果你移動到辦公室,系統(tǒng)則需要重新測繪空間地圖,由于是兩個不同的空間,臥室內(nèi)的錨點也不會出現(xiàn)在辦公室中。
2,場景理解(Scene Understanding)
包含了一系列識別周圍環(huán)境的功能,比如:平面檢測(垂直和水平)、場景幾何、圖像追蹤。其中,平面檢測為ARKit尋找可放置錨點的水平、垂直表面(Plane Anchor)。識別到的表面可用來固定AR內(nèi)容,或是優(yōu)化物理模擬,允許AR與地板、墻壁產(chǎn)生自然交互。
場景幾何結(jié)構(gòu)為開發(fā)者提供包含多邊形網(wǎng)格的錨點(Mesh Anchor),可看作是用一系列多邊形網(wǎng)格構(gòu)成的物理場景模型,可用于預(yù)測空間的外觀。與平面檢測相似,場景幾何結(jié)構(gòu)也可以促進(jìn)AR錨點,以及高保真的物理模擬(比如用作支持物理手勢交互的碰撞器)。
而圖像追蹤,則可以檢測到真實場景中的2D圖像,并賦予一個基于圖像的錨點(Image Anchor),允許開發(fā)者在靜態(tài)圖像上放置AR內(nèi)容。
3,其他更新
值得注意的是,ARKit新增了一項名為Particles的工具,該工具可快速構(gòu)建云、雨、火花等動態(tài)粒子特效,并支持在Reality Composer Pro中預(yù)覽。
蘋果還推出了新的ARKit API,結(jié)合了此前在iOS上學(xué)到的經(jīng)驗,可以很好的滿足空間計算獨特的需求。ARKit API由三大要素組成:ARKitSession(功能組合)、DataProvider(場景、手勢、平面追蹤數(shù)據(jù))、錨點。其中DataProvider提供驅(qū)動ARKitSession功能的數(shù)據(jù)。而錨點則意味著,蘋果空間計算平臺的AR內(nèi)容需要通過錨點固定在物理空間中,以達(dá)到一種持續(xù)性的LBS AR效果。蘋果解釋,錨點代表了AR在真實場景中的位置和方向,部分類型的錨點是可追蹤的。
由于Vision Pro頭顯搭載了多個攝像頭和各類傳感器,保護(hù)用戶數(shù)據(jù)隱私至關(guān)重要,為此蘋果在系統(tǒng)中確保相機(jī)圖像幀等數(shù)據(jù),不會被上傳至客戶空間(比如第三方App),而是發(fā)送到ARKit守護(hù)進(jìn)程,以便后續(xù)算法安全處理。而算法生成的數(shù)據(jù)結(jié)果,還會經(jīng)過仔細(xì)整理,才會發(fā)送給請求數(shù)據(jù)的客戶端(以用戶授權(quán)許可為前提)。
RoomPlan更新
RoomPlan是ARKit 6帶來的一項功能,特點是使用基于ARKit的機(jī)器學(xué)習(xí)模型來檢測墻壁、窗戶、門、缺口等空間元素,通過RoomCaptureView API,開發(fā)者可在應(yīng)用中引入3D空間掃描功能,3D掃描空間后可生成USDZ格式的3D模型。
該工具新增功能如下:
1)自定義AR會話
在近期推送的iOS17系統(tǒng)中,蘋果推出了自定義ARSession功能,該功能可將RoomPlan掃描結(jié)果與ARKit場景幾何和平面檢測數(shù)據(jù)結(jié)合,增強(qiáng)混合現(xiàn)實交互。此外,利用ARKit的高質(zhì)量圖像捕捉功能,可優(yōu)化基于RoomPlan創(chuàng)建的3D建筑模型外觀。同時,也可以將RoomPlan數(shù)據(jù)直接與現(xiàn)有的ARKit應(yīng)用結(jié)合。
2)支持多房間(MultiRoom API)
此前,使用RoomPlan工具,開發(fā)者可通過一次掃描生成單個房間的3D模型。而通過MultiRoom API,你可以將房子里不同房間的掃描圖像很好的合并,并導(dǎo)出一個統(tǒng)一的USDZ文件,從而解決了房間坐標(biāo)系不匹配、手動縫合等問題。具體實現(xiàn)主要基于兩種方式,一個是連續(xù)的ARSession,另一個則是基于ARWorldMap(持續(xù)的AR公共坐標(biāo))的ARSession的重定位功能。
MultiRoom適合單層住宅,可掃描一到四間臥室、客廳、廚房和餐廳,建議掃描面積不超過186平方米。
為了幫助更多人快速上手RoomPlan,蘋果還推出了語音輔助模式,通過語音提示來指導(dǎo)用戶進(jìn)行掃描。
3)可識別物體增多
此前,RoomPlan可識別的房間元素有限,而在升級后,它可以掃描更多類型的房間結(jié)構(gòu)和家具,比如傾斜、彎曲、不均勻的墻壁(用多邊形來描述),或是洗碗機(jī)、烤箱、水槽等嵌入式廚房元素。此外,還可以分類家具的不同配置,比如單人沙發(fā)、L型沙發(fā)、方形沙發(fā)等等。
通常,RoomPlan模型主要由平面和對象來表示,而升級后,它還可以描述房間內(nèi)的區(qū)域,包括客廳、臥室、廁所、廚房、餐廳。
RoomPlan還新增了一個新的結(jié)構(gòu):ModelProvider,可將類別和屬性的合集映射到模型URL中,在導(dǎo)出RoomPlan掃描數(shù)據(jù)時,可將3D模型中的每個對象與對應(yīng)的URL關(guān)聯(lián)。參考:Apple