Desenvolvimento de personagem 3D – Rigging

Olá !
Rigging é o que fazemos para possibilitar a movimentação do personagem criado, é o que viabiliza uma animação.

Neste tutorial, será apresentado algo realmente básico sobre rigging (que já deu um conteúdo meio longo) pois o rigging é algo muito técnico, que exige organização e paciência. Os estudos são indispensáveis para aprender a fazer um bom rig, espero que este conteúdo ajude a todos.

Inicialmente para este personagem faremos um breve estudo do posicionamento dos “joints”, para isto é necessário observar a sua topologia, identificando assim seus pontos de articulação.

Inicialmente para este personagem faremos um breve estudo do posicionamento dos “joints”, para isto é necessário observar a sua topologia, identificando assim seus pontos de articulação.

A próxima etapa é adicionar os joints ao modelo, para isto basta selecionar a ferramenta “joint tool” localizada no painel “Animation / Skeleton / Joint Tool ”.

A próxima etapa é adicionar os joints ao modelo, para isto basta selecionar a ferramenta “joint tool” localizada no painel “Animation / Skeleton / Joint Tool”.

Com a ferramenta joint tool selecionada, e com a tecla X pressionada (ativa o snap to grid) podemos então formar nossa hierarquia de joints, clique algumas vezes no “grid” da cena até formar algo parecido com a imagem abaixo

Com a ferramenta Joint Tool selecionada, e com a tecla X pressionada (ativa o snap to grid) podemos então formar nossa hierarquia de joints. Clique algumas vezes no “grid” da cena até formar algo parecido com a imagem.

É necessário verificar a orientação dos joints criados, clique no primeiro joint da sua hierarquia e pressione o botão direito do mouse, selecione a opção “ Select Hierarchy” selecionando assim toda a sua hierarquia, depois disto vá até o painel “Display / Transform Display / Local Rotation Axes”

É necessário verificar a orientação dos joints criados, clique no primeiro joint da sua hierarquia e pressione o botão direito do mouse, selecione a opção “ Select Hierarchy” selecionando assim toda a sua hierarquia, depois disto vá até o painel “Display / Transform Display / Local Rotation Axes”.

Observe que o último joint da sua hierarquia está com o eixo diferente dos demais, este deverá ser deletado, evitando assim futuros problemas de orientação.Após isto dê um duplo clique na ferramenta “Move Tool” no seu painel lateral e altera a opção “Move Axes” para “Along Rotation Axis”, conforme imagem a baixo. Isto fará com que você mova o joint conforme o ângulo que o joint foi rotacionado, preservando assim a sua orientação.

Observe que o último joint da sua hierarquia está com o eixo diferente dos demais, este deverá ser deletado, evitando assim futuros problemas de orientação.Após isto dê um duplo clique na ferramenta “Move Tool” no seu painel lateral e altera a opção “Move Axes” para “Along Rotation Axis”, conforme imagem acima.

Isto fará com que você mova o joint conforme o ângulo que o joint foi rotacionado, preservando assim a sua orientação.

Isto fará com que você mova o joint conforme o ângulo que o joint foi rotacionado, preservando assim a sua orientação.

Para facilitar a visualização dos joints em seu personagem ative a opção “Xray joints” ou a opção “Xray’ localizadas no seu painel.

Para facilitar a visualização dos joints em seu personagem ative a opção “Xray joints” ou a opção “Xray” localizadas no seu painel.

Existem diferentes técnicas para formar um rig para os pés, irei mostrar algo simples.

Para adicionar os dedos, podemos duplicar os joints dos dedos já existentes e mover a cópia para a posição desejada. Para duplicar podemos executar o comando “Ctrl+D” ou ir até o menu “Edit / Duplicate”. Outra forma de adicionar joints é aplicar a técnica que mencionei no inicio deste tutorial, cria-se uma carreira de joints e posiciona-se esta ao local desejado, em nosso caso nos dedos. Para conecta-los a hierarquia de joints basta selecionar os joints que você criou para os dedos e com a tecla “Shift” pressionada, selecione o joint que ela deverá se conectar e usar o comando “Ctrl+P” (Parente, também encontrado no painel, “Edit / Parent”).

Poderá acontecer de “faltar” joints para seu rig, para resolver isto você poderá ir até o painel “Animation / Skeleton / Insert Joint Tool” com esta ferramenta selecionada escolha o joint e arraste a seta do mouse para criar o joint extra a seu rig.

08_ctrl_p

Repita a mesma técnica utilizada para a perna esquerda ao braço esquerdo do seu personagem. Para a cabeça e tronco seguirei o estudo que fiz para posicionamento dos joints. Para isto, é necessário ativar a vista esquerda ou direita do seu personagem (mantenha a tecla espaço pressionada e clique com o botão esquerdo do mouse, selecione a “Rigth View”), crie seus joints com a tecla X pressionada conforme já vimos anteriormente, com esta viewport ativada seus joints estarão posicionados no ponto Zero de X, é importante que o personagem esteja centralizado em sua cena.

Para posicionar o joint no olho do Mike, faremos o seguinte, selecione o olho e vá até o painel “Display / Transform Display / Rotate Pivots” aparecerá uma pequena esfera dentro da geometria do olho, este é o ponto central de rotação da geometria, após ter feito isto selecione o joint e mantenha pressionada a tecla “V” ou ative a opção “Snap to Points” e mova o joint para o “Rotation Pivot” do olho (habilitado anteriormente).

09_pivot

Ative a visão em “Wireframe” para facilitar o posicionamento.

Ative a visão em “Wireframe” para facilitar o posicionamento.

Feito isto você poderá dar um “Parent” do joint criado para o olho (já posicionado) na hierarquia da cabeça.

O comando “Parent” também deve ser usado para conectar a perna esquerda ao joint da cintura (root) e o braço esquerdo ao joint da cabeça, conforme imagem abaixo.

11_hierarquia

Antes de prosseguir é indispensável a organização do seu rig, isto inclui renomear todos os joints, de uma forma que possibilite um fácil entendimento e que faça sentido para seu rig.

12_rename

Renomeamos com “Bind” os joints que terão influência sobre a malha do personagem, e adicionamos “End” os que não terão influencia sobre a malha, no caso os joints finais da Hierarquia.

Após renomear todos os joints podemos aplicar o “Mirror joint” selecione o joint “Bind_jnt_perna_esq” e vá ao painel “Animation / Skeleton / Mirror Joint” existe uma caixinha ao lado do seu nome é o menu de opções da ferramenta, clique nela e aparecerá o seguinte:

13_Mirror

Siga o exemplo, apenas adicionei o nome que quero substituir no caso “esq” por “dir”, o “Mirror” criará novos joints espelhados ao seu personagem e os renomeará automaticamente. É necessária a atenção a opção “Mirror across” para que ele espelhe na direção correta.

14_skel_finalizado

Podemos começar a adicionar os controladores ao personagem, mas antes disto é necessário zerar os valores de rotação dos joints. Faremos isto da seguinte forma.

Selecione o joint “Bind_jnt_Root”, segure o botão direito do mouse vá até a opção “Select Hierarchy” depois vá ao painel “Modify” e clique na opção “Freeze Transformation” então a rotação dos joints será zerada.

Agora sim estamos aptos a adicionar os controladores.

Para este tutorial iremos utilizar controladores Inverse Kinematics (IK).

Iniciaremos criando um circulo com “Nurbs curves”, encontramos ela no menu “Create / Nurbs Primitives / Circle”, gosto de trabalhar com a opção “Interactive Creation” desativada, assim o objeto é criado automaticamente no ponto zero da cena.

Iniciaremos criando um circulo com “Nurbs curves”, encontramos ela no menu “Create / Nurbs Primitives / Circle”, gosto de trabalhar com a opção “Interactive Creation” desativada, assim o objeto é criado automaticamente no ponto zero da cena.

Após o circulo ser criado podemos seleciona-lo e executar o comando “Group”, pode ser feito através de ctrl+G ou pelo painel “Edit / Group”. Na sua janela Outliner aparecerá o seguinte:

Após o circulo ser criado podemos seleciona-lo e executar o comando “Group”, pode ser feito através de Ctrl+G ou pelo painel “Edit / Group”. Na sua janela Outliner aparecerá o seguinte:

Dessa forma a curva pode ser controlada pelo grupo. Duplico o grupo várias vezes de forma a evitar perda de tempo para refazer este processo, depois disso podemos renomear o grupo e o circulo, que no caso será nosso controlador.

O próximo passo é posicionar os controladores em nosso personagem, para isto utilizo a seguinte técnica, seleciono o joint e em seguida o grupo correspondente, iremos posiciona-lo através de um “Parent Constraint” localizado no menu “Animation / Constrain / Parent”. Precisamos entrar em suas opções e desabilitar o “Maintain Offset”, feito isto o grupo e o controlador serão movidos para a posição do joint.

17_parent

Na hierarquia do grupo que recebeu o parent constraint aparecerá o constraint do comando executado, você deve deleta-lo

Na hierarquia do grupo que recebeu o parent constraint aparecerá o constraint do comando executado, você deve deleta-lo.

Feito isto selecione o Controlador e rotacione 90° no eixo Z para este caso. Após isto aplique “Freeze Transformation” e um “Delete History” que pode ser encontrado no menu “Edit / Delete by Type / History “ . Repita este processo para os demais joints conforme figura.

Feito isto selecione o Controlador e rotacione 90° no eixo Z para este caso. Após isto aplique “Freeze Transformation” e um “Delete History” que pode ser encontrado no menu “Edit / Delete by Type / History “ . Repita este processo para os demais joints conforme figura.

O controlador da mandíbula e do queixo ficaram escondidos dentro da geometria, para edita-los sem perder sua orientação fazemos o seguinte:

20_select_by_type

Selecionamos o controlador e acionamos o comando “Select by Componet Type” pressionando o ícone ilustrado na imagem acima, depois clicando e segurando o botão direito do mouse, selecione “Control Vertex” desta forma você poderá alterar a sua forma geométrica e posição sem afetar sua orientação, selecione todas os Vertex e com a ferramenta “Move” mova para fora da geometria do personagem de forma que sua seleção seja de fácil acesso.

21_edit_cc

Com todos os controladores posicionados podemos começar a conecta-los aos joints, para que que o controlador assuma o controle sobre a translação e rotação. Faremos isto através de “Constraints”. Pegaremos, por exemplo, o joint da mandíbula. Selecione o controlador e depois o joint a ser controlado, e aplique um “Orient Constraint”. Este joint será controlado apenas por rotação.

22_orient

Para o controlador da cintura, nomeado aqui como “Root” utilizei o “Constraint Parent” que controla a rotação e translação, porém desta vez com o “Maintain Offset” ligado.

23_mo_on

Dica: Selecione o joint da cintura “Root”, clique com o botão direito e “Select Hierarchy”, depois segure o botão direito do mouse novamente e arraste para a opção “Set Preferred Angle”.

Para o joint do olho (repare que alterei seu nome para “NoB_jnt_olho”, pois ele não influenciará a geometria), selecione o joint criado e posicionado dentro da geometria olho e em seguida a geometria do olho, depois vá ao menu “Constrain” e selecione “Parent”, certifique-se de que a opção “Maintain Offset” está ligada, agora quando você rotacionar o joint do olho a geometria irá seguir seu movimento.

24_const_olho

Para os braços iremos utilizar o modo de controle por cinemática inversa, conforme mencionado anteriormente, a ferramenta que utilizaremos está localizada no menu “Animation / Skeleton / IK Handle Tool”.

25_ik

Precisamos configurar esta ferramenta, para isto basta clicar na caixa ao lado do nome da ferramenta. Setar conforme imagem abaixo:

26_ik_set

Após definido, selecione o primeiro joint do braço e depois o último joint, seriam estes:

27_ik_pos

Feito isto selecione seu controlador da mão e com o “Shift” pressionado selecione o “iK handle” que foi criado, vá ao painel “Constrain” e selecione “Point”. Agora seu controlador move o braço, faça alguns testes e, em seguida, volte para a posição zero do controlador zerando suas transformações .

28_Zerar

Em seguida, selecione novamente o controlador da mão e com o “Shift” pressionado selecione o joint da mão o primeiro da hierarquia, vá ao painel “Constrain” e selecione “Orient”, com isto você controla a rotação da sua mão. Faça o mesmo processo para o outro braço e pernas.

Agora precisamos organizar sua “Outliner”, para isso faremos os seguintes passos:

Selecione o joint da cintura e aplique o “Ctrl+G”, isto irá agrupar seus joints, agora basta renomear este grupo como “Grp_joints”.

29_jnt_grp

Selecione todos os “iK handles” criados, é necessário renomear cada um conforme sua posição, feito isto podemos coloca-los dentro de um grupo, com o comando “Ctrl+G”, renomeie este grupo para “Grp_Ik”.

O próximo passo é organizar a hierarquia dos controladores. Selecione todos os grupos dos controladores depois aplique um Group (Ctrl+G), renomeie este grupo para “Grp_Controles”. Confira a imagem abaixo:

30_Grp

Agora iremos “parentear” os grupos nos controladores, a janela “Outliner “ é indispensável para este processo, por exemplo: Seleciono a curva da cintura depois com o “Shift” pressionado seleciono o Grupo da mandíbula e dou o comando “Ctrl+P” o grupo da mandíbula irá ficar abaixo da curva da cintura (Root), e abaixo da curva da mandíbula colocarei o grupo do queixo, formamos assim uma hierarquia de controladores, quando o controlador da mandíbula for rotacionado automaticamente o controlador do queixo irá segui-lo. Abaixo a imagem do resultado final com todos os outros controladores.

31_Grp_Root

Feito isto precisamos “limpar nossa geometria para podermos aplicar as influencias dos joints na malha. Para isto selecione todas as geometrias e aplique o “Freeze Transformation” e o “Delete History”, comandos que já vimos anteriormente.

32_zer geo

Próximo passo é selecionar todos os joints que possuem a nomenclatura “Bind” para fazer isso de modo rápido fazemos seguinte: Alteramos para “Select by name” e digitamos Bind* e tecle “Enter”.

33_sel

Agora com o “Shift” pressionado selecione as geometrias que receberam as influencias dos joints, que são: corpo, unhas, dentes inferiores e boné. Conforme imagem:

34_geos

Agora vamos adicionar as influencias ao nosso personagem.

Com todo os itens selecionados vamos ao menu “Animation / Skin / Smooth Bind”, abrimos a caixa de opções desta ferramenta. Para este setup utilizarei os seguintes valores:

35_setup_skin

Agora faça alguns movimentos com os seus controladores para testa-los.

Precisamos refinar o Skin do seu personagem, que nada mais é do que acertarmos o valor de da influência de cada joint.

Para isto selecione a geometria desejada e vá até o menu “Skin” depois acesse a ferramenta “Paint Skin Weigth Tool” abra sua caixa de opções (esta ferramenta também pode ser acessada clicando e segurando o botão direito em cima da geometria).

Existem várias técnicas para pintar as influências, mas o objetivo final é pintar as áreas correspondentes a cada joint e verificar se ele não está influenciando locais errados, para isto devemos sempre pintar e ir testando, é um processo um pouco demorado que requer muita atenção.

36_inf

37_paint

Com a opção “Replace” setada você adiciona influencia e segurando “Ctrl” e clicando você remove, segurando o “Shift” você suaviza.

Após definir as influências vamos adicionar um controle para o olho, criamos um circulo igual ao que usamos para os controles, movemos ele para dentro do olho no mesmo ponto que o joint foi posicionado, depois movemos ele para fora da geometria, aplicamos um “Freeze Transformation” e um” Delete History” agrupamos e damos um novo nome, e por fim movemos o grupo abaixo da hierarquia “Root” (cintura), conforme imagem:

38_olho_grp

Agora selecione a curva que você criou para controlar o olho, segure “Shift” e selecione o joint posicionado dentro do olho, depois vá no menu “Constrain” e selecione “Aim”, abra sua caixa de opções e verifique qual é o eixo do seu joint que está apontando para o seu controlador, feito isto altere, se necessário, o valor da opção “Aim Vector”. Verifique o exemplo na imagem abaixo:

39_aim

Agora você controla a direção do olhar de seu personagem.

Repita o processo de criar controladores (círculos e agrupa-los) faça 4 novos destes. Mova estes distribuindo para os cotovelos e joelhos, posicione-os conforme imagem:

40_piv

Organize os novos controladores da seguinte forma na hierarquia dos controladores:

41_pole

Agora selecione o controlador criado, exemplo: PV_cotovelo_esq segure “Shift” e selecione dentro do grupo Grp_iks a iKhandle respectiva, depois vá ao menu “Constrain” e selecione “Pole Vector”, a imagem abaixo auxiliará no entendimento.

42_polev

Teste seu novo controlador.

Para finalizarmos precisamos de um controlador Master que levará todo o rig.

Para este, faremos o seguinte, criaremos mais uma curva, um circulo, deixamos este no ponto zero e nomeamos ele como Master, dentro dele colocamos os grupos Grp_controles e Grp_joint. Feito isto selecione o controlador Master e em seguida o Grp_joint vá ao menu “Constrain” e selecione “Scale” (faça o mesmo para a geometria do olho) agora todo o seu rig pode ser movido rotacionado e escalado.

43_final

Espero que vocês tenham gostado deste meu primeiro post! Quem quiser pode baixar o modelo deste tutorial aqui.