다음을 통해 공유


시선 추적 - MRTK3

개요

시선 추적은 Unity 입력 시스템에서 기본적으로 처리되지만 MRTK3는 시선 추적을 쉽게 추가할 수 있는 유용한 도우미를 제공합니다.

기본적으로 프리팹에는 MRTK XR Rig 이미 MRTK3의 응시 컨트롤러가 있습니다. 를 사용하지 MRTK XR Rig 않고 MRTK3의 응시 컨트롤러를 사용하려는 경우 Unity 장면에 MRTK Gaze Controller 프리팹을 추가합니다.

MRTK의 응시 컨트롤러 프리팹에는 Unity의 눈과 머리 응시 입력에 바인딩되는 Unity XR 컨트롤러 및 상호 작용기가 있습니다. 컨트롤러의 동작은 시선 응시가 머리 응시보다 선호되도록 설정됩니다. 시선 응시가 비활성화되거나 구성되지 않았거나 보정되지 않은 경우 컨트롤러는 머리 응시 포즈를 대신 사용합니다. MRTK3의 응시 컨트롤러의 작업 바인딩이 구성된 방법에 대한 자세한 내용은 포함된 MRTK 기본 입력 작업 Unity 자산을 참조하세요.

MRTK 기본 입력 작업 Unity 자산 내의 응시 작업 설정을 보여 주는 이미지.

중요

OpenXR을 사용할 때 시선 추적을 사용하도록 설정하려면 시선 응시 상호 작용 프로필을 OpenXR의 상호 작용 프로필 구성에 추가해야 합니다. Unity 에서 OpenXR 설정을 구성하는 방법에 대한 자세한 내용은 MRTK를 사용하여 새 OpenXR 프로젝트 설정을 참조하세요.

또한 유니버설 Windows 플랫폼 사용하는 경우 프로젝트 프로젝트 > 설정 > 게시 설정 >기능에서 GazeInput 기능을 추가해야 합니다.

유사 항목 응시 상호 작용기

MRTK3의 응시 컨트롤러는 사용자의 응시 방향에 따라 특정 원뿔 각도 및 거리 범위 내의 개체를 대상으로 지정하고 상호 작용하는 유사 응시 상호 작용 기술을 구현하는 Unity 상호 작용기인 를 사용하도록 FuzzyGazeInteractor설정되었습니다. 점수 매기기 시스템은 상호 작용에 적합성에 따라 잠재적 대상의 우선 순위를 지정하는 데 도움이 됩니다.

이 스크립트는 응시 상호 작용기의 동작을 제어하는 여러 필드와 속성을 정의합니다. 몇 가지 중요한 필드는 다음과 같습니다.

  • coneAngle: 응시를 통해 개체를 대상으로 간주할 각도입니다.
  • minGazeDistancemaxGazeDistance: 개체를 응시 대상으로 지정할 수 있는 최소 및 최대 거리입니다. distanceWeight, angleWeight, distanceToCenterWeight 및 angleToCenterWeight: 개체의 "응시 점수"를 결정하는 데 사용되는 다양한 조건에 할당된 가중치입니다.
  • precision: 유사 응시 물리학 광선 캐스트의 정밀도를 조정하는 데 사용되는 값입니다.
  • performAdditionalRaycast: 점수 매기기 결과를 개선하기 위해 시선 응시 다음에 추가 광선이 수행되는지 여부를 나타내는 플래그입니다.
  • precisionCurve: 대상까지의 거리를 기준으로 정밀도 수준을 제어하는 데 사용되는 애니메이션 곡선입니다.

스크립트는 기본 클래스 XRRayInteractor 의 일부 메서드를 재정의하여 자체 구현을 제공합니다. 주목할 만한 재정의된 메서드는 다음과 같습니다.

  • IsHitValid: 상호 작용 가능한 개체의 적중이 coneAngle, minGazeDistance 및 maxGazeDistance 필드에 정의된 각도 및 거리 조건에 따라 유효한 것으로 간주되는지 여부를 결정합니다.
  • ScoreHit: 거리, 광선 캐스트 적중 각도 및 대상 중심 각도에 따라 상호 작용 가능 및 관련 광선 캐스트 적중을 채점합니다. 점수는 가중치 요인의 조합입니다.
  • ConecastScoreCompare: 레이캐스트 적중을 오름차순으로 점수별로 비교합니다.
  • GetValidTargets: 광선캐스트 적중 및 점수에 따라 응시 상호 작용기에서 유효한 대상을 검색합니다.

상호 작용기 Dwell Manager

MRTK3의 응시 컨트롤러도 스크립트 구성 요소로 InteractorDwellManager 설정됩니다. 이 스크립트는 Unity의 XR 상호 작용 도구 키트를 사용하여 상호 작용 가능한 개체에 대한 체류 기반 선택을 구현합니다. 체류 타이머를 관리하고, 선택을 트리거하고, 지정된 상호 작용기의 상호 작용 가능 개체의 체류 상태를 추적합니다. 응시 체류 선택을 활용하려면 대상 상호 작용 가능 개체가 MRTK3이고 StatefulInteractable 플래그가 Use Gaze Dwell 설정되어 있어야 합니다.

참고

체류가 예측할 수 없거나 의도하지 않은 UI 요소 활성화로 이어질 수 있으므로 손 또는 음성 입력이 가능한 경우 체류 기반 선택은 권장되지 않습니다. 애플리케이션은 접근성 또는 음성 및 손 입력을 사용할 수 없는 시나리오에 대한 체류 입력을 고려할 수 있습니다. 체류를 가장 잘 사용하는 방법에 대한 디자인 지침은 시선 응시 및 체류 및헤드 시선 및 체류를 참조하세요.

호버 상태를 입력한 후 이 상호 작용기는 체류 트리거 시간이 지나기 전에 계속 선택합니다. 그 후에는 상호 작용 가능 항목에서 선택이 트리거됩니다. 다음을 사용하여 체류 설정을 구성할 수 있습니다.

  • DwellTriggerTime: 호버링된 상태를 입력한 후 상호 작용기가 상호 작용 가능 항목을 계속 선택하는 기간을 결정합니다.