MRTK에서 눈 지원 탐색 — MRTK2

MRTK

슬레이트에서 정보를 읽는 Imagine 표시된 텍스트의 끝에 도달하면 텍스트가 자동으로 위로 스크롤되어 더 많은 콘텐츠를 표시합니다. 또는 보고 있는 위치를 유창하게 확대할 수 있습니다. 또한 지도는 콘텐츠를 자동으로 조정하여 관심 있는 항목을 보기 필드 내에 유지합니다. 또 다른 흥미로운 응용 프로그램은 자동으로 전면에보고있는 홀로그램의 부분을 가져와서 3D 홀로그램의 핸즈프리 관찰이다. 다음은 눈에 지원되는 탐색의 컨텍스트에서 이 페이지에 설명된 몇 가지 예입니다.

다음 설명에서는 MRTK 장면에서 시선 추적을 설정하는 방법과 MRTK Unity에서 시선 추적데이터에 액세스하는 기본 사항에 대해 이미 잘 알고 있다고 가정합니다. 다음에 설명된 예제는 모두 (Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation) 장면의 EyeTrackingDemo-03-Navigation 일부입니다.

요약: 텍스트의 자동 스크롤, 시선 응시 지원 팬 및 가상 맵의 확대/축소, 핸즈프리 응시 방향 3D 회전.

자동 스크롤

자동 스크롤을 사용하면 사용자가 손가락을 떼지 않고 텍스트를 스크롤할 수 있습니다. 읽기만 계속하면 사용자가 보는 위치에 따라 텍스트가 자동으로 위아래로 스크롤됩니다. 제공된 EyeTrackingDemo-03-Navigation 예제(Assets/MRTK/Examples/Demos/EyeTracking/Scenes)에서 시작할 수 있습니다. 이 예제에서는 TextMesh 구성 요소를 사용하여 새 텍스트를 유연하게 로드하고 서식을 지정할 수 있습니다. 자동 스크롤을 사용하도록 설정하려면 텍스트 상자의 충돌체 구성 요소에 다음 두 스크립트를 추가하면 됩니다.

ScrollRectTransf

TextMesh를 스크롤하거나 일반적으로 RectTransform 구성 요소를 말하면 ScrollRectTransf 스크립트를 사용할 수 있습니다. RectTransform 대신 텍스처를 스크롤하려면 ScrollRectTransf 대신 ScrollTexture를 사용합니다. 다음에서는 Unity 편집기에서 사용할 수 있는 ScrollRectTransf 의 매개 변수에 대해 자세히 설명합니다.

매개 변수 설명
LimitPanning 사용하도록 설정하면 해당 경계에서 스크롤 가능한 콘텐츠가 중지됩니다.
RectTransfToNavigate 스크롤할 RectTransform에 대한 참조입니다.
RefToViewport 스크롤 가능한 콘텐츠의 부모 RectTransform 을 참조하여 올바른 오프셋 및 경계를 확인합니다.
AutoGazeScrollIsActive 사용하도록 설정하면 사용자가 활성 영역을 보면 텍스트가 자동으로 스크롤됩니다(예: 세로 스크롤 속도가 0이 아닌 경우 스크롤 패널의 위쪽 및 아래쪽 부분).
ScrollSpeed_x 0과 같지 않은 값으로 설정하면 가로 스크롤이 활성화됩니다. 음수 값은 스크롤 방향의 변화를 의미합니다. 왼쪽에서 오른쪽으로, 오른쪽에서 왼쪽으로.
ScrollSpeed_y 0과 같지 않은 값으로 설정하면 세로 스크롤이 활성화됩니다. 음수 값은 스크롤 방향의 변화를 의미합니다( 최대 아래로 또는 아래로).
MinDistFromCenterForAutoScroll 대상의 적중 상자 가운데(0, 0)에서 스크롤할 x 및 y의 최소 거리를 정규화했습니다. 따라서 값의 범위는 0(항상 스크롤)에서 0.5(스크롤 안 됨) 사이여야 합니다.
UseSkimProofing 사용하도록 설정하면 주변을 빠르게 살펴볼 때 갑작스러운 스크롤 이동을 방지할 수 있습니다. 이렇게 하면 스크롤의 응답성이 낮아질 수 있습니다. SkimProofUpdateSpeed 값으로 튜닝할 수 있습니다.
SkimProofUpdateSpeed 값이 낮을수록 스키밍 후 스크롤 속도가 느려집니다. 권장 값: 5.

Eye-supported scroll setup in Unity

EyeTrackingTarget

EyeTrackingTarget 구성 요소를 연결하면 시선 응시 관련 이벤트를 유연하게 처리할 수 있습니다. 스크롤 샘플은 사용자가 패널을 보고 사용자가 패널을 바라보 면 중지되는 스크롤 텍스트를 보여 줍니다. Eye-supported scroll setup in Unity: EyeTrackingTarget

응시 지원 팬 및 확대/축소

Who 집을 검색하거나 완전히 새로운 장소를 탐색하기 위해 전에 가상지도를 사용하지 않았습니까? 시선 추적을 사용하면 관심 있는 부분을 정확히 직접 살펴볼 수 있으며 확대하면 거리의 과정을 원활하게 따라 이웃을 탐험할 수 있습니다! 이는 지리적 지도를 탐색하는 데 유용할 뿐만 아니라 사진, 데이터 시각화 또는 라이브 스트리밍 의료 이미지의 세부 정보를 확인하는 데도 유용합니다. 앱에서 이 기능을 사용하는 것은 쉽습니다! 텍스처에 렌더링된 콘텐츠(예: 사진, 스트리밍된 데이터)의 경우 PanZoomTexture 스크립트를 추가하기만 하면 됩니다. RectTransform의 경우 PanZoomRectTransf를 사용합니다. 자동 스크롤 기능을 확장하면 기본적으로 세로 및 가로로 동시에 스크롤하고 사용자의 현재 포커스 지점 바로 주위에 콘텐츠를 확대할 수 있습니다.

매개 변수 설명
LimitPanning 사용하도록 설정하면 해당 경계에서 스크롤 가능한 콘텐츠가 중지됩니다.
HandZoomEnabledOnStartup 손 제스처를 자동으로 사용하여 확대/축소 제스처를 수행할 수 있는지 여부를 나타냅니다. 처음에는 실수로 확대/축소 작업을 트리거하지 않도록 사용하지 않도록 설정할 수 있습니다.
RendererOfTextureToBeNavigated 탐색할 텍스처의 참조된 렌더러입니다.
Zoom_Acceleration 로지스틱 속도 함수 매핑의 가파르기를 정의하는 확대/축소 가속입니다.
Zoom_SpeedMax 최대 확대/축소 속도입니다.
Zoom_MinScale 확대를 위한 텍스처의 최소 배율(예: 0.5f(원래 크기의 절반))
Zoom_MaxScale 축소를 위한 텍스처의 최대 배율(예: 1f(원래 크기) 또는 2.0f(원래 크기의 두 배)입니다.
Zoom_TimeInSecToZoom 시간 지정된 확대/축소: 트리거되면 지정된 시간(초)에 대해 확대/축소가 수행됩니다.
Zoom_Gesture 확대/축소에 사용할 손 제스처의 유형입니다.
--- ---
Pan_AutoScrollIsActive 사용하도록 설정하면 사용자가 활성 영역을 보면 텍스트가 자동으로 스크롤됩니다(예: 세로 스크롤 속도가 0이 아닌 경우 스크롤 패널의 위쪽 및 아래쪽 부분).
Pan_Speed_x 0과 같지 않은 값으로 설정하면 가로 스크롤이 활성화됩니다. 음수 값은 스크롤 방향의 변화를 의미합니다. 왼쪽에서 오른쪽으로, 오른쪽에서 왼쪽으로.
Pan_Speed_y 0과 같지 않은 값으로 설정하면 세로 스크롤이 활성화됩니다. 음수 값은 스크롤 방향의 변화를 의미합니다( 최대 아래로 또는 아래로).
Pan_MinDistFromCenter 대상의 적중 상자 가운데(0, 0)에서 스크롤할 x 및 y의 최소 거리를 정규화했습니다. 따라서 값의 범위는 0(항상 스크롤)에서 0.5(스크롤 안 됨) 사이여야 합니다.
UseSkimProofing 사용하도록 설정하면 주변을 빠르게 살펴볼 때 갑작스러운 스크롤 이동을 방지할 수 있습니다. 이렇게 하면 스크롤의 응답성이 낮아질 수 있습니다. SkimProofUpdateSpeed 값으로 튜닝할 수 있습니다.
SkimProofUpdateSpeed 값이 낮을수록 스키밍 후 스크롤 속도가 느려집니다. 권장 값: 5.

Eye-supported pan and zoom setup in Unity

주의 기반 3D 회전

Imagine 시스템이 당신의 마음을 읽고 당신을 향해 항목을 설정하는 것을 알고있는 것처럼 - 3D 개체와 당신이보고 싶은 부품이 더 밀접하게 당신을 향해 회전보고! 즉, 손가락을 들어 올리지 않고 홀로그램의 모든 측면을 조사 할 수 있도록 주의 기반 3D 회전에 대한 아이디어입니다. 이 동작을 사용하도록 설정하려면 충돌기 구성 요소를 사용하여 GameObject 부분에 OnLookAtRotateByEyeGaze 스크립트를 추가하면 됩니다. 홀로그램이 회전하는 속도와 방향을 제한하기 위해 아래에 나열된 여러 매개 변수를 조정할 수 있습니다.

당신이 상상할 수 있듯이, 항상 활성화이 동작을 갖는 것은 신속하게 붐비는 장면에서 꽤 산만 될 수 있습니다. 이 때문에 이 동작을 사용하지 않도록 설정한 다음 음성 명령을 사용하여 빠르게 사용하도록 설정할 수 있습니다. 또는 포커스가 있는 대상을 선택할 수 있고 앞에서 날아갈 수 있는 EyeTrackingDemo-03-NavigationTargetMoveToCamera 를 사용하기 위한 예제(Assets/MRTK/Examples/Demos/EyeTracking/Scenes)를 추가했습니다. 단순히 "내게 오세요"라고 말합니다.

근거리 모드에서 자동 회전 모드가 자동으로 사용하도록 설정됩니다. 그 모드에서, 당신은 단순히 뒤로 기대어 그것을보고, 주위를 걷고 또는 잡아 손으로 회전 밖으로 도달 중 모든 면에서 그것을 관찰 할 수 있습니다. 대상을 해제하면( & 꼬집거나 "다시 보내기"라고 말함) 원래 위치로 돌아가서 멀리서 반응하지 않습니다.

매개 변수 설명
SpeedX 가로 회전 속도입니다.
빠른 수직 회전 속도입니다.
InverseX 가로 회전 방향을 반전합니다.
역방향 세로 회전 방향을 역방향으로 변환합니다.
RotationThreshInDegrees '대상에 응시'와 '대상에 카메라' 사이의 각도가 이 값보다 작으면 아무 작업도 수행하지 않습니다. 이는 작은 지터리 회전을 방지하기 위한 것입니다.
MinRotX 최소 가로 회전 각도입니다. 이는 회전을 다른 방향으로 제한하기 위한 것입니다.
MaxRotX 최대 가로 회전 각도입니다. 이는 회전을 다른 방향으로 제한하기 위한 것입니다.
MinRotY x축 주위의 회전을 제한하기 위한 최소 세로 회전 각도입니다.
MaxRotY 최대 세로 회전 각도로 y축 주위의 회전을 제한합니다.

Eye-supported 3D rotation setup in Unity

요약하자면, 위의 스크립트를 사용하면 텍스트 스크롤, 확대/축소 및 텍스처 이동, 3D 홀로그램 조사 회전과 같은 다양한 입력 탐색 작업에 시선 응시를 사용할 수 있습니다.

참조


"MixedRealityToolkit의 시선 추적"으로 돌아가기