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);
}
}
}
}
相关设置