WebGL-Tutorials

Place to do random C.G. things and hopefully make tutorials out of them.

Rotação controlada manualmente

Rotacionar objetos pode parecer trivial, mas obter um resultado intuitivo não é.

A rotação de objetos deve ter algum ponto de referência e além disso deve possuir uma orientação espacial para saber os eixos possíveis de rotação.

Rotação da câmera em torno do objeto central

Essa é uma transformação um tanto quanto complicada. Ele requer que olhemos para a câmera do ponto de vista do sistema de coordenadas centrado no objeto, mas com os mesmos eixos de orientação espacial da câmera e não do objeto.

Primeiramente obtenho o objeto em coordenadas de câmera. Temos o objeto em coordenadas de mundo $o_w$, e temos a matriz inversa da câmera $C^{-1}$, então podemos obter $o_c$:

Agora podemos criar uma matriz de translação, que leva do objeto para a câmera dentro do sistema de coordenadas da câmera. Basta definir a última coluna da identidade com o vetor posição do objeto $o_c$:

Temos que usar a inversa dela para levar a câmera até o objeto. Aplicar a operação de rotação $R$ e depois voltar com a câmera para o lugar aplicando a transformação que leva o objeto para a câmera:

O que temos agora é a nova câmera rotacionada em torno do objeto, no sistema de coordenadas da câmera antiga.

Acontece que a matriz da câmera, é uma que leva do sistema da câmera para o sistema do mundo, que é exatamente a matriz $N$ transformada do sistema de câmera para o de mundo:

Rotação de outros objetos em torno do objeto central

Agora que temos uma fórmula para rotacionar a câmera em torno do objeto central, basta generalizar para outros objetos além da câmera.

Qualquer objeto que assim como a câmera tenha um sistema de coordenadas que o orienta no sistema de mundo, além de ter uma posição, pode ser rotacionado em torno de qualquer ponto. Basta trocas as variáveis anteriormente explicadas.

Método object_relative_movement

Com isso criei o método object_relative_movement, que aceita os seguintes parâmetros:

Referências

Usando matrizes, câmeras e tecnicas para rotacionar

UV Map Grids

Eu usei algumas texturas que não são minhas nestes exemplos. Aqui estão algumas informações sobre como econtrá-las.

Pesquisas no Google por imagens:

Sites com images para testes de mapeamento de texturas:

Outros