하위 공간 수정자 이해하기

적용 가능한 XR 기기
이 안내는 이러한 유형의 XR 기기용 환경을 구축하는 데 도움이 됩니다.
XR 헤드셋
유선 XR 글라스

SubspaceModifierSubspace의 컴포저블용 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 수정자는 3D 공간에서 x, y, z 축을 따라 컴포저블을 이동합니다. 이러한 단위는 dp로 지정해야 합니다. 미터에서 dp로 변환하려면 Meter.toDp()를 사용하세요.

rotate

rotate 수정자는 지정된 컴포저블을 공간에서 회전합니다. 다음과 같은 다양한 방법으로 회전 방향과 회전량을 지정할 수 있습니다.

  • 각각 x, y, z 축을 중심으로 회전을 지정하는 피치, 요, 롤을 사용합니다.
  • 회전 축을 나타내는 Vector3axisAngle와 회전할 각도를 사용하여
  • 회전을 나타내는 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의 약어이며, 이를 통해 테스트 프레임워크가 테스트에서 요소를 찾을 수 있습니다.