Um problema que incomoda vários animadores na execução de animações se chama Gimbal Lock, que é um problema gerado pelo uso excessivo de rotações em uma animação. Mas o que é Gimbal Lock?

Na maioria dos softwares 3D, utilizamos um sistema de coordenadas e eixos geralmente baseadas nos chamados ângulos de Euler (X, Y e Z). O Gimbal Lock acontece quando dois desses eixos estão apontando para o mesmo lugar, ou seja, estão alinhados. Poucos animadores conhecem esse termo e a grande maioria acaba tendo que lidar com o problema sem nem saber o que é!

Mas como isso acontece, e como pode ser evitado?

Esse problema é muito conhecido pelos desenvolvedores de jogos, mas os animadores acabam descobrindo apenas quando já estão tendo contratempos com os ângulos de rotação de um objeto em animação.

Antes de mais nada, vou explicar porque o nome do efeito é Gimbal Lock. O nome é conseqüência da nomenclatura utilizada para as partes internas de um giroscópio, como mostra a Figura abaixo:

Fonte da imagem: www.allrefer.com

Como é possível perceber, os círculos que representam os eixos em um giroscópio se chamam Gimbals. Por isso o nome do efeito é Gimbal Lock. Agora que você já sabe o que é um Gimbal, podemos ver o que é o efeito do Gimbal Lock. O que acontece nesses sistemas de rotação é que em algumas situações, um dos eixos de rotação pode ficar alinhado com outro eixo. Veja no exemplo abaixo:

Na imagem temos três círculos que representam eixos de rotação. Temos o X(Vermelho), Y(Verde) e Z(Azul). Esse é o padrão de organização e cores para eixos de rotação, em praticamente todas as suítes de animação e modelagem 3D.

Depois de fazer algumas alterações nos eixos e rotacionar o plano correspondente ao eixo Y, teremos uma organização semelhante a exibida na imagem abaixo:

Com a rotação do eixo Y, o plano correspondente ao eixo X fica alinhado com o eixo Z. Isso quer dizer que todas as rotações realizadas nos eixos X e Z têm o mesmo efeito. Interessante não é?

Apesar de ser interessante, o efeito na execução de animações é extremamente problemático. O que acontece é que, as rotações já são difíceis de executar e organizar, sem falar em outros aspectos como a ordem em que os eixos são rotacionados.

A confusão fica instalada principalmente no editor de curvas, quando é necessário fazer ajustes e configurar a animação. Fica praticamente impossível, ou muito difícil se organizar quando o Gimbal Lock acontece. No exemplo anterior em algumas situações, editar a curva correspondente ao eixo X ou Z tem o mesmo efeito em alguns quadros da animação, já em outros quadros da animação a rotação é diferente, confuso não é?

Como evitar o Gimbal Lock?

O segredo para evitar esse efeito, é não utilizar rotações sempre que for possível. Isso mesmo, para não ter problemas evite as rotações. Existem vários artifícios que podem ser utilizados em animação para evitar rotações, esses artifícios foram desenvolvidos exatamente para evitar esse tipo de problema.

Uma das técnicas consiste em utilizar Constraints que controlam a rotação dos objetos com base em movimentos de translação, como o Look At, que faz um objeto “apontar” para outro.

Caso você queira saber mais sobre o Gimbal Lock, recomendo a leitura desse artigo em inglês: What is Gimbal Lock and why does it occur?

Podemos concluir então que a melhor opção aqui é evitar ao máximo as rotações, para que você não tenha a sua produtividade afetada pelo Gimbal Lock!