제약 조건

ConstraintManager를 통해 제약 조건 구성 요소 세트를 변환에 적용할 수 있습니다. 기본적으로 제약 조건 관리자는 연결된 모든 제약 조건 구성 요소를 자동으로 수집하여 대상 개체에 적용합니다. 그러나 사용자는 연결된 제약 조건의 하위 집합만 사용할 수 있도록 적용된 제약 조건 목록을 수동으로 구성하도록 선택할 수도 있습니다.

참고

MRTK3는 현재 MRTK 2.x 제약 조건의 제한된 하위 집합을 제공합니다. 현재 개발자 워크플로를 솔버 및 Elastics와 통합하기 위해 Constraints 시스템의 리팩터링을 조사하고 있습니다. 기대해 주세요.

현재 다음 MRTK UX 요소가 제약 조건을 지원합니다.

제약 조건 관리자는 다음 두 가지 모드로 작동할 수 있습니다.

  • 자동 제약 조건 선택
  • 수동 제약 조건 선택

제약 조건 선택

자동 제약 조건 선택

Auto Selection mode

기본 자동 모드는 연결된 모든 제약 조건 구성 요소를 나열합니다. Go to component 단추를 사용하여 검사기에서 구성 요소로 바로 이동하거나 드롭다운에서 새 제약 조건을 추가할 수 있습니다.

수동 제약 조건 선택

Manual Selection mode

제약 조건 관리자가 수동 모드로 설정된 경우 제약 조건 목록에 연결된 제약 조건만 처리되어 변환에 적용됩니다. 수동 모드를 처음으로 사용하도록 설정하면 관리자가 현재 연결된 모든 제약 조건으로 목록을 자동으로 채웁니다.

참고

Remove Entry 작업은 수동 선택 목록에서만 제약 조건을 제거합니다. 구성 요소는 여전히 GameObject에 있습니다.

실행 순서

각 제약 조건의 실행 순서는 제약 조건 자체의 Execution Order 옵션에서 정의할 수 있습니다. 이 순서는 제약 조건 관리자에 표시되는 목록에 반영됩니다. 일부 제약 조건은 서로 다른 순서로 결합될 경우 다르게 작동하므로 각 제약 조건의 우선 순위를 염두에 두고 그에 따라 순서를 조정합니다.

변환 제약 조건

제약 조건을 사용하여 어떤 식으로든 조작을 제한할 수 있습니다. 예를 들어 일부 애플리케이션에는 회전이 필요하고 개체가 똑바로 유지되어야 할 수 있습니다. 이 경우 개체에 RotationAxisConstraint를 추가하고 이를 사용하여 회전을 y축 회전으로 제한할 수 있습니다. MRTK는 몇 가지 제약 조건을 제공하며, 모두 아래에 설명되어 있습니다.

또한 새 제약 조건을 정의하고 이를 사용하여 일부 애플리케이션에 필요할 수 있는 고유한 조작 동작을 만들 수도 있습니다. 이렇게 하려면 TransformConstraint에서 상속되는 스크립트를 만들고 추상 ConstraintType 속성 및 추상 ApplyConstraint 메서드를 구현합니다. 새 제약 조건이 드롭다운에 표시되어야 하며 개체에 추가될 때 Constraint Manager에 자동으로 등록되어야 합니다.

MRTK에서 제공하는 모든 제약 조건은 다음 속성을 공유합니다.

Hand Type은 제약 조건이 한 손, 양손 또는 두 종류의 조작에 사용되는지 여부를 지정합니다. 이 속성은 플래그이므로 두 옵션을 모두 선택할 수 있습니다.

  • One-handed: 선택할 경우 한 손으로 조작하는 동안 제약 조건이 사용됩니다.
  • Two-handed: 선택할 경우 양손으로 조작하는 동안 제약 조건이 사용됩니다.

ProximityType은 제약 조건이 근거리, 원거리 또는 두 종류의 조작에 사용되는지 여부를 지정합니다. 이 속성은 플래그이므로 두 옵션을 모두 선택할 수 있습니다.

  • Near: 선택할 경우 근거리 조작 중에 제약 조건이 사용됩니다.
  • Far: 선택할 경우 원거리 조작 중에 제약 조건이 사용됩니다.

FaceUserConstraint

이 제약 조건은 개체가 항상 사용자와 마주보도록 개체의 회전을 제한합니다. Face Away 옵션은 양수 또는 음수 Z축이 사용되는지 여부를 제어합니다.

Demonstration of FaceUserConstraint

MinMaxScaleConstraint

이 제약 조건은 개체의 스케일링을 제한하므로 사용자가 비정상적으로 작거나 큰 크기로 개체를 스케일링하지 못하도록 하는 데 유용합니다. 핸들 기반 스케일링(BoundsControl 사용) 및 양손 직접 스케일링(ObjectManipulator 사용)에서 모두 작동합니다. Relative to initial state 옵션은 특정 MinimumMaximum scale 값이 절대 값인지, 아니면 개체의 초기 스케일링에 곱해지는지 여부를 정의합니다.

Demonstration of MinMaxScaleConstraint