四千字干貨!一文帶你吃透Windows、Volumes和Space|Vision Pro(windows live space)
在Vision Pro中,基礎(chǔ)應(yīng)用形態(tài)有幾種,包括Windows、Volumes和Space等。這些基礎(chǔ)應(yīng)用形態(tài),相輔相成構(gòu)成了空間計(jì)算平臺(tái)的基礎(chǔ)構(gòu)成形態(tài)。這篇文章里,作者就介紹了他們的設(shè)計(jì)原則及相關(guān)實(shí)踐,一起來(lái)看一下。
為一個(gè)全新的平臺(tái)構(gòu)建應(yīng)用,先從了解應(yīng)用形態(tài)開(kāi)始。本篇介紹了空間計(jì)算平臺(tái)中的基礎(chǔ)應(yīng)用形態(tài)-Windows、Volumes、Space,并介紹其設(shè)計(jì)原則及最佳實(shí)踐,快來(lái)構(gòu)建你的第一個(gè)空間計(jì)算應(yīng)用吧。
一、空間計(jì)算的應(yīng)用基礎(chǔ)形態(tài)
在蘋(píng)果的WWDC視頻中,我們可以看到蘋(píng)果將所有應(yīng)用形態(tài)分為窗口型(Windows)、體積型(Volumes)、空間型(Space)。他們可以為開(kāi)發(fā)者開(kāi)發(fā)AVP App提供一套靈活的工具套件,不僅作為內(nèi)容承載容器,還可作為調(diào)節(jié)沉浸模式的工具。
要想知道為什么是這三種承載類型,讓我們一起回溯一下Apple的其他跨設(shè)備類型。
在目前的Apple設(shè)計(jì)官方文檔規(guī)范中,Windows作為呈現(xiàn)方式的組件之一,被列舉在其中,窗口作為iOS、Apple tvOS 、watchOS、iPad OS及macOS界面內(nèi)容的主要承載容器,用來(lái)呈現(xiàn)應(yīng)用中用戶界面的視圖和組件?!癆 window contains the views and components that present the user interface of your app or game.”
在iOS、Apple tvOS 、watchOS中,默認(rèn)是全屏的體驗(yàn),用戶將更多注意力聚焦在窗口中的內(nèi)容,而并不是窗口本身。因此三方開(kāi)發(fā)者不需要考慮App 或游戲中設(shè)計(jì)窗口(Windows)或場(chǎng)景(Scenes)本身的外觀,而可直接調(diào)用SwiftUI中定義好的Scene和UIWindow。
與iOS、Apple tvOS 、watchOS不同,VisionOS、iPadOS和MacOS中,用戶通常可以打開(kāi)、關(guān)閉和查看單個(gè)/多個(gè)窗口,調(diào)整窗口的大小和位置等,因此,用戶會(huì)察覺(jué)到窗口是一個(gè)具有獨(dú)特視覺(jué)特質(zhì)的交互對(duì)象。
綜上,2D窗口作為跨全端側(cè)最為基礎(chǔ)的界面內(nèi)容承載容器,也無(wú)疑會(huì)成為Vision Pro中基礎(chǔ)的應(yīng)用形態(tài)之一。
2D窗口(Windows)具有良好的跨端兼容性,通過(guò)SwiftUI來(lái)構(gòu)建,包含傳統(tǒng)SwiftUI中模式和空間,這讓傳統(tǒng)端側(cè)的應(yīng)用更方便低成本移植到Vision Pro中。除此之外,2D窗口類型界面不但能保證用戶在空間計(jì)算平臺(tái)操作應(yīng)用時(shí)的基本效率還能保持用戶操作熟悉感,因?yàn)檫@些窗口和其他平臺(tái)中的布局和交互行為都比較類似,能讓用戶更輕松適應(yīng)空間計(jì)算平臺(tái)的基本操作方式。
而從移動(dòng)、PC設(shè)備跨端側(cè)到空間計(jì)算平臺(tái),為了體現(xiàn)無(wú)限畫(huà)布及3D內(nèi)容展示的特性,Volumes和Space應(yīng)空間應(yīng)用場(chǎng)景而生。接下來(lái),讓我們一起聊聊在空間計(jì)算平臺(tái)中如何使用Windows、Volumes及Space來(lái)構(gòu)建你的第一個(gè)空間計(jì)算應(yīng)用。
二、Windows-應(yīng)用的基礎(chǔ)形態(tài)
在Vision Pro中,不論是Shared Space還是Full Space,一切需要2D內(nèi)容承載的應(yīng)用都可以用Window組成,每個(gè)應(yīng)用可以由一個(gè)或多個(gè)窗口組成。當(dāng)然也可以包含3D內(nèi)容(Volumes),支持2D和3D混合界面的呈現(xiàn)。
即使系統(tǒng)會(huì)定義用戶打開(kāi)的每個(gè)窗口的初始位置,用戶仍然可以對(duì)窗口進(jìn)行基本的操控,把窗口移動(dòng)到空間中的任何位置,縮放窗口大小到舒適的尺寸,像在Mac一樣可以同時(shí)打開(kāi)或關(guān)閉多個(gè)窗口應(yīng)用。
窗口的默認(rèn)窗口大小為 1280x720pt。窗口首次打開(kāi)時(shí),系統(tǒng)會(huì)將其放在佩戴者前方約兩米的位置,并看起來(lái)約有三米寬,這是符合人因較為舒適的瀏覽距離及視場(chǎng)角的尺寸和深度距離。
除此之外,visionOS 窗口采用了毛玻璃的背景材質(zhì),一方面可以讓光線及現(xiàn)實(shí)和虛擬對(duì)象透過(guò)顯示,給用戶一種界面內(nèi)容與周?chē)尘叭跒橐惑w的感覺(jué),同時(shí)使用鏡面反射和陰影來(lái)傳達(dá)窗口的縮放和位置。另一方面,也保持了蘋(píng)果在品牌視覺(jué)上的一致性,繼承了Apple全家桶的毛玻璃效果。
在Xcode中,你可以通過(guò)創(chuàng)建WindowGroup組來(lái)創(chuàng)建你的個(gè)人窗口應(yīng)用界面。
當(dāng)然,如果你希望在窗口界面中加入3D物體內(nèi)容,讓界面體驗(yàn)更加立體,可以通過(guò)調(diào)用Model3D來(lái)呈現(xiàn)你的3D內(nèi)容。
三、Volumes-窗口的擴(kuò)展性形態(tài)
Volumes是Vision Pro平臺(tái)獨(dú)有的應(yīng)用形態(tài),為了體現(xiàn)虛擬現(xiàn)實(shí)下3D內(nèi)容的特性體驗(yàn),Volumes應(yīng)場(chǎng)景而生。Volumes可以支持應(yīng)用在一定邊界內(nèi)展示3D內(nèi)容,如果你有3D內(nèi)容想要展示,那Volumes是絕佳的選擇。
Volumes是Windows的擴(kuò)展性形態(tài),可以獨(dú)立存在于Space中,也可以與Windows混合融入其中,展示一定邊界內(nèi)的3D物體。即使也可以被用在Full space中,但蘋(píng)果推薦還是用于Share space。
與Windows類似,在Share Space中,系統(tǒng)都會(huì)確定Volumes和Windows的初始位置,但可以被用戶移動(dòng)到任何位置,并以不同的視角來(lái)觀看。Volumes也會(huì)提供類似Windows的管理控件與用戶用于調(diào)整窗口位置或關(guān)閉窗口。在材質(zhì)方面,Volumes也是用了相同的毛玻璃背景材質(zhì)。
有所不同的是在縮放方式上,Windows自動(dòng)使用動(dòng)態(tài)縮放,而為Volumes使用固定縮放。具體原因也在我的Apple Vision Pro設(shè)計(jì)規(guī)范之空間輸入篇提到過(guò),Windows使用動(dòng)態(tài)縮放是為了保證最小控件的熱區(qū)一直可以符合眼手的操作精度;而為了保證3D物體大小貼合更自然真實(shí)的物理環(huán)境,Volumes則推薦使用固定縮放方式模式。
在具體實(shí)現(xiàn)上,可以在窗口類型中引入.volumestric,并設(shè)置默認(rèn)的長(zhǎng)寬高尺寸。
四、Space-元素內(nèi)容的容器
最后,讓我們來(lái)了解一下元素內(nèi)容的承載容器-Space。
類似Mac OS中的2D桌面,Space將2D桌面解放至360度的空間中,成為空間計(jì)算平臺(tái)中承載元素內(nèi)容的“空間桌面”。Windows、Volumes都需要被管理及承載在Space中。Vision Pro在空間模塊中的應(yīng)用管理方式包含了Shared Space、及Full Space。
默認(rèn)情況下,應(yīng)用是在Shared Space中運(yùn)行,就像Mac桌面上的不同應(yīng)用窗口一樣,用戶仍然可以和現(xiàn)實(shí)空間保持聯(lián)系和透視關(guān)系。通過(guò)VST顯示MR實(shí)景,在此MR空間內(nèi),用戶可以同時(shí)開(kāi)啟多個(gè)場(chǎng)景。
有些場(chǎng)景下,你可能想調(diào)整應(yīng)用的沉浸模式,比如看電影或玩游戲時(shí),這時(shí)你可以使用Full Space模式。Full Space是指僅允許一個(gè)App運(yùn)行的狀態(tài),這就意味著你app中所有的Windows、Volumes和3D物體,只能有一個(gè)展示在可視區(qū)域內(nèi)。在Full Space中也同樣支持ARkit相關(guān)功能,比如平面檢測(cè),自定義手勢(shì)等,都只能在一個(gè)應(yīng)用全開(kāi)的模式下進(jìn)行。
Full Space有以下特點(diǎn):
- 營(yíng)造獨(dú)占的沉浸感,可以讓用戶深度聚焦在你的應(yīng)用上
- 無(wú)限畫(huà)布,可以將APP內(nèi)元素放置在任何地方
- 同樣支持ARkit相關(guān)功能,可以與你周?chē)h(huán)境進(jìn)行互動(dòng)、創(chuàng)建自定義的手勢(shì)交互等
- 有不同等級(jí)的沉浸模式,來(lái)滿足用戶對(duì)沉浸感體驗(yàn)的不同訴求
在Full Space中開(kāi)發(fā)者可以調(diào)節(jié)沉浸度來(lái)改變應(yīng)用的沉浸度體驗(yàn)感。其中Passthrough(.mixed)的模式可以讓用戶與現(xiàn)實(shí)世界保持聯(lián)系,但你也可以選擇一個(gè)完全沉浸的空間,即Fully immersive(.full)。但你也可以結(jié)合這兩種沉浸度,即Progressive Immersive(.progressive)。
蘋(píng)果開(kāi)發(fā)者文檔中是這么定義沉浸模式類型的:
- Automatic Immersion style:默認(rèn)的沉浸模式。
- Mixed Immersion style:將元素內(nèi)容混合在VST透視中,在無(wú)邊界的場(chǎng)景下顯示內(nèi)容,VST可見(jiàn)。
- Progressive Immersion style:顯示環(huán)繞型窗口內(nèi)容應(yīng)用,用戶仍然可以和現(xiàn)實(shí)世界進(jìn)行互動(dòng)。
- Full Immersion style:在無(wú)邊界的場(chǎng)景下只顯示內(nèi)容,遮蓋除了手部以外其它所有內(nèi)容的VST透視,讓你進(jìn)入一個(gè)完全虛擬的新世界。
除了應(yīng)用自定的沉浸式程度外,在Share Space中,用戶還可以通過(guò)旋轉(zhuǎn)頭顯上的表冠來(lái)切換三種空間沉浸模式。
但是,在Full Immersion應(yīng)用中,數(shù)碼表冠只能用于退出應(yīng)用,是無(wú)法用來(lái)調(diào)節(jié)沉浸度的。當(dāng)然,如果想退出沉浸式應(yīng)用,除了數(shù)字表冠,也可以通過(guò)Control center中應(yīng)用管理功能來(lái)完成。
在Vision OS的平臺(tái)上,一個(gè)應(yīng)用程序可以動(dòng)態(tài)的切換它的形態(tài),在不同沉浸程度之間流暢過(guò)渡。
講了這么多,讓我們來(lái)舉個(gè)例子深刻的了解一下Space具體的應(yīng)用。
比如在keynote中,應(yīng)用首先在窗口里打開(kāi),但仍然可以保持用戶和現(xiàn)實(shí)世界的聯(lián)系。當(dāng)播放幻燈片時(shí),系統(tǒng)將會(huì)調(diào)節(jié)周?chē)饩€,讓演示更加聚焦。當(dāng)用戶想要排練演講時(shí),把用戶帶入一個(gè)全屏空間。這就是一個(gè)應(yīng)用在不同沉浸度下的應(yīng)用。
五、官方案例-Hello Wold
讓我們用官方實(shí)際案例來(lái)深入應(yīng)用一下Windows、Volumes和Space。
進(jìn)入主頁(yè)面時(shí),Hello World在Share Space中打開(kāi)了一個(gè)主Windows,該Windows是由WindowGroup構(gòu)建而來(lái),是應(yīng)用中出現(xiàn)的第一個(gè)場(chǎng)景。該Windows呈現(xiàn)了應(yīng)用程序的主頁(yè)內(nèi)容,同時(shí)定義了該Wwindows的類型為.plain,即我們說(shuō)的平面窗口。
進(jìn)入二級(jí)頁(yè)面,我們可以看到一個(gè)二級(jí)Windows中包含了一個(gè)可交互的3D內(nèi)容形態(tài)。該3D物體是混合于Windows中的。在這里使用了Model3D來(lái)定義其形態(tài),視圖縮放和定位模型以適應(yīng)可用空間,并應(yīng)用可選的方向調(diào)整ItemView。當(dāng)然我們?cè)趯?D內(nèi)容添加到2D窗口時(shí),要注意以下幾點(diǎn):
- 尺寸不要做得太大。雖然3D內(nèi)容增加了用戶的觀看興趣,但當(dāng)人們從不同方向查看窗口時(shí),可能會(huì)無(wú)意中掩蓋重要的控件或信息。
- 確保3D內(nèi)容不超過(guò)可用深度。深度過(guò)大會(huì)導(dǎo)致元素被剪裁。
- 避免模型與背襯玻璃相交及重合,同時(shí)考慮初始放置后的潛在移動(dòng)。
打開(kāi)模型后,我們可以看到立體的地球,這是創(chuàng)建了一個(gè)Volumes形態(tài),使用了.volumetric窗口形態(tài),并定義了默認(rèn)的體積尺寸和深度尺寸。Volumes形態(tài)與Windows形態(tài)類似,都可以通過(guò)底部操控條來(lái)進(jìn)行移動(dòng)和關(guān)閉行為。
為了讓用戶直觀地看到衛(wèi)星如何繞地球運(yùn)行,我們可以在沉浸式的空間中來(lái)展示地球和衛(wèi)星之間的關(guān)系。我們可以通過(guò)創(chuàng)建一個(gè)具有沉浸式風(fēng)格的場(chǎng)景中的顯示視圖Orbit來(lái)承載該3D內(nèi)容模式。在該場(chǎng)景中,就是定義了一個(gè).mixed沉浸類型的3D模型展示視圖場(chǎng)景。
與Volumes窗口形態(tài)不同的是,OrbitToggle是用了空間環(huán)境特性而不是一種窗口類型,在這種情況下,沒(méi)有明顯的關(guān)閉操作,因?yàn)樵贔ull space下,用戶一次只能打開(kāi)一個(gè)空間,即便是跨應(yīng)用程序也是這樣。如果想關(guān)閉該3D模型,可通過(guò)旋轉(zhuǎn)數(shù)字表冠或Control center進(jìn)行應(yīng)用關(guān)閉。
除了半沉浸模式,我們還可以使用完全沉浸式的方式從太空觀察太陽(yáng)系,即Full Immersion的模式,在這種模式下,用戶可以通過(guò)UI窗口上的Exit按鈕退出全沉浸式的模式,也可以通過(guò)旋轉(zhuǎn)表冠來(lái)關(guān)閉當(dāng)前打開(kāi)的沉浸式空間。
總結(jié)
Vision Pro中基礎(chǔ)應(yīng)用形態(tài)是Windows、Volumes和Space。其中Windows是應(yīng)用的基礎(chǔ)形態(tài),Volumes是窗口的擴(kuò)展形態(tài),而Space是元素內(nèi)容的承載容器。它們相輔相成構(gòu)成了空間計(jì)算平臺(tái)的基礎(chǔ)構(gòu)成形態(tài)。
那在你的應(yīng)用里是如何利用Windows、Volumes和Space來(lái)構(gòu)建空間計(jì)算應(yīng)用的,不如留言和作者一起分享和探討一下~
本文由 @Vicky。 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自蘋(píng)果官網(wǎng)
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。