c# - 通过畸变矩阵从鼠标转换光线

标签 c# unity3d raycasting oculus

我搜索了该板,以及 Oculus 板和 Unity 板。无法真正找到有帮助的东西。

我正在研究车辆模拟。在我们开始使用 Oculus 之前,它只是普通的第一人称视角。您使用赛车方向盘/踏板来驱动,使用鼠标来控制所有按钮和开关等。我们使用从屏幕上的鼠标点到世界的光线转换来与车辆中的各种控件进行交互。

现在我们使用的是 oculus,光线转换没有考虑 oculus 相机上使用的失真矩阵。所以你实际上并没有在你视觉上点击的地方转换光线。使用 Debug.DrawRay 我发现它有点偏离。可以肯定的是,我通过 OVRCameraController 上的检查器禁用了镜头校正,果然光线转换再次工作。

射线本身的计算方式与从鼠标点发射时的常用方式相同: ScreenPointToRay(Input.mousePosition);

有人知道如何调整我的光线以使其在启用镜头校正的情况下工作吗?

干杯, 戈登

最佳答案

只需将畸变矩阵与光线的向量(位置和法线)相乘,就可以得到新的光线。我建议使用具有 4x4 矩阵和 Vec4 的齐次坐标,其中 Positions 的分量 w = 1.0,Normals 的分量 w = 0.0;通过这种方式,您可以简单地相乘并完成 - 根据查找方向,您可能必须使用逆矩阵 :)

关于c# - 通过畸变矩阵从鼠标转换光线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21118361/

相关文章:

c# - 存储库模式逐步解释

c# - 将查询字符串参数附加到对象 URL 的最佳方法

c# - StreamWriter 没有将最后几个字符写入文件

c# - Unity - 使用从网络加载的 64 多个单独的地球卫星图 block 完全包裹球体

android - Unity GoogleMobileAdsMediationTestSuite 抛出异常 setAdListener 必须在主 UI 线程上调用

three.js - three.js中如何根据物体位置和旋转正确旋转raycaster

Unity3d 台球/台球瞄准问题

c# - Entity Framework 中的 GroupBy

c# - 统一 5 : access/modify AnimatorController from C# script in editor

javascript - threejs 在使用变换控件时禁用轨道相机