我目前正在研究增强现实应用程序.目标设备是光学看到的HMD我需要校准其显示器以实现虚拟对象的正确注册.我使用SPA的SPAAM实现来完成它,结果足够精确到我的目的.
我的问题是,校准应用程序在输出中给出了一个4x4 投影矩阵,我可以直接使用OpenGL作为示例.但是,我使用的增强现实框架只接受光学校准参数,格式为Field of View某些参数+ Aspect Ratio某些参数+ 4x4 View矩阵.
这是我有的:
错误格式校正校准结果:
6.191399, 0.114267, -0.142429, -0.142144
-0.100027, 11.791289, 0.05604, 0.055928
0.217304,-0.486923, -0.990243, -0.988265
0.728104, 0.005347, -0.197072, 0.003122
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看生成此结果的代码.
我所理解的是单点有源对准方法产生3×4矩阵,然后程序将该矩阵乘以正交投影矩阵以得到上面的结果.以下是用于生成正交矩阵的参数:
near : 0.1, far : 100.0, right : 960, left : 0, top : 540, bottom: 0
Run Code Online (Sandbox Code Playgroud)
正确格式的校准结果不正确:
Param 1 : 12.465418
Param 2 : 1.535465
0.995903, -0.046072, 0.077501, 0.000000
0.050040, 0.994671, -0.047959, 0.000000
-0.075318, 0.051640, 0.992901, 0.000000
114.639359, -14.115030, -24.993097, …
Run Code Online (Sandbox Code Playgroud)