visionOSのサンプルをシミュレーターで動かしてみたり新規プロジェクトを作成してみたりすると、結構新しい概念や用語がいろいろと登場していることに気付く。
基礎概念や用語は早めに理解しておいた方が良いだろうということで、WWDC23のセッション "Get started with building apps for spatial computing" の冒頭と後半にあった解説を整理した。
なお、引用表記と画像は基本的に"Get started with building apps for spatial computing"より。
Elements
ウィンドウ
各アプリは、1つまたは複数のウィンドウを持つことができる。
SwiftUIでSceneを用いて構築でき、
2Dと3Dコンテンツを混在させることができる。
ユーザーが自由に拡大縮小や再配置を行える。
ボリューム
ボリュームは3Dコンテンツに最適化したウィンドウ。
2Dまたは3Dコンテンツを含む複数のSwiftUIビューをホストすることができる。基本的にはShared Space向けのもの。
ボリュームは、アプリが定義された範囲に3Dコンテンツを表示し、他のアプリとスペースを共有することを可能にする。
シーンにボリュームを追加するコード例は以下:
シミュレータでの実行例:
このボリュームには、指定した寸法があり、プラットフォームコントロールとして、アプリ名を表示し、このボリュームがどのアプリに属するかを簡単に識別できるようにするアプリケーションタイトルバー、ボリュームを配置できるウィンドウバー、タップするとアプリを中断し、ボリュームを閉じるクローズボタンがある。
その他ボリュームについて:
スペース
Elementsの3つめのSpace(スペース)については、次項にて詳細にまとめる。
Shared Space と Full Space
スペースにはShared SpaceとFull Spaceがある。
Shared Space
macOSのデスクトップやiOSのホーム画面のように、複数のアプリが並んで存在する場所。
ユーザーは、パススルー(後述)によって周囲とつながっている。
Full Space(フルスペース)
アプリのウィンドウ、ボリューム、3Dオブジェクトだけが表示される専用のスペース。
フルスペースでは、アプリのウィンドウ、ボリューム、コンテンツを、周囲のどこにでも配置できる。
フルスペースでは、ARKitのAPIを活用することもできる。
Full Spaceと没入感
Full Spaceには、Immersion Styleという没入感に関するパラメータを渡すことができる。それについては後述。
Passthrough と Fully Immersive
Shared Spaceのところでちらっと "Passthrough"(パススルー)という用語が出てきたが、これと対になる用語が"Fully Immersive" で、これらは周囲の環境との結びつきを表す。
Passthrough
Fully Immersive
Immersion Style
Immersion Styleは、Full Spaceで渡すことができるパラメータ。
.mixed と .full
.mixedと.fullという2つの基本スタイルがある。
.progressive
.progressiveを選択することで、これら2つを組み合わせることもできる。このスタイルでは、最初はパススルーが可能だが、デバイスの上部にあるデジタルクラウンを回すことで、没入感のレベルをフルまで変更することができる。