【发布时间】:2019-05-01 16:16:02
【问题描述】:
在 HoloLens 2 上,我想在用户正在查看的表面网格上绘制一个目标。如何获得代表眼睛光线的矢量指针?我相信光标已经找到了这个光线指针与表面网格碰撞的位置,但是,它从不使用眼睛光线。谢谢。
【问题讨论】:
在 HoloLens 2 上,我想在用户正在查看的表面网格上绘制一个目标。如何获得代表眼睛光线的矢量指针?我相信光标已经找到了这个光线指针与表面网格碰撞的位置,但是,它从不使用眼睛光线。谢谢。
【问题讨论】:
对于 HoloLens 1 和 HoloToolKit,我使用了这个 - Worldposition:
Vector3 hitPosition = GazeManager.Instance.HitPosition;
对于本地位置:
Vector3 hitPosition = transform.InverseTransformPoint(GazeManager.Instance.HitPosition);
在新的 MRTK V2 中是否有类似 Gazemanager 的东西? 在相机上应该是一个包含光线投射的脚本......
编辑:等一下,你是在寻找眼睛的坐标吗(因为我读到 HoloLens 2 包含眼球追踪功能)?
【讨论】:
如果您使用的是 MRTK v2,则需要查看从您的代码中调用 MixedRealityToolkit.InputSystem.GazeProvider 或 MixedRealityToolkit.InputSystem.EyeGazeProvider。如果您专门寻找眼睛凝视,您需要在询问凝视数据之前检查IsEyeGazeValid property。您还需要确保已在 GazeProvider 上选中 Prefer Eye Gaze,并在编辑器需要时在输入模拟配置文件中打开眼睛注视模拟。
否则,如果您想要头部注视,HitPosition 和相关属性应该提供您需要的信息。
有关 MRTK v2 中眼动追踪的更多信息,请访问documentation。
【讨论】:
The eye tracking 访问如下
将“gazeInput”作为 Capability 添加到您的 appx 清单中
在调用任何眼动追踪 API 之前,请致电 EyesPose.RequestAccessAsync() 请求用户批准
采用凝视射线
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;
}
}
【讨论】: