在 HoloLens 2 上,我想在用户正在查看的表面网格上绘制一个目标。如何获得代表眼睛光线的矢量指针?我相信光标已经找到了这个光线指针与表面网格碰撞的位置,但是,它从不使用眼睛光线。谢谢你。
3 回答
眼动追踪的访问方式如下
将“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;
}
}
对于 HoloLens 1 和 HoloToolKit,我使用了这个 - Worldposition:
Vector3 hitPosition = GazeManager.Instance.HitPosition;
对于本地位置:
Vector3 hitPosition = transform.InverseTransformPoint(GazeManager.Instance.HitPosition);
在新的 MRTK V2 中是否有类似 Gazemanager 的东西?在相机上应该是一个包含光线投射的脚本......
编辑:等等,你在寻找你眼睛的坐标吗(因为我读到 HoloLens 2 包括眼球追踪)?
如果您使用的是 MRTK v2,则需要查看 callMixedRealityToolkit.InputSystem.GazeProvider
或MixedRealityToolkit.InputSystem.EyeGazeProvider
from 您的代码。如果您专门寻找眼睛凝视,则需要在询问凝视数据之前检查该IsEyeGazeValid
属性。如果编辑器需要,您还需要确保您已在 GazeProvider 上选中 Prefer Eye Gaze,并在输入模拟配置文件中打开眼睛注视模拟。
否则,如果您想要头部注视,HitPosition和相关属性应该提供您需要的信息。
有关 MRTK v2 中眼动追踪的更多信息,请参阅文档。