首页 > 解决方案 > Hololens 2 的光线投射问题

问题描述

我在 Unity 2019.4.9 中有一个适用于 Hololens 2 的 MRTK 应用程序,我需要从相机光线投射到空间网格以创建对象实例。

以下方法返回带有与网格碰撞点的 RaycastHit,并需要VIEWPORT中的坐标作为参数(值介于 0 和 1 之间)。

(0, 0) = 左下角。

(1, 1) = 右上角。

按照这种方法,当我给出坐标(0.5,0.5)时,对象会正确显示。但是当我离开中心时,物体看起来离碰撞点越来越远。

物体倾向于朝向中心放置。例如,如果我想放在右边,它看起来向左移位,每个方向都会发生相同的逻辑。越靠近屏幕边缘,精度越差。

有谁知道可能出了什么问题?我正在使用 ViewportPointToRay。

private bool GetWorldPoint(Vector2 p, out RaycastHit hit)
{
    hit = default;
    Ray ray = Camera.main.ViewportPointToRay(p);
    if (Physics.Raycast(ray, out RaycastHit h, Mathf.Infinity, spatialLayer))
    {
        hit = h;
        return true;
    }
    return false;
}

标签: c#unity3dhololensmrtk

解决方案


使用 MRTK 我建议您阅读有关指针的更多信息,它们为您提供了统一的 API 来获取每种类型指针的世界交点,请参阅指针结果


推荐阅读