2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > HTC vive Eye pro眼动追踪初识

HTC vive Eye pro眼动追踪初识

时间:2019-08-11 12:16:10

相关推荐

HTC vive Eye pro眼动追踪初识

1, 安装VIVE_SRanipalInstaller_1.0.3.0

/download/moonlightpeng/11237948

官方的下载地址

/resources/?site=cn

/resources/downloads/?site=cn

2,在unity工程中导入相应的package

Vive-SRanipal-Unity-Plugin.unitypackage

/download/moonlightpeng/11237918

3, 标定

方案1 在没有运行工程时,直接在头盔中通过手柄来标定。

方案2 用unitypackage里面的标定功能。

4, 在工程中用红色的小球表示眼睛的注视点,把自动的紫色的射线不显示。

直接把Line Renderer不要勾选。

5 修改对应的脚本 SRanipal_GazeRaySample.cs

//========= Copyright , HTC Corporation. All rights reserved. ===========using UnityEngine;using UnityEngine.Assertions;namespace ViveSR{namespace anipal{namespace Eye{public class SRanipal_GazeRaySample : MonoBehaviour{private GameObject gazePointer;public int LengthOfRay = 25;[SerializeField] private LineRenderer GazeRayRenderer;private void Start(){gazePointer = new GameObject();gazePointer = GameObject.Find("GazePointer");if (gazePointer){gazePointer.GetComponent<MeshRenderer>().enabled = false;}else{Debug.LogError("cannot find object of gazePointer");}if (!SRanipal_Eye_Framework.Instance.EnableEye){enabled = false;return;}Assert.IsNotNull(GazeRayRenderer);}private void Update(){if (SRanipal_Eye_Framework.Status != SRanipal_Eye_Framework.FrameworkStatus.WORKING &&SRanipal_Eye_Framework.Status != SRanipal_Eye_Framework.FrameworkStatus.NOT_SUPPORT) return;Vector3 GazeOriginCombinedLocal, GazeDirectionCombinedLocal;if (SRanipal_Eye.GetGazeRay(BINE, out GazeOriginCombinedLocal, out GazeDirectionCombinedLocal)) { }else if (SRanipal_Eye.GetGazeRay(GazeIndex.LEFT, out GazeOriginCombinedLocal, out GazeDirectionCombinedLocal)) { }else if (SRanipal_Eye.GetGazeRay(GazeIndex.RIGHT, out GazeOriginCombinedLocal, out GazeDirectionCombinedLocal)) { }else return;Vector3 GazeDirectionCombined = Camera.main.transform.TransformDirection(GazeDirectionCombinedLocal);GazeRayRenderer.SetPosition(0, Camera.main.transform.position - Camera.main.transform.up * 0.05f);GazeRayRenderer.SetPosition(1, Camera.main.transform.position + GazeDirectionCombined * LengthOfRay);Ray ray = new Ray(Camera.main.transform.position - Camera.main.transform.up * 0.05f, GazeDirectionCombined);Debug.DrawLine(Camera.main.transform.position - Camera.main.transform.up * 0.05f, Camera.main.transform.position + GazeDirectionCombined * LengthOfRay, Color.red); //这个就是绘制出的射线了,包含发射位置,发射距离和射线的颜色; RaycastHit hitInfo;if (Physics.Raycast(ray, out hitInfo, 100)){DrawLineInGame(hitInfo.point);GameObject hitme = hitInfo.collider.gameObject; }else{gazePointer.GetComponent<MeshRenderer>().enabled = false;}}void DrawLineInGame(Vector3 point){//render the position of spheregazePointer.GetComponent<MeshRenderer>().enabled = true;gazePointer.transform.position = point;}}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。