c# - 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;
}
解决方案
推荐阅读
- ios - 在 iOS 14.x 中移除后退按钮导航菜单(没有方法调配)
- javascript - 追加后表单数据对象为空
- python - 我正在使用moviepy来编辑视频剪辑,但是向我抛出了一个错误'TypeError:'str' object is not callable'
- java - 通过用户输入命名按钮
- javascript - Metro Builder: SyntaxError: Unexpected token = 升级到 React Native 0.65.1 后
- c# - 使用 c# 未为 azure 函数正确提取密钥库机密
- laravel - 模型创建返回没有 ID 的对象
- c# - 我如何让它显示数字?
- python - 在哪里可以找到 Flectra 的模型字段属性列表?
- node.js - 如何在单个 Heroku 应用程序中部署前端(React.js)和后端(Node.js)