Como faço para aplicar a perspectiva correta a essa textura do OpenGL ES?

Eu gostaria de descrever meu objetivo e obter algum feedback de uma solução proposta. Eu sou muito novo no OpenGL ES (ou no OpenGL), então por favor seja gentil. Eu também gostaria de mencionar que a plataforma é o iPad (iOS) com restrições de pertencimento.

Objetivo: Permitir que o usuário coloque vértices nos quais uma textura deve ser desenhada corretamente na perspectiva correta (ou pelo menos na perspectiva ajustável). Para explicar o que quero dizer, considere o seguinte exemplo.

Digamos que temos uma fotografia de uma casa com um gramado correspondente em frente a ela. Agora, quero pavimentar um caminho (usuário) especificado com blocos (textura) de forma que a perspectiva pareça correta. Se a vista for apenas ortogonal, as peças serão completamente quadradas, o que não é realista quando se tem algum tipo de profundidade na imagem.

Agora, uma abordagem seria configurar uma vista em perspectiva com um tronco no OpenGL ES. Em seguida, coloque um avião (como abaixo) e coloque a textura da imagem nele para iniciantes.

Agora, como você espera da aparência da imagem acima, a imagem ficará distorcida. Mas tudo bem, porque se inclinarmos o avião para trás (de modo que ele se ajuste perfeitamente aos limites da tela), a imagem aparecerá quadrada.

Se o usuário agora definir a área a ser pavimentada, podemos colocar esses pontos no mesmo ângulo do plano inclinado e, em seguida, colocar uma textura com quadrados quadrados nela e eles aparecerão com uma perspectiva. Se o nosso ângulo de inclinação estiver incorreto, o usuário pode ajustá-lo manualmente, o que acontece é que os ângulos de canto do plano na figura acima serão ajustados e o plano será inclinado de maneira diferente para se ajustar ao display. A textura das telhas aparecerá em um ângulo diferente.

Esta é uma abordagem viável ou existe outra maneira melhor de fazer isso? Eu acho que é um hack feio que pode ter a ver com minhas habilidades limitadas em programação 3D.

questionAnswers(2)

yourAnswerToTheQuestion