zl程序教程

您现在的位置是:首页 >  工具

当前栏目

aGlass学习笔记 1

2023-09-27 14:25:50 时间

1, aGlass 官网 http://www.aglass.com/ 有使用和安装文档已经一个unitydemo.

Note:

$1,不要把镜片给装反了。

近视镜片安装:将镜片的凸面(向下),根据 Vive 透镜的对应形状,轻轻压入 aGlass 配件的凹槽内。

$2,安装时有技巧。

点击链接 http://www.aglass.com/assets/aGlass-DKII-Assembly-Guide-Chs.mp4 
1) 拨动 Vive 两侧镜头距离旋钮,使镜头距离达到最大。并拨动 Vive 的 IPD(瞳孔间距)旋钮,使瞳
距达到最宽。

经验是把镜片和镜框分开,先装镜框,后装镜片,会比较容易,取的时候也一样。

2) 以左眼配件为例,将 aGlass 配件窄边向上(与 Vive 镜头底座的角度相比,稍微逆时针旋转一定角
度),置入 Vive 镜头上方,边顺时针旋转,边将宽边向下置入,调整配件位置,最终使配件固定在
镜片之上的位置。

这个方位是很重要的,不然放不进去。要取出来先首先按1)把头盔设备调松;然后把镜片向上;其次旋转为2)放入的方向;最后轻松取出。Good Luck.

3) 有线连接的头盔打开方式。

4)如果是无线设备则,不需要第三步。只需要第找一根比较长的usb线连接到电脑上即可。

 

2, unity脚本中如何调用相关函数。

1)把aGlass的dll放到工程目录中。

先从安装的目录中找到dll。

2)把Plugins文件夹整个复制过去。

3)脚本中可以调用,先引用其命名空间。

using aGlassDKII;

3,把官方demo中的三个脚本合为一个;

EyeGazeTracking.cs

using System.Collections;  
using System.Collections.Generic;  
using UnityEngine;  
using aGlassDKII;  
using UnityEngine.SceneManagement;  


public class EyeGazeTracking : MonoBehaviour {  


	//把eyetracking的x,y坐标给Vances上的小图片  
	public GameObject coursor;  
	public GameObject lighter;  

	private float x, y;//眼动的坐标  
	private int count;  

	// Use this for initialization  
	void Start () {  
		aGlass.Instance.aGlassStart ();  

		x = 0.0f;  
		y = 0.0f;  
		count = 0;  
	}  

	// Update is called once per frame  
	void Update () {  
        // 如果写为lighter是不行的,为什么没有想明白?
		GetPos (lighter.gameObject, ref x, ref y);  
		coursor.transform.localPosition = new Vector2 ((x - 0.5f)*1512, (0.5f - y)*1680);  

		//lighter.transform.LookAt (coursor.gameObject.transform);  
		lighter.transform.LookAt (coursor.transform);  
		RayDetect();  

		if (x != 0.0f && y != 0.0f) {
			print ("x is " + x);  
			print ("y is " + y);  
		}

	}  

	void OnDestroy()  
	{  
		aGlass.Instance.aGlassStop ();  
	}  

	public void GetPos (GameObject c, ref float cx, ref float cy)  
	{  
		if (aGlass.Instance.GetEyeValid()) {  
			count = 0;  
			if (!c.activeSelf) {  
				c.SetActive (true);  
			}  
			cx = aGlass.Instance.GetGazePoint().x;  
			cy = aGlass.Instance.GetGazePoint().y;  
		} else {  
			count++;  
			if (count > 10 && c.activeSelf) {  
				c.SetActive (false);  
			}  
		}  
	}  

	void RayDetect()  
	{  
		RaycastHit hit;  
		if (Physics.Raycast(this.transform.position, coursor.transform.position - this.transform.position, out hit))  
		{  
			hit.transform.gameObject.GetComponent<Renderer>().material.color = Color.red;  
			print("gameObject.name" + hit.transform.gameObject.name);  

			if (hit.transform.gameObject.tag == "Box")  
			{  
				hit.transform.gameObject.GetComponent<Renderer>().material.color = Color.red;  
				print(hit.transform.gameObject.name);  
			}  
		}  
	}  

}   

相关设置