サブスペース修飾子

SubspaceModifier は、Subspace のコンポーザブルの Compose 修飾子に似ています。SubspaceModifier を使用すると、3D 空間でコンポーザブルを操作できます。これにより、3D レイアウト ノードの位置決め、回転、動作の追加が可能になります。

レイアウト

デフォルトでは、Subspaceアプリの閲覧に推奨されるスペースによって制限されます。これらの境界は、2D Compose レイアウトの境界と同様に、サブスペース コンポーネントのレイアウトを測定する際に使用されます。

塗りつぶし境界

修飾子 fillMaxSizefillMaxWidthfillMaxHeightfillMaxDepth を使用すると、コンテンツが親の境界を(部分的に)埋めます。塗りつぶし修飾子を使用すると、XR デバイスのディスプレイ特性に依存しないコンテンツをアプリのレイアウトに配置できます。

サイズと必須サイズを設定する

修飾子 sizewidthheightdepth は、コンテンツの推奨サイズを宣言します。コンテンツの正確なサイズを宣言するには、requiredSizerequiredWidthrequiredHeightrequiredDepth を使用します。これらの単位は dp で指定する必要があります。メートルから dp に変換するには、Meter.toDp() を使用します。

コンポーザブルを配置する

offset

offset 修飾子は、xyz 軸に沿って 3D 空間でコンポーザブルを移動します。これらの単位は dp で指定する必要があります。メートルから dp に変換するには、Meter.toDp() を使用します。

rotate

rotate 修飾子は、指定されたコンポーザブルを空間内で回転させます。回転の方向と量は、さまざまな方法で指定できます。

  • ピッチ、ヨー、ロールを使用して、それぞれ xyz 軸を中心とした回転を指定します。
  • 回転軸を表す Vector3 である axisAngle と、回転させる角度を使用して、
  • 回転を表す Quaternion を使用します。

コンポーザブルの外観を変更する

alpha

alpha 修飾子は、要素とその子要素の不透明度を設定します。0f は完全に透明、1.0f は完全に不透明を表します。

scale

scale 修飾子は、コンポーザブルのコンテンツを横軸、縦軸、奥行き軸に沿って拡大 / 縮小します。

コンポーザブルに動作を追加する

resizable

resizable 修飾子が有効になっている場合、ユーザーが要素のサイズを変更できるドラッグ可能な UI コントロールが表示されます。これは、EntityResizableComponent を使用するのと同様です。

movable

movable 修飾子を有効にすると、ユーザーが 3D 空間で要素を移動できる UI コントロールがコンポーネントに追加されます。これは、EntityMovableComponent を使用するのと似ています。

movable レイアウト ノードは、移動時にアンカーするプレーンのタイプを必要に応じて指定できます。たとえば、テーブルにスナップする SpatialPanel を作成するには:

SpatialPanel(
  modifier.movable(anchorPlaneSemantics = setOf(PlaneSemantic.TABLE))
) {
  // This panel snaps to available planes that are detected as a TABLE.
}

平面にスナップするには、アプリに android.permission.SCENE_UNDERSTANDING_COARSE ランタイム権限が付与されている必要があります。

テストとアクセシビリティ

semantics

semantics 修飾子は、テストやユーザー補助機能で使用するセマンティクスをレイアウト ノードに追加します。Jetpack Compose のセマンティクスSemanticsModifier をご覧ください。

testTag

testTag 修飾子は SemanticsPropertyReceiver.testTag の短縮形です。これにより、テスト フレームワークはテストで要素を見つけることができます。