當前位置: 華文世界 > 數位

四千字幹貨!一文帶你吃透Windows、Volumes和Space|Vision Pro

2024-03-11數位

在Vision Pro中,基礎套用形態有幾種,包括Windows、Volumes和Space等。這些基礎套用形態,相輔相成構成了空間計算平台的基礎構成形態。這篇文章裏,作者就介紹了他們的設計原則及相關實踐,一起來看一下。

為一個全新的平台構建套用,先從了解套用形態開始。本篇介紹了空間計算平台中的基礎套用形態-Windows、Volumes、Space,並介紹其設計原則及最佳實踐,快來構建你的第一個空間計算套用吧。

一、空間計算的套用基礎形態

在蘋果的WWDC視訊中,我們可以看到蘋果將所有套用形態分為視窗型(Windows)、體積型(Volumes)、空間型(Space)。他們可以為開發者開發AVP App提供一套靈活的工具套件,不僅作為內容承載容器,還可作為調節沈浸模式的工具。

要想知道為什麽是這三種承載型別,讓我們一起回溯一下Apple的其他跨裝置型別。

在目前的Apple設計官方文件規範中,Windows作為呈現方式的元件之一,被列舉在其中,視窗作為iOS、Apple tvOS 、watchOS、iPad OS及macOS界面內容的主要承載容器,用來呈現套用中使用者介面的檢視和元件。—「A window contains the views and components that present the user interface of your app or game.」

在iOS、Apple tvOS 、watchOS中,預設是全螢幕的體驗,使用者將更多註意力聚焦在視窗中的內容,而並不是視窗本身。因此三方開發者不需要考慮App 或遊戲中設計視窗(Windows)或場景(Scenes)本身的外觀,而可直接呼叫SwiftUI中定義好的Scene和UIWindow。

與iOS、Apple tvOS 、watchOS不同,VisionOS、iPadOS和MacOS中,使用者通常可以開啟、關閉和檢視單個/多個視窗,調整視窗的大小和位置等,因此,使用者會察覺到視窗是一個具有獨特視覺特質的互動物件。

綜上,2D視窗作為跨全端側最為基礎的界面內容承載容器,也無疑會成為Vision Pro中基礎的套用形態之一。

2D視窗(Windows)具有良好的跨端相容性,透過SwiftUI來構建,包含傳統SwiftUI中模式和空間,這讓傳統端側的套用更方便低成本移植到Vision Pro中。除此之外,2D視窗型別界面不但能保證使用者在空間計算平台操作套用時的基本效率還能保持使用者操作熟悉感,因為這些視窗和其他平台中的布局和互動行為都比較類似,能讓使用者更輕松適應空間計算平台的基本操作方式。

而從移動、PC裝置跨端側到空間計算平台,為了體現無限畫布及3D內容展示的特性,Volumes和Space應空間套用場景而生。接下來,讓我們一起聊聊在空間計算平台中如何使用Windows、Volumes及Space來構建你的第一個空間計算套用。

二、Windows-套用的基礎形態

在Vision Pro中,不論是Shared Space還是Full Space,一切需要2D內容承載的套用都可以用Window組成,每個套用可以由一個或多個視窗組成。當然也可以包含3D內容(Volumes),支持2D和3D混合界面的呈現。

即使系統會定義使用者開啟的每個視窗的初始位置,使用者仍然可以對視窗進行基本的操控,把視窗移動到空間中的任何位置,縮放視窗大小到舒適的尺寸,像在Mac一樣可以同時開啟或關閉多個視窗套用。

視窗的預設視窗大小為 1280x720pt。視窗首次開啟時,系統會將其放在佩戴者前方約兩米的位置,並看起來約有三米寬,這是符合人因較為舒適的瀏覽距離及視場角的尺寸和深度距離。

除此之外,visionOS 視窗采用了毛玻璃的背景材質,一方面可以讓光線及現實和虛擬物件透過顯示,給使用者一種界面內容與周圍背景融為一體的感覺,同時使用鏡面反射和陰影來傳達視窗的縮放和位置。另一方面,也保持了蘋果在品牌視覺上的一致性,繼承了Apple全家桶的毛玻璃效果。

在Xcode中,你可以透過建立WindowGroup組來建立你的個人視窗套用界面。

當然,如果你希望在視窗界面中加入3D物體內容,讓界面體驗更加立體,可以透過呼叫Model3D來呈現你的3D內容。

三、Volumes-視窗的擴充套件性形態

Volumes是Vision Pro平台獨有的套用形態,為了體現虛擬現實下3D內容的特性體驗,Volumes應場景而生。Volumes可以支持套用在一定邊界內展示3D內容,如果你有3D內容想要展示,那Volumes是絕佳的選擇。

Volumes是Windows的擴充套件性形態,可以獨立存在於Space中,也可以與Windows混合融入其中,展示一定邊界內的3D物體。即使也可以被用在Full space中,但蘋果推薦還是用於Share space。

與Windows類似,在Share Space中,系統都會確定Volumes和Windows的初始位置,但可以被使用者移動到任何位置,並以不同的視角來觀看。Volumes也會提供類似Windows的管理控制項與使用者用於調整視窗位置或關閉視窗。在材質方面,Volumes也是用了相同的毛玻璃背景材質。

有所不同的是在縮放方式上,Windows自動使用動態縮放,而為Volumes使用固定縮放。具體原因也在我的Apple Vision Pro設計規範之空間輸入篇提到過,Windows使用動態縮放是為了保證最小控制項的熱區一直可以符合眼手的操作精度;而為了保證3D物體大小貼合更自然真實的物理環境,Volumes則推薦使用固定縮放方式模式。

在具體實作上,可以在視窗型別中引入.volumestric,並設定預設的長寬高尺寸。

四、Space-元素內容的容器

最後,讓我們來了解一下元素內容的承載容器-Space。

類似Mac OS中的2D桌面,Space將2D桌面解放至360度的空間中,成為空間計算平台中承載元素內容的「空間桌面」。Windows、Volumes都需要被管理及承載在Space中。Vision Pro在空間模組中的 套用管理方式 包含了Shared Space、及Full Space。

預設情況下,套用是在Shared Space中執行,就像Mac桌面上的不同套用視窗一樣,使用者仍然可以和現實空間保持聯系和透視關系。透過VST顯示MR實景,在此MR空間內,使用者可以同時開啟多個場景。

有些場景下,你可能想調整套用的沈浸模式,比如看電影或玩遊戲時,這時你可以使用Full Space模式。Full Space是指僅允許一個App執行的狀態,這就意味著你app中所有的Windows、Volumes和3D物體,只能有一個展示在可視區域內。在Full Space中也同樣支持ARkit相關功能,比如平面檢測,自訂手勢等,都只能在一個套用全開的模式下進行。

Full Space有以下特點:

  • 營造獨占的沈浸感,可以讓使用者深度聚焦在你的套用上
  • 無限畫布,可以將APP內元素放置在任何地方
  • 同樣支持ARkit相關功能,可以與你周圍環境進行互動、建立自訂的手勢互動等
  • 有不同等級的沈浸模式,來滿足使用者對沈浸感體驗的不同訴求
  • 在Full Space中開發者可以調節沈浸度來改變套用的沈浸度體驗感。其中Passthrough(.mixed)的模式可以讓使用者與現實世界保持聯系,但你也可以選擇一個完全沈浸的空間,即Fully immersive(.full)。但你也可以結合這兩種沈浸度,即Progressive Immersive(.progressive)。

    蘋果開發者文件中是這麽定義沈浸模式型別的:

  • Automatic Immersion style:預設的沈浸模式。
  • Mixed Immersion style:將元素內容混合在VST透視中,在無邊界的場景下顯示內容,VST可見。
  • Progressive Immersion style:顯示環繞型視窗內容套用,使用者仍然可以和現實世界進行互動。
  • Full Immersion style:在無邊界的場景下只顯示內容,遮蓋除了手部以外其它所有內容的VST透視,讓你進入一個完全虛擬的新世界。
  • 除了套用自定的沈浸式程度外,在Share Space中,使用者還可以透過旋轉頭顯上的表冠來切換三種空間沈浸模式。

    但是,在Full Immersion套用中,數位表冠只能用於結束套用,是無法用來調節沈浸度的。當然,如果想結束沈浸式套用,除了數位表冠,也可以透過Control center中套用管理功能來完成。

    在Vision OS的平台上,一個應用程式可以動態的切換它的形態,在不同沈浸程度之間流暢過渡。

    講了這麽多,讓我們來舉個例子深刻的了解一下Space具體的套用。

    比如在keynote中,套用首先在視窗裏開啟,但仍然可以保持使用者和現實世界的聯系。當播放投影片時,系統將會調節周圍光線,讓演示更加聚焦。當使用者想要排練演講時,把使用者帶入一個全螢幕空間。這就是一個套用在不同沈浸度下的套用。

    五、官方案例-Hello Wold

    讓我們用官方實際案例來深入套用一下Windows、Volumes和Space。

    進入主頁面時,Hello World在Share Space中開啟了一個主Windows,該Windows是由WindowGroup構建而來,是套用中出現的第一個場景。該Windows呈現了應用程式的主頁內容,同時定義了該Wwindows的型別為.plain,即我們說的平面視窗。

    進入二級頁面,我們可以看到一個二級Windows中包含了一個可互動的3D內容形態。該3D物體是混合於Windows中的。在這裏使用了Model3D來定義其形態,檢視縮放和定位模型以適應可用空間,並套用可選的方向調整ItemView。當然我們在將3D內容添加到2D視窗時,要註意以下幾點:

  • 尺寸不要做得太大。雖然3D內容增加了使用者的觀看興趣,但當人們從不同方向檢視視窗時,可能會無意中掩蓋重要的控制項或資訊。
  • 確保3D內容不超過可用深度。深度過大會導致元素被剪裁。
  • 避免模型與背襯玻璃相交及重合,同時考慮初始放置後的潛在移動。
  • 開啟模型後,我們可以看到立體的地球,這是建立了一個Volumes形態,使用了.volumetric視窗形態,並定義了預設的體積尺寸和深度尺寸。Volumes形態與Windows形態類似,都可以透過底部操控條來進行移動和關閉行為。

    為了讓使用者直觀地看到衛星如何繞地球執行,我們可以在沈浸式的空間中來展示地球和衛星之間的關系。我們可以透過建立一個具有沈浸式風格的場景中的顯示檢視Orbit來承載該3D內容模式。在該場景中,就是定義了一個.mixed沈浸型別的3D模型展示檢視場景。

    與Volumes視窗形態不同的是,OrbitToggle是用了空間環境特性而不是一種視窗型別,在這種情況下,沒有明顯的關閉操作,因為在Full space下,使用者一次只能開啟一個空間,即便是跨應用程式也是這樣。如果想關閉該3D模型,可透過旋轉數位表冠或Control center進行套用關閉。

    除了半沈浸模式,我們還可以使用完全沈浸式的方式從太空觀察太陽系,即Full Immersion的模式,在這種模式下,使用者可以透過UI視窗上的Exit按鈕結束全沈浸式的模式,也可以透過旋轉表冠來關閉當前開啟的沈浸式空間。

    總結

    Vision Pro中基礎套用形態是Windows、Volumes和Space。其中Windows是套用的基礎形態,Volumes是視窗的擴充套件形態,而Space是元素內容的承載容器。它們相輔相成構成了空間計算平台的基礎構成形態。

    那在你的套用裏是如何利用Windows、Volumes和Space來構建空間計算套用的,不如留言和作者一起分享和探討一下~

    本文由 @Vicky。 原創釋出於人人都是產品經理,未經授權,禁止轉載

    題圖來自蘋果官網

    該文觀點僅代表作者本人,人人都是產品經理平台僅提供資訊儲存空間服務。