Pergunta

Eu estou usando

worldview_inverse * (projection_inverse * vector)

para transformar as coordenadas de espaço de tela em coordenadas espaciais mundiais. Presumi que

(x,y,1,1)

transformaria a um ponto no avião agora, enquanto

(x,y,-1,1)

transforma em um ponto no avião próximo, e ligar a linha I pode consultar todos os objetos no tronco vista que cruzam a linha. Após a transformação I dividir os pontos resultantes pelo respectivo componente .w. Isso funciona para a extrema-plano, mas o ponto no avião perto de alguma forma é transformada para a origem do espaço do mundo.

Eu acho que isso tem a ver com o w componentes de 1 Estou alimentam a projeção inversa, porque geralmente é 1 antes de projeção, não depois, e eu estou fazendo a projeção inversa. O que estou fazendo de errado?

Foi útil?

Solução

Eu sei que esta é apenas uma solução, mas você pode deduzir o ponto de plano perto usando apenas o ponto de longe e a posição de visualização.

near_point = view_position
           + (far_point - view_position) * (near_distance / far_distance)

Quanto a você problema real. Em primeiro lugar, não se esqueça de dividir por W! Além disso, dependendo da sua matriz de projecção, tem que tentou (x, y, 0,1), em oposição a z = -1.

near_point = worldview_inverse * (projection_inverse * vector)
near_point /= near_point.W
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top