Programação com OpenGL/Modern OpenGL Tutorial Navegacao: diferenças entre revisões
[edição verificada] | [edição verificada] |
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição |
|||
Linha 18:
Usar o Blender Z-is-up no OpenGL pode ser tentador, mas apresenta algumas questões:
* O arquivo .obj normalmente esta como Y-is-up, exigindo mudanças enquanto ele for carregado(ou enquanto é exportado no Blender)
* A
* Outros motores como o Irrlicht e Ogre também usam o Y-is-up
Por isto vamos ficar com Y-is-up neste livro.
== Posicionando a
Não há conceitos pré definidos de
Nossa técnica é a seguinte: em vez de pensarmos em como mover nossa
Por exemplo, movendo a
Manteremos isto em mente enquanto trabalhamos com a
== Controle da
Vamos começar nossa implementação intuitiva:
* Esquerda/Direita rodara no eixo Y da
* Cima/Baixo moverá para Frente/Para trás
* Page_up/Page_down rodara a
<source lang="cpp">
Linha 46:
* <code>glm::translate(transformation_matrix, glm::vec3(dx, dy, dz))</code>: aplicando a <code>transformation_matrix</code>, depois movendo em (dx, dy, dz) expressada no novo sistema de coordenadas.
* <code>glm::translate(glm::mat4(1), glm::vec3(dx, dy, dz)) * transformation_matrix</code>: aplicando <code>transformation_matrix</code>, depois movendo em (dx, dy, dz) expressado no sistema de coordenadas que está depois da translação.
* Neste caso a translação da
Por exemplo, se existir um <code>transformation_matrix</code> rodando nossa
* Com a primeira forma você vai movimentar a
* Enquanto da segunda forma você vai movimentar a
-----
Esta implementação tem os seguintes problemas ao usar: Quando a
Em vez disto, vamos usar a rotação apenas sobre nossa cabeça alinhada ao eixo Y. assim vamos movimentar o mundo no eixo Y da coordenada local da
<source lang="cpp">
glm::vec3 y_axis_world = glm::mat3(transforms[MODE_CAMERA]) * glm::vec3(0.0, 1.0, 0.0);
Linha 65:
/* code here */
</source>
{{AutoCat}}
|