Campo de visão + Aspect Ratio + View Matrix from Projection Matrix (Calibração HMD OST)
Atualmente, estou trabalhando em um aplicativo de realidade aumentada. Como o dispositivo alvo é um HMD óptico de visão, preciso calibrar sua exibição para obter um registro correto de objetos virtuais. Eu usei issoimplementação do SPAAM para o android fazer isso e o resultado é preciso o suficiente para o meu propósito.
Meu problema é que o aplicativo de calibração fornece na saída um4x4projeção matriz Eu poderia ter usado diretamente com o OpenGL, por exemplo. Mas, a estrutura de Realidade Aumentada que eu uso apenas aceita parâmetros de calibração óptica no formatoCampo de visão algum parâmetro +Proporção da tela algum parâmetro + 4x4Visão matriz.
Aqui está o que eu tenho:
Resultado correto da calibração no formato incorreto:
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
Você pode dar uma olhada no código que gera esse resultadoaqui.
O que eu entendo é que o método de alinhamento ativo de ponto único produz uma matriz 3x4, e o programa multiplica essa matriz por uma matriz de projeção ortogonal para obter o resultado acima. Aqui estão os parâmetros usados para produzir a matriz ortogonal:
near : 0.1, far : 100.0, right : 960, left : 0, top : 540, bottom: 0
Resultado de calibração ruim no formato correto:
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, 1.000000
Não tenho informações sobre como esses resultados são obtidos.
Eu li esses parâmetros em arquivos binários e não sei se as matrizes são armazenadas no formato principal de linha ou coluna. Portanto, as duas matrizes podem ter que ser transpostas.
Minha pergunta é :É possível e, se sim, como obter esses três parâmetros doprojeção primeira matriz que eu tenho?