首页 > 解决方案 > 是否可以分解通过切除获得的相机矩阵?

问题描述

我通过建立空间中的 3D 点与屏幕上的 2D 点之间的对应关系获得了相机矩阵(切除)

我的自定义矩阵似乎正在工作,但我无法像在另一个应用程序上那样将此矩阵应用到Unity 主摄像头。对于 Unity,似乎我需要分解我的矩阵以获得位置、方向和 FOV 等。

我已经看到很多关于在 Unity 主相机上使用自定义矩阵的主题,但在所有情况下,它们都有一个与相机模型矩阵分离的投影矩阵。

这是我获取自定义矩阵的过程背后的数学: https ://math.stackexchange.com/questions/3388529/resectioning-problem-and-matrix-decomposition-what-am-i-missing >

在这里,我使用了一个特定的应用程序(Unity),但无论如何我都会很高兴了解它背后的数学原理。

我在处理上制作了一个草图来测试我的代码,我可以简单地使用我的自定义矩阵通过以下方式覆盖默认矩阵:

pushMatrix();
applyMatrix(customViewProjMatrix);
shape(model3d, 0, 0);  //this is what I want to render
popMatrix();

现在,我的矩阵是 View 和 Projection 矩阵的乘积,所以我找不到在 Unity 主相机上使用它的方法,因为我似乎需要它们是两个不同的东西。

仍然在 Unity 中,与上面的代码类似,我可以通过创建一些自定义着色器来创建一些调试行。

GL.PushMatrix();
GL.LoadPixelMatrix ();
GL.MultMatrix (customViewProjMatrix);
GL.Color(Color.yellow);
GL.Begin(GL.LINES);
GL.Vertex3 (-5f, 5f, -5f);
GL.Vertex3 (-5f, -5f, -5f);
GL.End();
GL.PopMatrix();

这只是为了检查我的矩阵,但不影响主摄像头,这是我的目标。

如果我可以像在 Unity 上获得它的方式那样使用我的矩阵,我不是,所以任何关于如何使用我的自定义矩阵或创建它以在 Unity 上使用的其他方法的任何建议都将不胜感激。

标签: c#unity3dmatrixprojectioncamera-calibration

解决方案


推荐阅读