Unity 中的头部凝视

凝视是用户确定应用在混合现实中创建的全息影像目标的主要方式。

实现头部凝视

从概念上讲,可以从用户头戴显示设备向前投影一束光线来确定头部凝视击中的目标。 在 Unity 中,用户的头部位置和方向通过相机公开,具体为 UnityEngine.Camera.main.transform.forwardUnityEngine.Camera.main.transform.position

调用 Physics.RayCast 后会提供 RaycastHit,其中包含有关碰撞的信息,包括 3D 碰撞点及头部凝视光线击中的其他 GameObject。

示例:实现头部凝视

void Update()
{
       RaycastHit hitInfo;
       if (Physics.Raycast(
               Camera.main.transform.position,
               Camera.main.transform.forward,
               out hitInfo,
               20.0f,
               Physics.DefaultRaycastLayers))
       {
           // If the Raycast has succeeded and hit a hologram
           // hitInfo's point represents the position being gazed at
           // hitInfo's collider GameObject represents the hologram being gazed at
       }
}

最佳实践

尽管上面的示例从更新循环中触发单束光线透射以查找用户头部指向的目标,但我们建议使用单个对象来管理所有头部凝视过程。 合并头部凝视逻辑可节省应用宝贵的处理能力,并将光线投射限制为每帧一次。

可视化头部凝视

就像计算机中使用的鼠标指针,应实现表示用户头部凝视的光标。 了解用户的目标对象会增加对交互目标的信心。

混合现实工具包中的头部凝视

可以通过 MRTK 中的输入管理器访问头部凝视。

下一个开发检查点

如果你遵循了我们规划的 Unity 开发旅程,则目前正处于探索 MRTK 核心构建基块的过程中。 从这里,你可以继续了解下一部分基础知识:

或跳转到混合现实平台功能和 API:

你可以随时返回到 Unity 开发检查点

另请参阅