Tutoriais - 3ds max avançado

Bones 3 - Expression Controller (Rig)

Criar uma estrutura adequada para animação de personagens é uma das tarefas mais complexas em qualquer um dos grandes programas de 3D, saber criar uma estrutura simples como a explicada nos dois primeiros tutoriais sobre Bones aqui no site www.tresd1.com.br, é apenas o primeiro passo.
Falta muito ainda para poder animar um personagem com desenvoltura e facilidade, para isso é necessário um profundo conhecimento do progama em diversas áreas, não apenas em Bones e Solvers, precisa saber usar bem os Constraints, Controllers, Manipulators, Wires, Custom Attriutes, entre outros recursos.
São com essas ferramentas que se monta a estrutura para mover o personagem, chamado normalmente de Rig. Isso é feito ligando objetos comuns como Splines, Dummies e primitivas, com estes recursos para montar uma marionete, assim, poderá mover o personagem movimentando estes objetos, que são chamados de Helpers.

Um dos recursos mais poderosos usandos na criação do Rig é o Expression Controller, também é um dos mais complexos, pois envolve expressões matemáticas para conseguir o que deseja. Escrevendo essas expressões você pode controlar partes de estrutura automaticamente. Isso é particularmente útil na movimentação da pélvis do personagem, como veremos neste tutorial, permitindo que a cintura do personagem acompanhe os passos que ele der, sem você ter que movimentar essa parte manualmente.

Para poder seguir este tutorial, é muito importante que já tenha lido e entendido os dois tutoriais anteriores sobre Bones aqui no site www.tresd1.com.br, seria interessante ter lido também o artigo \"Expressions, Wires e Reaction Manager\", onde eu mostro a parte mais básica do Expressions. Tendo esse conhecimento e se seguiu os exercícios dos dois tutoriais anteriores, você já deve ter uma estrutura montada com pernas e pés conectados na Pélvis ou pode montá-la facilmente, como mostra a imagem ao lado. Essa estrutura será usada neste tutorial.
Quando você mover o pé da sua estrutura, a Pélvis não se moverá junto, será necessário animar manualmente a cintura do personagem em cada passo que ele efetuar. Essa é uma ótima situação para aplicar uma expressão e fazer a Pelvis \"saber\" quando e quanto os pés andaram, assim, ela se moverá também para companhar. É muito importante que você tenha colocado nome em tudo na estrutura, para poder identificar com facilidade na hora de fazer os Links, pois eles serão feitos numa janela sem identificação visual do objeto, apenas pelo nome.

No meu exemplo a Pélvis é formada por dois círculos com a opção Renderable habilitada, para formar a malha nas linhas. No tutorial anterior eu usei um Dummy para fazer o papel da Pélvis, você pode usar qualquer objeto que desejar, contanto que faça o link dos Bones das coxas com esse objeto que serve de Pélvis. Estando com tudo devidamente nomeado e lincado, selecione a Pélvis e acesse o painel Motion, selecione o ítem Position na lista Assign Controller e clique no ícone marcado em vermelho na imagem ao lado.
Aparecerá a janela para escolher o controlador de posição deste objeto, selecione o Position List, como mostra a imagem ao lado, e clique em OK. No painel Motion aparecem os parâmetros do Position List, o item Position na lista Assign Controller muda de XYZ para List. Agora, o controlador de posição do objeto é um Position List.
Clique no sinal de (+) na frente do item Position, a lista se abre mostrando um controlador Position XYZ e o item Available mais abaixo, como mostra a imagem ao lado. Selecione o Available e clique novamente no ícone Assing Controller, marcado em vermelho na imagem. Vamos aplicar um outro controlador nesse item e ficar com dois controladores de posição no objeto.
Escolha o Position Expression na janela do Assing Position Controller, como mostra a imagem ao lado, e clique no OK. O item Position Expression é adicionado no lugar do Available, deixando-o em terceiro lugar, também aparece a janela do Expression na tela. Agora temos um controlador XYZ padrão para controlar a posição da Pélvis pelo Move se desejar. Mas também temos um controlador de posição que é regido por uma expressão matemática. Essa expressão é colocada na janela do Expression Controler que se abriu.
A expressão pode se referir a objetos na cena, então, podemos fazer a Pélvis identificar o movimento dos pés e usar essa informação como uma variável na expressão. A primeira coisa a fazer é indicar os objetos que a Pélvis deve toma como base no cálculo, ou seja, os pés.

Mas é necessário colocar um nome para essa variável que vai receber os atributos de cada pé, então, digite um nome para identificar o pé direito no campo Name da janela do Expression Controller, eu usei pedir. Selecione a opção Vector, logo abaixo, e clique em Creat. O novo vetor com o nome pedir é criado e adicionado no quadro de vetores, como mostra a imagem ao lado. Essa variável vai guardar a posição em X, Y e Z do pé.
Precisa fazer a mesma coisa para o pé esquerdo, colocando um nome para ele no campo Name da janela do Expression Controller, selecionando a opção Vector e clicando em Creat. Eu usei o nome peesq para essa variável que vai guardar os atributos de posição do pé esquerdo. O novo vetor aparece abaixo no quadro Vectors, como mostra a imagem ao lado. Agora temos duas variáveis vetoriais definidas na expressão, mas elas estão vazias, não contém valor nenhum. Precisamos colocar os valores de cada pé na sua respectiva variável. Selecione o vetor do pé direito (pedir) e clique no boão Assign to Controller, marcado em vermelho na imagem ao lado.
Aparece a janela do Track View Pick para você selecionar o objeto que controla o pé direito, encontre o Helper do pé direito na lista hierárquica, como mostra a primeira imagem ao lado, e dê um duplo clique sobre ele. Assim, vai aparecer o nome do Helper abaixo dos quadros na janela Expression, como mostra a segunda imagem ao lado, indicando que o vetor selecionado está lincado com esse objeto.

Faça o mesmo para o vetor que controla o pé esquerdo, selecione o peesq no quadro Vector, clique no botão Assign to Controller e encontre o Helper que controla o pé esquerdo na janela do Track View Pick, dê um duplo clique para adicioná-lo. Depois disso, também vai aparecer o nome do Helper lincado no vetor peesq abaixo do quadro Vector, na janela do Expression Controller, quando o vetor peesq estiver selecionado.

Agora falta o principal, a expressão matemática que vai calcular o movimento da pélvis em relação aos dois pés, basta escrever a expressão abaixo na janela Expression para definir isso, veja que os espaços e caracteres devem ser preservados na íntegra, caso contrário, pode dar erro na expressão. Apenas troque o nome pedir e peesq pelo nome que colocou nos seus vetores.

[ pedir.x + peesq.x, pedir.y + peesq.y, 0 ]/2

Esta expressão fala para o controlador somar a posição em X de pedir e peesq, somar a posição em Y de pedir e peesq, pegar o que der em cada eixo e dividir por 2. Essa será a posição da pélvis, ou seja, a soma da metade do movimento de cada pé em X e Y, pois a metade do movimento de cada pé somados é justamente o movimento completo.
Feche a janela do Expression Controller e veja as Viewports, pode ser que a pélvis esteja desalinhada, como mostra a imagem ao lado. Não se preocupe, isso é muito comum devido a posição inicial dos objetos, você poderia não deixar acontecer isso subtraindo o valor local de cada pé da expressão, mas é mais fácil selecionar a pélvis e mover para o local correto diretamente na Viewport. Como estamos com dois controladores de posição, você poderá mover a pélvis normalmente, o que não aconteceria se estivesse usando apenas o controlador de expressão, porque o movimento seria controlado apenas por ele. Da forma como fizemos, você pode controlar a pélvis manualmente, para fazer o personagem sentar, por exemplo, e pode controlar pela expressão quando mover os pés para fazer o personagem andar.
Mova um dos pés na Viewport Left e veja como a pélvis vai acompanhar o movimento automaticamente, se movendo metade da distância percorrida por ele, como mostra a primeira imagem ao lado. Depois, mova o outro pé até se alinhar com o primeiro. A pélvis vai completar o movimento e ficar alinhada com os pés como estava no início da movimentação. Faça o teste de movimento lateral também, mova um dos pés para o lado na Viewport Front, a pélvis também vai acompanhar este movimento percorrendo a metade da distância, pois usamos a expressão em Y também.
Essa expressão é a mais básica e simples possível para fazer isso, você pode incrementar muito ela para fazer mais movimentos automáticos, por exemplo, veja que a pélvis não se move em Z, você poderia acrescentar na expressão o eixo Z, que ficou com o valor 0. Assim, a pélvis se moveria em Z também de acordo com os pés. Neste caso ela não poderá se mover metade do movimento, porque ficará muito alto, o ideal é um pequeno movimento em Z para oferecer um pouco de ginga na cintura. Então, será necessário dividir o movimento em Z por um número maior, eu dividi por 6 no meu exemplo, veja como ficaria a expressão.

[ pedir.x+peesq.x, pedir.y+peesq.y, pedir.z/6+peesq.z/6 ]/2

A partir disso você pode criar expressões bem complexas para deixar o movimento da pélvis cada vez mais natural e automatizado, por exemplo, poderia acrescentar um Expression Controller também no Rotation e fazer a pélvis rebolar um pouco conforme os pés se movimentam. Este é um recurso muito útil e muito poderoso, principalmente na animação de personagens, mas pode ser usado para controlar qualquer coisa, rodas de carros, braços de guindastes e até abertura de portas. Em personagens é praticamente imprescindível, pois é necessário para controlar várias outras partes, como bones do ante-braço, espinha, cotovelos, caudas de bichos, asas de pássaros, entre outros.

André Luiz Buttignoli Vieira
Exemplo de Rig criado com essa técnica na pélvis.

Faça o login para poder comentar

Adminin Comentou em 21/06/2011 18:19 Ver comentário

Usuários conectados

Total de mensagens publicadas pelos membros da comunidade: 707124.

Total de membros registrados: 134886

Últimos membros registrados: Gu12, Bales, Fitspressoaustral, williamgueroa, 3010@Junior, Knkuro026, joaoddt, Guifaleta.

Usuário(s) on-line na última hora: 741, sendo 7 membro(s) e 734 visitante(s).

Membro(s) on-line na última hora: Gu12, williamgueroa, Fitspressoaustral, info5, Wiliams, Bales, Marco Rocha.

Legenda: Administrador, Especial, Moderador, Parceiro .

3D1 © Três D1 © 1999-2024. Todos direitos reservados.