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?

questionAnswers(1)

yourAnswerToTheQuestion