ConstraintManager 를 사용하면 제약 조건 구성 요소 집합을 변환에 적용할 수 있습니다. 기본적으로 제약 조건 관리자는 연결된 모든 제약 조건 구성 요소를 자동으로 수집하여 대상 개체에 적용합니다. 그러나 사용자는 적용된 제약 조건 목록을 수동으로 구성하고 연결된 제약 조건의 하위 집합만 사용할 수 있도록 선택할 수도 있습니다.
참고
MRTK3은 현재 MRTK 2.x에서 제약 조건의 제한된 하위 집합을 제공합니다. 현재 개발자 워크플로를 솔버 및 Elastics와 통합하기 위해 제약 조건 시스템의 리팩터링을 조사하고 있습니다. 지켜!
현재 다음 MRTK UX 요소는 제약 조건을 지원합니다.
제약 조건 관리자는 다음 두 가지 모드로 작동할 수 있습니다.
- 자동 제약 조건 선택
- 수동 제약 조건 선택
제약 조건 선택
자동 제약 조건 선택
기본 자동 모드는 연결된 모든 제약 조건 구성 요소를 나열합니다. 구성 요소로 이동 단추를 사용하여 검사기에서 구성 요소 로 바로 이동하거나 드롭다운에서 새 제약 조건을 추가할 수 있습니다.
수동 제약 조건 선택
제약 조건 관리자가 수동 모드로 설정된 경우 제약 조건 목록에 연결된 제약 조건만 처리되고 변환에 적용됩니다. 수동 모드를 처음으로 사용하도록 설정하면 관리자가 현재 연결된 모든 제약 조건으로 목록을 자동으로 채웁니다.
참고
항목 제거 작업은 수동 선택 목록에서만 제약 조건을 제거합니다. 구성 요소는 여전히 GameObject에 있습니다.
실행 순서
각 제약 조건의 실행 순서는 제약 조건 자체의 실행 순서 옵션에서 정의할 수 있습니다. 순서는 제약 조건 관리자에 표시되는 목록에 반영됩니다. 일부 제약 조건은 서로 다른 순서로 결합될 때 다르게 작동하므로 각 제약 조건의 우선 순위를 염두에 두고 그에 따라 순서를 조정합니다.
변환 제약 조건
제약 조건을 사용하여 조작을 어떤 식으로든 제한할 수 있습니다. 예를 들어 일부 애플리케이션에는 회전이 필요하고 개체가 똑바로 유지됩니다. 이 경우 RotationAxisConstraint 를 개체에 추가하고 회전을 y축 회전으로 제한하는 데 사용할 수 있습니다. MRTK는 몇 가지 제약 조건을 제공하며, 모두 아래에 설명되어 있습니다.
또한 새 제약 조건을 정의하고 이를 사용하여 일부 애플리케이션에 필요할 수 있는 고유한 조작 동작을 만들 수도 있습니다. 이렇게 하려면 에서 상속되는 스크립트를 TransformConstraint 만들고 추상 속성 및 추상 ConstraintTypeApplyConstraint 메서드를 구현합니다. 새 제약 조건은 드롭다운에 표시되어야 하며 개체에 추가될 때 제약 조건 관리자에 자동으로 등록되어야 합니다.
MRTK에서 제공하는 모든 제약 조건은 다음 속성을 공유합니다.
손 유형 은 제약 조건이 한 손, 양손 또는 두 종류의 조작에 사용되는지 여부를 지정합니다. 이 속성은 플래그이므로 두 옵션을 모두 선택할 수 있습니다.
- 한 손으로: 선택한 경우 한 손으로 조작하는 동안 제약 조건이 사용됩니다.
- 양손: 선택한 경우 양손 조작 중에 제약 조건이 사용됩니다.
ProximityType 은 제약 조건이 근거리, 멀리 또는 두 종류의 조작에 사용되는지 여부를 지정합니다. 이 속성은 플래그이므로 두 옵션을 모두 선택할 수 있습니다.
- 근거리: 제약 조건은 선택한 경우 거의 조작하는 동안 사용됩니다.
- Far: 선택한 경우 먼 조작 중에 제약 조건이 사용됩니다.
FaceUserConstraint
이 제약 조건은 개체가 항상 사용자와 마주하게 되도록 개체의 회전을 제한합니다.
Face Away 옵션은 양수 또는 음수 Z 축이 사용되는지 여부를 제어합니다.
FixedDistanceConstraint
이 제약 조건은 조작된 개체와 조작 시작 시 다른 개체 변환 사이의 거리를 수정합니다. 이는 조작된 개체에서 헤드 변환까지의 거리를 고정하는 등의 동작에 유용합니다.
제약 조건 변환 필드는 기본적으로 카메라 변환으로 설정되며 조작된 개체의 고정 거리가 있는 다른 변환입니다.
MaintainApparentSizeConstraint
이 제약 조건이 개체에 연결된 경우 개체가 사용자로부터 얼마나 멀리 떨어져 있든 관계없이 사용자에게 동일한 명백한 크기를 유지합니다(즉, 사용자 보기 필드의 동일한 비율을 차지합니다). 이를 사용하여 슬레이트 또는 텍스트 패널을 조작하는 동안 읽을 수 있도록 할 수 있습니다.
MoveAxisConstraint
이 제약 조건을 사용하여 조작된 개체를 이동할 수 있는 축을 수정할 수 있습니다. 이는 평면 표면이나 선을 따라 개체를 조작하는 데 유용할 수 있습니다.
이동에 대한 제약 조건 필드는 이동을 방지할 축을 지정합니다. 기본적으로 이러한 축은 로컬이 아닌 전역 축이지만 아래에서 변경할 수 있습니다. 이 속성은 플래그이므로 원하는 수의 옵션을 선택할 수 있습니다.
MinMaxScaleConstraint
이 제약 조건은 개체의 크기를 제한하며, 사용자가 개체를 사용할 수 없을 정도로 작거나 큰 크기로 스케일링하지 못하게 하는 데 유용합니다. 핸들 기반 크기 조정( BoundsControl 사용) 및 양손 직접 크기 조정( ObjectManipulator 사용)에서 모두 작동합니다.
초기 상태에 상대적인 옵션은 특정 최소 및 최대 배율 값이 절대 값인지 아니면 개체의 초기 배율에 곱할지 여부를 정의합니다.
RotationAxisConstraint
이 제약 조건을 사용하여 조작된 개체를 회전할 수 있는 축을 수정할 수 있습니다. 예를 들어 조작된 개체를 똑바로 유지하지만 y축 회전을 허용하는 데 유용할 수 있습니다.
회전에 대한 제약 조건 필드는 회전을 방지할 축을 지정합니다. 기본적으로 이러한 축은 로컬이 아닌 전역 축이지만 아래에서 변경할 수 있습니다. 이 속성은 플래그이므로 원하는 수의 옵션을 선택할 수 있습니다.