Pergunta

I fazer uma cena 3d muito simples, tendo 5 pontos em coordenadas mundiais. Eu gostaria de navegar pela cena assim que eu estou definindo uma câmera com tanto um cima e para fora do vetor. Com esta informação eu gerar uma matriz de rotação em cada quadro, o que eu vou aplicar aos vetores, a fim de obter as coordenadas da câmera.

A questão é:? Eu li sobre bloqueio cardan como um problema usando este método, mas iria acontecer neste caso

Note que eu estou gerando a matriz de rotação em cada quadro, e eu não estou girando cumulativamente. Assim, poderia um bloqueio acontecer nesta situação? Se fosse esse o caso, o que você sugeriria para aplicar com segurança uma rotação (a partir dos vetores cima e para fora)?

Obrigado

Foi útil?

Solução

Se por OUT quer dizer "forward", e isso é sempre perpendicular ao vetor UP, então não, você não vai encontrar bloqueio do cardan.

O que você está fazendo é criar uma matriz de orientação dos vetores cima e para frente, e aplicando que cada quadro, que é um método bastante comum para mover uma câmera no espaço. Você não está aplicando várias rotações, utilizando ângulos de Euler, que pode ser uma causa de bloqueio do cardan.

Nota para criar a matriz que você também vai precisar para criar um vetor de "esquerda" (ou direita) a partir dos vetores cima e para frente. Uma boa introdução para isso é aqui - nota que esse exemplo é que, em seguida, aplicar rotações a matriz de câmera, que é um passo totalmente opcional.

Wikipedia tem uma boa explicação sobre cardan bloqueio .

Outras dicas

vai encontrar problema cardan-bloqueio quando usando matriz de abordagem para gerar matrizes de rotação (para X, Y, Z) e, em seguida, multiplicando-os a obter matriz de rotação final. Se eu entendi você vai, você usa OUT vector para obter ângulos (alfa, beta, gama), matrizes, em seguida, você está calculando, finalmente - você multiplica-los para obter matriz roation final - então sim, você vai encontrar bloqueio do cardan.

Uma maneira de se livrar deste problema é usar Quaternions para os cálculos.

Além disso, aqui eu encontrei alguns OpenGL tutorial sobre como implementar os.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top