Como corrigir o Gimbal Lock no Autodesk Maya?

A produção de uma animação em 3d envolve diversos aspectos que podem deixar qualquer pessoa assustada, caso ela não esteja acostumada com o gerenciamento de tantas informações, para fazer algo que para ela é relativamente simples. Na animação 3d é necessário se preocupar com a dramatização das ações realizadas pelos personagens e também com a gestão dos keyframes e curvas de animação. As curvas apresentam alguns problemas bem específicos, principalmente quando o assunto é rotação. Um desses problemas é o chamado Gimbal Lock, que acontece quando um eixo de rotação acaba girando e sobrepondo outro eixo. Isso é fácil de perceber ao visualizar qualquer manipulador em softwares 3d.

Basta girar o plano de rotação do eixo Z alguns graus, para que esse mesmo plano fique alinhado com os planos do X ou Y. Qual o resultado disso? Se você tentar realizar uma animação por um desses eixos, o efeito será o mesmo para os eixos de rotação em X, Y e Z. O que inevitavelmente acaba gerando uma enorme confusão na organização dos keyframes, e pontos em que o movimento dos personagens que deveria ser suave, acaba ficando truncado.

Para saber como é possível corrigir esse tipo de problema, usando apenas o editor de curvas no Maya 2008, o autor do vídeo abaixo mostra um pouco da sua técnica para ajustar um problema oriundo do Gimbal Lock. Entre os frames 480 e 490 da animação, o personagem apresenta movimento truncado, ele pula ao invés de fazer o deslocamento da posição de maneira suave.

Repare no vídeo que o autor precisa selecionar o objeto e fazer uma verdadeira investigação para descobrir a causa do problema. Provavelmente o erro aconteceu na criação de algum keyframe que deveria estar em apenas um eixo, mas acabou sendo inserido em outro. O primeiro suspeito de causar o problema era o deslocamento da curva no eixo Z. Depois que esse deslocamento abrupto foi suavizado, o problema persistia e fez a investigação continuar.

Mais um keyframe sem suavização é encontrado e corrigido para que a animação possa acontecer de maneira mais fluida. Esse tipo de problema é geral em termos de animação, e mesmo com ferramentas e opções para evitar esse tipo de defeito na animação, é importante conhecer as causas para conseguir fazer as devidas correções quando um dos seus projetos sofrer do mesmo problema.

Tutorial de animação 3d: Rotações usando Euler e Gimbal Lock

Mais um excelente tutorial sobre animação 3d foi publicado pelo projeto Guerrilla CG, que tem como objetivo publicar material relacionado com aspectos básicos de animação 3d e modelagem. Dessa vez o tema é uma continuação de um tutorial lançado no final do ano passado, sobre os problemas com rotações de objetos. Caso você não esteja lembrado, o vídeo abordou o uso de rotações usando Euler e Quarternions. Agora eles explicam em detalhes o funcionamento das rotações usando Euler, que é a maneira com que a maioria dos animadores e softwares 3d trabalham, com rotações usando três eixos distintos X, Y e Z.

O tutorial pode ser encontrado no web site de projeto ou também no Vimeo.

Euler Rotations Explained from The Guerrilla CG Project on Vimeo.

Um aspecto interessante em relação a esse tipo de sistema de rotação, usando os eixos X, Y e Z está relacionado a organização dessas rotações de maneira semelhante a uma hierarquia. Sim, nas rotações 3D os eixos giram em ordem definida. Essa é uma das causas dos problemas gerados por esse tipo de sistema em rotações.

O vídeo começa explicando muito bem o funcionamento do sistema de rotação, com a demonstração de um objeto chamado de Gimbal. O fenômeno conhecido como Gimbal Lock acontece quando os planos de rotação se cruzam. Por exemplo, quando os eixos Y e Z se cruzam e as modificações aplicadas em Y ou Z resultam na mesma rotação para o objeto.

Como o sistema funciona com base em hierarquias, os problemas começam a acontecer nesse momento!

Imagine a seguinte situação, você está animando um objeto apenas alterando os ângulos de rotação em Y e Z. Por um breve momento acontece o Gimbal Lock, no qual você acaba alterando os ângulos de rotação em Y, sem se preocupar com a orientação no eixo Z. Logo depois que o eixo Z precisa ser alterado a surpresa aparece, e o objeto realiza um movimento estranho, começando a animação de um local diferente e perfazendo uma trajetória curva ao invés de uma linha reta.

Acredito que essa pequena explicação deixou clara a confusão em que isso pode se transformar, com um editor de curvas cheio de pontos e um animador desesperado, tentando descobrir o motivo do movimento estranho.

Esse tipo de assunto é de vital importância para as pessoas interessadas em trabalhar mais a sério com animação, pois é um problemas técnico comum em animações de personagens e objetos. O simples conhecimento do mesmo, pode ajudar muito nas horas em que é preciso investigar as causas de movimentos estranhos nas animações 3D.

Recomendo que você assista e guarde o vídeo nos seus favoritos!

Vídeo explicando sistemas de rotação para animação (Euler e Quarternions)

O projeto guerrillacg voltou a plublicar vídeos no seu web site com demonstrações e tutoriais relacionados aos assuntos relevantes de animação 3d e modelagem. Depois de um início empolgante, o pessoa do projeto diminuiu um pouco o ritmo, mas agora ao que parece a produção e publicação dos vídeos voltou a acontecer! Mas, o que é esse projeto? O guerrillacg é um projeto que tem como objetivo oferecer vídeos explicativos, sobre os aspectos mais importantes do trabalho na computação gráfica 3d, seja ele como animação ou modelagem. Todos os vídeos do projeto podem ser assistidos de maneira gratuita e agora existe até um canal no Vimeo, que permite assistir os tutoriais mesmo com o web site fora do ar.

Se você for usuário registrado no Vimeo, pode até mesmo fazer o download dos vídeos em resolução SD (640×480). O link para download está sempre no canto inferior direito da página, mas só aparece para oso usuários registrados.

Na semana passada foram lançados dois vídeos, um sobre os problemas nas rotações em animação e outro sobre subdivisão de superfícies. Hoje mostro o vídeo sobre rotações, por ser um assunto de suma importância para qualquer pessoa interessada em animação e que não é abordado com freqüência em tutoriais e artigos. Esse problema já foi abordado aqui no blog algumas vezes e se chama Gimbal Lock.

Qual o problema? Para responder à pergunta, assista ao tutorial:


The Rotation Problem from The Guerrilla CG Project on Vimeo.

No vídeo, temos a descrição dos dois principais sistemas de animação usados por softwares 3d para calcular rotações, que são o Euler e Quarternion.

O tutorial mostra que o software 3d usa códigos matemáticos para resolver o movimento dos objetos em animação, o que pode gerar alguns movimentos exóticos nos objetos. Por exemplo, ao criar uma animação simples com apenas dois keyframes, o software pode interpolar uma linha reta como sendo uma curva. Isso acontece devido a maneira com que as curvas são geradas para determinar o movimento do personagem ou objeto.

Esse tipo de problema acontece quando as rotações usando o sistema Euler são usadas. No caso do quarternion, os problemas são menores mas as curvas e controles que os animadores tanto adoram não existem nesse sistema. Por isso, a maioria das pessoas ainda prefere trabalhar com rotações usando Euler, mesmo com os possíveis problemas nas rotações.

Para quem nunca trabalhou mesmo com animações, esse tipo de problema pode ser até complicado de entender, mas basta começar um projeto que demande mais movimentos e rotações em animação que logo eles aparecem. Isso não é exclusividade de softwares proprietários como o Maya ou 3ds Max, mas de todos eles! Até mesmo o Blender 3D.

Por isso é tão importante conhecer esse tipo de problema e as técnicas de correção no editor de curvas do seu software de animação, pois na maioria dos casos esses problemas podem ser corrigidos com o ajuste dessas curvas.

Ainda essa semana, comento sobre o segundo vídeo do guerrillacg sobre suavização de superfícies. Para saber mais sobre o projeto, recomendo uma visita ao guerilla cg.