EyeTracking을 하기 위해 Gaze Method를 활용해 데이터를 추출할 것이다.
https://docs.cognitive3d.com/unity/gaze-fixations/
using UnityEngine;
using Varjo.XR;
public class RecordEyeTrackData : MonoBehaviour
{
public LayerMask imageLayerMask; //이미지 레이어 설정
void Update()
{
VarjoEyeTracking.GazeData gazeData = VarjoEyeTracking.GetGaze();
if (gazeData.status != VarjoEyeTracking.GazeStatus.Invalid)
{
Vector3 gazeOrigin = Camera.main.transform.TransformPoint(gazeData.gaze.origin);
Vector3 gazeDirection = Camera.main.transform.TransformDirection(gazeData.gaze.forward);
RaycastHit hit;
if (Physics.Raycast(gazeOrigin, gazeDirection, out hit, Mathf.Infinity, imageLayerMask))
{
GameObject gazedObject = hit.collider.gameObject;
// 위치값 저장
RecordGazedImagePosition(gazedObject.transform.position);
}
}
}
private void RecordGazedImagePosition(Vector3 position)
{
Debug.Log("Gazed Image Position: " + position);
}
}
데이터 접근함수 GetGaze이다. Varjo에서 제공하는 SDK의 함수로 데이터에 접근하였다.
여기서 중요한 유니티 개념이 있다. 바로 LayerMask이다.
충돌하고 싶은 수많은 객체들을 layer로 묶어 계산처리했다.
그리고 아이트래킹을 통해 바라본 위치값을 저장한다.
RecordGazeImagePosition이다.
이상으로 VR에서 EyeTracking data를 추출하는 방법이다. V
'Programming skills > Unity' 카테고리의 다른 글
[유니티] 서버와의 영상 정보 불러오기 (0) | 2023.10.28 |
---|---|
[Unity] 람다식과 델리게이트(delegate) (0) | 2023.10.18 |
[Unity]Awake 와 Start의 차이 (0) | 2023.10.12 |
[Unity] 생명주기 Life Cycle (0) | 2023.10.11 |
유니티 오브젝트 생성시 하위 오브젝트로 생성하기 (0) | 2023.08.17 |