API 接口目录
Xvisio SDK 文档主页

Eye Track眼动追踪接口


1. 设置眼动配置文件路径

public static extern void xslam_gaze_set_config_path(string coe_path);

Input:

coe_path 配置文件路径,支持自定义,默认路径为"/data/misc/xr/"

2. 开启眼动

public static extern bool xslam_start_gaze();
返回值:
true-成功
false-失败

3. 复用之前已生成的自定义校准文件

public static extern int xslam_gaze_calibration_apply(string file);
返回值:
0-成功
-1-失败

Input:

file 自定义校准文件路径,需要与校准时xslam_gaze_calibration_retrieve传入的路径一致!

4. 设置眼动曝光增益

public static extern bool xslam_set_exposure(int leftGain, float leftTimeMs, int rightGain, float rightTimeMs);
返回值:
true-成功
false-失败

Input:

leftGain 左眼增益,建议为10
leftTimeMs 左眼曝光时间,建议为6
rightGain 右眼增益,建议为10
rightTimeMs 右眼曝光时间,建议为6

5. 设置眼动led亮度

public static extern bool xslam_set_bright(int eye, int led, int brightness);
返回值:
true-成功
false-失败

注意:停用眼动功能时,需要关闭led,即设置brightness为0:
xslam_set_bright(2, 8, 0);

Input:

eye 0-左眼,1-右眼,2-both左右眼
led led灯
brightness 亮度

6. 设置眼动回调

public static extern int xslam_set_gaze_callback(fn_gaze_callback cb);
返回值:
0-成功
-1-失败

fn_gaze_callback定义:
public delegate void fn_gaze_callback(XV_ET_EYE_DATA_EX gazedata);

Output:
XV_ET_EYE_DATA_EX gazedata;

XV_ET_EYE_DATA_EX结构体:

public struct XV_ET_EYE_DATA_EX
{
    public ulong timestamp;   //时间戳
    public int recommend;    //是否存在推荐的注视点 0-无推荐注视点, 1-使用左眼作为推荐注视点, 2-使用右眼作为推荐注视点
    public XV_ET_GAZE_POINT recomGaze; //推荐注视点的数据
    public XV_ET_GAZE_POINT leftGaze;  //左眼注视点的数据
    public XV_ET_GAZE_POINT rightGaze; //右眼注视点的数据

    public XV_ET_PUPIL_INFO leftPupil;  //左眼瞳孔数据
    public XV_ET_PUPIL_INFO rightPupil; //右眼瞳孔数据

    public int leftEyeMove;//0-没有检测到左眼移动. 1-左眼状态为眨眼. 2-左眼状态正常    
    public int rightEyeMove;//0-没有检测到右眼移动. 1-右眼状态为眨眼. 2-右眼状态正常
    public float ipd; //瞳距数据,在眼动校准后数据才会更新
};

XV_ET_GAZE_POINT结构体:
public struct XV_ET_GAZE_POINT
{
    public XV_ETPoint3D gazePoint;     //注视点坐标
    public XV_ETPoint3D gazeOrigin;    //注视点中心
    public XV_ETPoint3D gazeDirection; //注视点方向
    public float re;                   //注视点置信度
    
};

XV_ET_PUPIL_INFO结构体:
public struct XV_ET_PUPIL_INFO
{
    public xv_ETPoint2D pupilCenter; //瞳孔数值(0-1),归一化数据!
};

XV_ETPoint3D结构体:
public struct XV_ETPoint3D
{
    public float x;
    public float y;
    public float z;
}

注意:在使用回调返回的眼动数据时,需要根据应用场景进行不同的处理
若场景为0dof模式,则可以直接使用眼动数据
若场景为6dof模式,则需要将眼动数据与slam 6dof数据进行关联
建议参考XVETcube示例场景中的Rayhit脚本

7. 反注册眼动回调

public static extern bool xslam_unset_gaze_callback();
返回值:
true-成功
false-失败

8. 停止眼动

public static extern bool xslam_stop_gaze();
返回值:
true-成功
false-失败

API 接口目录
Xvisio SDK 文档主页