Tutorial:Animando engrenagens com o track view



Neste tutorial vou mostrar como usar o comando float expression para animar engrenagens no track view.
Se você já tem duas engrenagens prontas, pule a parte de criação clicando aqui.
Primeiro ative o edged faces na viewport perspective pressionando F4.
Depois crie um cilindro com:
radius=50
height=10
height segs=1
sides=20
E depois converta-o para editable poly clicando com o botão direito nele e escolhendo convert to->convert to editable poly.
Agora vá ao sub object polygon e selecione os polígonos laterais alternadamente, como na figura:

E depois clique com o botão direito em um dos polígonos selecionados e vá no quadradinho ao lado de extrude.Aparecerá uma janela assim:

ponha o valor 12 no campo Extrusion Height e dê ok.
Agora crie um cilindro com os valores de radius e sides com a metade do primeiro, e faça o mesmo, dê um extrude nos seus polígonos.
Agora ajuste a engrenagem menor para que ela esteja "encaixada" na maior, gire, mova, e o reultado deve ser semelhante a este:

Após a parte de criação, faremos a animação das duas engrenagens ,animando somente uma.
Abra a janela do track view, em Graph Editors->Track view-Curve Editor, selecione a primeira engrenagem, e em transform clique em rotation, e selecione o gráfico de Z rotation(se as engrenagens foram criadas na vista top).
Agora crie neste gráfico 2 pontos, um na posição 0,0 e o outro na posição 100,360.
Selecione os dois pontos e clique no botão set tangents to linear.Agora o gráfico deve estar assim:

Agora selecione o Z rotation da 2ª engrenagem, no mesmo caminho:Transform-rotation-zrotation.
Vá no menu controller e clique em assign.

E selecione na lista o controlador float expression:

Se a janela do controlador não aparecer, clique com o botão direito no zrotation e em properties.Esta janela deve aparecer:

Há um número na caixa expression.Não apague-o.
No campo create variables, em name, crie uma variável "rotacao" que armazenará os dados de rotação da outra engrenagem.
Clique em create.Vai aparecer na lista scalars o nome da variável.Selecione e clique em assign to controller.
Uma janela assim aparecerá.Vá na outra engraenagem e faça o caminho todo:Até o Z rotation e dê ok.

Agora a variável rotacao contém os dados da rotação no eixo Z da outra engrenagem, e nós podemos iniciar a criação do código--como se fosse muito difícil!!!:)
Vamos pensar um pouco:A engrenagem maior tem o dobro do raio da menor.Então ela demorará duas vezes mais para completar uma volta.Ou seja:Quando a rotação da maior for 20 graus, a da menor será 40 graus, e assim por diante.Então nós podemos somar à rotação da engrenagem menor(aquele número que não é pra apagar) o dobro da rotação da engrenagem maior, ou seja:0,501891+rotacao*2.
Clique em evaluate.Você verá que as engrenagens ainda se interpenteram, pois se a engrenagem maior gira pra direita, a menor terá que girar para a esquerda, pois é impulsionada para este lado.Então simplesmente acrescente um menos na frente do 2 e teremos isto:

Se você fez certo, quando você der evaluate, e play, as engrenagens estarão girando sincronizadamente, transmitindo a energia realisticamente de uma para a outra!!!:)