SubspaceModifier は、Subspace のコンポーザブルの Compose 修飾子に似ています。SubspaceModifier を使用すると、3D 空間でコンポーザブルを操作できます。これにより、3D レイアウト ノードの位置決め、回転、動作の追加が可能になります。
レイアウト
デフォルトでは、Subspace はアプリの閲覧に推奨されるスペースによって制限されます。これらの境界は、2D Compose レイアウトの境界と同様に、サブスペース コンポーネントのレイアウトを測定する際に使用されます。
境界を塗りつぶす
修飾子 fillMaxSize、fillMaxWidth、fillMaxHeight、fillMaxDepth を使用すると、コンテンツが親の境界を(部分的に)埋めます。塗りつぶし修飾子を使用すると、アプリのレイアウトで XR デバイスのディスプレイ特性に依存しないコンテンツを配置できます。
サイズと必須サイズを設定する
修飾子 size、width、height、depth は、コンテンツの推奨サイズを宣言します。コンテンツの正確なサイズを宣言するには、requiredSize、requiredWidth、requiredHeight、requiredDepth を使用します。これらの単位は dp で指定する必要があります。メートルから dp に変換するには、Meter.toDp() を使用します。
コンポーザブルを配置する
offset
offset 修飾子は、x、y、z 軸に沿って 3D 空間でコンポーザブルを移動します。これらの単位は dp で指定する必要があります。メートルから dp に変換するには、Meter.toDp() を使用します。
rotate
rotate 修飾子は、指定されたコンポーザブルを空間内で回転させます。回転の方向と量は、さまざまな方法で指定できます。
- ピッチ、ヨー、ロールを使用して、それぞれ
x、y、z軸を中心とした回転を指定します。 - 回転軸を表す
Vector3であるaxisAngleと、回転させる角度を使用して、 - 回転を表す
Quaternionを使用します。
rotateToLookAtUser
rotateToLookAtUser 修飾子は、コンテンツが常にユーザーを向くように継続的に回転させます。この修飾子を使用して、コンテンツが Y 軸上でユーザーの方向を向くように回転しながら、重力に沿って直立した状態を保つ「看板」効果を実現することもできます。これを行うには、rotateToLookAtUser 修飾子と gravityAligned 修飾子を組み合わせます。
コンポーザブルで移動とサイズ変更を行う
ユーザーが 3D 空間内のオブジェクトの位置とサイズを直接操作できるようにします。これらの修飾子は、個々のコンポーネント(SpatialPanel など)、サブスペース、空間レイアウト コンポーネント(SpatialRow や SpatialColumn など)に追加できます。
要素を移動する
移動可能な修飾子を使用すると、サブスペース要素をグラブして再配置できます。
transformingMovable: 標準の移動にはこの修飾子を使用します。この修飾子は、ユーザーが操作して移動できる要素として構成します。システムは、ユーザー入力に基づいて新しいポーズとスケールを自動的に計算して適用します。movable: この修飾子を使用して、カスタムの移動動作を定義します。システムは移動アフォーダンスを提供しますが、必要なonMoveイベントを使用して結果を適用する必要があります。これは、アプリでの移動を制限したり、カスタムの移動を作成したりする場合に便利です。
要素のサイズを変更する
サイズ変更可能な修飾子を使用すると、ユーザーはサブスペース要素をドラッグしてサイズを変更できます。
transformingResizable: システム管理のサイズ変更には、この修飾子を使用します。この修飾子は、サイズ変更ジェスチャーを自動的に処理し、ユーザーが指定した新しいサイズを適用します。resizable: カスタム サイズ変更ロジックには、この修飾子を使用します。システムはサイズ変更のアフォーダンスを提供しますが、onResizeイベントを使用して結果を適用する必要があります。この修飾子は、特定のアスペクト比を維持したり、サイズ変更の終了後に他のコンポーネントのレイアウト全体を再調整したりするなどの複雑なシナリオで役立ちます。
コンポーザブルの外観を変更する
alpha
alpha 修飾子は、要素とその子要素の不透明度を設定します。0f は完全に透明、1.0f は完全に不透明を表します。
scale
scale 修飾子は、コンポーザブルのコンテンツを水平軸、垂直軸、奥行き軸に沿ってスケーリングします。
テストとアクセシビリティ
semantics
semantics 修飾子は、テストやユーザー補助機能で使用するために、レイアウト ノードにセマンティクスを追加します。Jetpack Compose のセマンティクスと SemanticsModifier をご覧ください。
testTag
testTag 修飾子は SemanticsPropertyReceiver.testTag の短縮形です。これにより、テスト フレームワークはテストで要素を見つけることができます。