다음을 통해 공유


BoundsControl — MRTK3

경계 컨트롤

BoundsControl은 회전 및 배율에 대한 조작 어코던스와 함께 자동으로 크기가 조정되는 경계 상자를 제공합니다.

MRTK 2.x에서 BoundsControl은 주로 ScriptableObjects 구성을 사용하여 런타임에서 생성되었습니다. MRTK3에서는 BoundsControl의 설정 및 사용자 지정이 크게 간소화되었습니다. 경계 시각적 개체와 핸들은 단순히 BoundsControl이 런타임에 인스턴스화하는 사용자 지정 가능한 프리팹입니다. 개발자는 시각적 개체 프리팹을 조정 및 사용자 지정하거나 처음부터 새로운 경계 시각적 개체를 빌드할 수도 있습니다. 새로운 Mixed Reality 디자인 언어에 따라 표준 경계 시각적 개체 구현을 제공합니다.

새 시각적 개체는 최소한의 방해 시각적 노이즈로 개체의 사용자 의도 및 조작을 보여 주는 간소화된 시각적 피드백을 제공합니다.

설치 프로그램

기존 개체에 BoundsControl을 추가하고 사용하려는 경계 시각적 개체로 참조를 채웁니다 BoundsVisualsPrefab . 사용할 수 있도록 미리 빌드된 몇 가지 경계 시각적 개체를 제공합니다.

중요

개발자가 MinMaxScaleConstraint 를 추가하여 사용자가 개체 크기를 사용할 수 없는 작거나 큰 크기로 확장하지 못하도록 하는 것이 좋습니다.

경계 시각적 개체의 의도 및 포커스 효과를 사용하려면 개체에 가 StatefulInteractable 있어야 합니다. 상호 작용 가능 개체가 자동으로 검색되지 않는 경우 BoundsControl 검사기에서 연결을 지정할 수 있습니다.

참고

개발자는 BoundsControl과 함께 ObjectManipulator를 사용하여 어포던스 기반 조작 외에도 사용자에게 직접 조작을 제공하는 것이 좋습니다. ObjectManipulator는 경계 시각적 개체가 응답하는 가리키기/포커스 상태의 로 StatefulInteractable 사용될 수 있습니다.

경계 시각적 개체 프리팹

BoundsControl과 함께 사용하기 위해 미리 빌드된 여러 경계 시각적 개체를 제공합니다. 개발자는 이러한 시각적 개체의 프리팹 변형을 만들고 필요에 맞게 사용자 지정하는 것이 좋습니다. 핸들 애니메이션 및 상태는 StateVisualizer에 의해 구동되므로 개발자는 어워런스의 모양과 느낌을 추가로 사용자 지정할 수 있습니다.

폐색 스타일 처리

이러한 경계 시각적 개체는 사용자에게 방해가 적은 간소화된 시각적 디자인을 제공합니다. 경계의 가장자리를 따라 관련 핸들만 표시됩니다. 경계 시각적 개체는 사용자 의도 및 선택 진행률에 따라 색/두께를 계약, 확장 및 변경합니다. 이 경계 시각적 스타일을 사용하는 것이 좋습니다.

폐색 핸들

의도 전용

일부 컨텍스트에서는 핸들이 바람직하지 않을 수 있으며 개발자는 경계 시각적 개체만 사용자 의도를 나타내는 유쾌한 지표로 사용할 수 있습니다. 이 프리팹이 작업을 수행하는 동안 HandleType.None을 선택하여 다른 경계 시각적 개체와 동일한 효과를 달성할 수 있습니다. 압착 가능한 경계 시각적 개체는 핸들 기반 조작뿐만 아니라 다양한 컨텍스트에 대한 만족스럽고 유쾌한 시각적 피드백 요소임을 발견했습니다.

핸들 없음

레거시 스타일

이러한 경계 시각적 개체는 상자의 모든 핸들과 가장자리를 표시합니다. 이는 레거시 디자인 언어 및 MRTK 2.x에서 볼 수 있는 이전 동작과 더 밀접하게 일치합니다. 그러나 이 디자인은 불필요한 시각적 노이즈로 인해 사용자에게 더 방해가 될 수 있습니다. 또한 개체 앞과 뒤에 핸들이 있으면 간접 응시-손가락 모으기 조작에 문제가 발생할 수 있습니다. 특히 응시 대상을 활용하는 새 애플리케이션에는 이 스타일을 사용하지 않는 것이 좋습니다.

기존 핸들

상호 작용 디자인

현재 반복에서는 간단한 활성화/비활성화 상호 작용을 제공합니다. 현재 위치에서 경계를 클릭하여(즉, 개체를 선택하고, 이동하지 않고, 해제)하면 핸들을 켜고 끌 수 있습니다. 이 검사 대한 거리 허용 오차는 로 DragToggleThreshold조정할 수 있으며, 이 활성화 동작 자체는 속성을 사용하여 사용/사용하지 않도록 ToggleHandlesOnClick 설정할 수 있습니다.

경계 컨트롤 토글

핸들은 를 설정 HandlesActive하여 언제든지 코드에서 수동으로 활성화하거나 비활성화할 수 있습니다.

자동 경계 계산

BoundsControl은 연결된 개체의 범위를 자동으로 계산하려고 시도합니다. 특정 경계 셰이프가 필요한 경우 옵션을 검사 OverrideBounds 경계 개체를 직접 지정합니다. 경계 계산 시스템은 지정된 재정의 개체의 경계만 계산합니다.

알고리즘 BoundsCalculationMethod 이 경계를 계산하는 방법에 영향을 줍니다. 묶은 개체의 시각적 모양이 반드시 충돌체와 일치하지 않거나 그 반대의 경우 개발자는 렌더러 또는 충돌체 경계 또는 둘의 조합을 선호하도록 계산 방법을 조정할 수 있습니다.

계산 방법에 Padding 관계없이 옵션은 월드 단위로 경계를 균일하게 채운다. 경계가 평면화되면 평면화된 축이 패딩되지 않습니다.

평면화

Flattened BoundsControl

BoundsControl은 2D 콘텐츠를 조작하는 데도 사용할 수 있습니다. 가 로 Auto설정된 경우 FlattenMode 개체가 축을 따라 충분히 평평한 경우 BoundsControl은 2D 사각형 경계로 평면화됩니다. 개체가 충분히 평평하지는 않지만 직사각형 경계 어페던스를 FlattenMode.Always 원하는 경우 는 항상 스키니 축을 따라 BoundsControl을 평면화합니다. 반대로 는 FlattenMode.Never 개체가 매우 얇더라도 BoundsControl이 평면화되지 않도록 합니다.

조작 옵션

BoundsControl의 조작 동작은 여러 가지 방법으로 조정할 수 있습니다. 옵션은 RotateAnchor 회전 어코던스를 사용할 때 BoundsControl이 회전되는 피벗 지점을 제어합니다. 일부 개체의 피벗 지점은 시각적 중심과는 거리가 멀기 때문에 회전 핸들로 조작할 때 불편함과 부정확함을 유발할 수 있습니다. BoundsCenter 에 를 RotateAnchor 지정하면 BoundsControl이 항상 개체의 실제 원점이 아닌 계산된 경계의 기하학적 중심을 중심으로 회전합니다.

크기 조정 동작은 또는 Non UniformUniform 설정할 수 있습니다. 균일 모드에서는 개체의 모든 축이 함께 크기 조정되어 가로 세로 비율과 모양을 유지합니다. 균일하지 않은 크기 조정을 사용하면 개체의 각 축을 독립적으로 스케일링할 수 있습니다.