HoloLens2:我想在用户正在寻找的表面网格上绘制目标

时间:2019-04-10 16:40:13

标签: hololens mrtk

在HoloLens 2上,我想在用户正在查看的曲面网格上绘制目标。如何获得代表眼射线的矢量指针?我相信光标已经找到了该光线指示器与曲面网格碰撞的位置,但是,它从未使用过眼睛光线。谢谢。

3 个答案:

答案 0 :(得分:0)

对于HoloLens 1和HoloToolKit,我使用了此-Worldposition:

Vector3 hitPosition = GazeManager.Instance.HitPosition;

对于LocalPosition:

Vector3 hitPosition = transform.InverseTransformPoint(GazeManager.Instance.HitPosition);

新的MRTK V2是否像Gazemanager一样? 在相机上应该是一个包含光线投射的脚本...

编辑:您是否正在寻找您的眼睛坐标(因为我读到HoloLens 2包含眼动追踪功能?)?

答案 1 :(得分:0)

如果您使用的是MRTK v2,则需要查看从代码中调用MixedRealityToolkit.InputSystem.GazeProviderMixedRealityToolkit.InputSystem.EyeGazeProvider的情况。如果您要寻找视线,则需要先检查IsEyeGazeValid property,然后再询问视线数据。您还需要确保已选中GazeProvider上的“ Prefer Eye Eye Gaze”,并在编辑器需要的情况下在输入模拟配置文件中打开了眼睛注视模拟。

Prefer Eye Gaze

否则,如果您想凝视,HitPosition和相关属性应提供所需的信息。

有关MRTK v2中的眼睛跟踪的其他信息,可以在documentation中找到。

答案 2 :(得分:0)

The eye tracking的访问方式如下

  1. 将“ gazeInput”作为功能添加到您的appx清单中

  2. 在调用任何眼动跟踪API之前,请先致电EyesPose.RequestAccessAsync()

  3. 要求用户批准
  4. 凝视射线

if(Windows.Perception.People.EyesPose.IsSupported)
{
    var gaze = Windows.UI.Input.Spatial.SpatialPointerPose.TryGetAtTimestamp(coordinateSystem, DateTime.Now).Eyes.Gaze;
    if(gaze != null)
    {
        var dir = gaze.Direction;
        var org = gaze.Origin;
    }
}