O que é um boneco que estica
Na prática, boneco que estica é um sistema de rigging onde um personagem pode alongar e comprimir o corpo sem destruir a geometria ou as conexões de animação. Não se trata de um mesh que você apenas apertou Ctrl+Z e esperou que funcionasse. É uma cadeia de constraints,Drivers e controles que trabalham juntos para manter a integridade do modelo durante deformações extremas.
Boneco que estica: quando e por que usar
Esse tipo de rig nasce da necessidade de squash and stretch na animação 3D. Personagens estilizados, caricatos, ou qualquer coisa que precise de exagero cinematográfico dependem disso. Um rig tradicional com skin weight não aguenta um alongamento de 300% sem rasgar a malha. O boneco que estica resolve isso movendo a deformação para fora do mesh e para dentro da estrutura de ossos.
A mecânica por trás do esticamento
O conceito central é simples: você substitui um único osso longo por vários segmentos menores. Quando o personagem estica, esses segmentos se alinham e o mesh acompanha. Quando comprime, eles se sobrepõem. A mágica toda está nos drivers que calculam o fator de escala com base na distância entre os pontos de controle. No meu workflow, eu monto uma cadeia de 3 a 5 bones intermediários entre o ponto de origem e o destino do movimento. Cada segmento recebe um driver de escala no eixo local que responde à distância entre dois controllers. O mesh é parenteado ao último osso da cadeia, mas a deformação real vem dos segmentos intermediários via hook constraints ou LBS normal.
Um detalhe que quase todo mundo erra: a escala não pode ser aplicada diretamente no objeto principal do rig. Se você deixar o character com escala acumulada de 2.5 no eixo Z e tentar animar o stretch, os drivers vão ler valores errados e o rigs quebra no frame 47. Sempre aplique transform antes de conectar qualquer driver.
Construindo o rig passo a passo
Eu trabalho predominantemente com Blender, então esse guia segue essa ferramenta, mas o conceito se repete em qualquer DCC.
1. Prepare a malha
A geometria precisa ter densidade suficiente nas regiões que vão alongar. Se o braço do personagem vai esticar 200%, ele precisa de pelo menos 12 a 16loops de subdivisão ao longo do comprimento. Menos que isso e o mesh vai criar vértices aguçados quando compactado. Remova qualquer duplicata de vértice e feche buracos nas extremidades que serão conectadas aos ossos.
2. Monte a cadeia de stretch bones
Crie os segmentos. Cada osso deve ter o mesmo comprimento inicial que a região correspondente do mesh. Posicione-os exatamente ao longo do eixo de deformação desejado. O primeiro osso fica ancorado na raiz (ombro, quadril etc.) e o último no destino (punho, pé). Entre eles, distribua os segmentos intermediários uniformemente. Cada segmento recebe um hook constraint apontando para um vértice correspondente no mesh. Isso garante que quando o osso se mover, o mesh seja puxado junto sem depender puramente de skin weight. Skin weight ainda existe como fallback para transições suaves, mas o hook é quem sustenta a deformação extrema.
3. Configure os drivers de escala
Aqui é onde a coisa fica técnica. Você precisa de dois inputs para cada driver: - A distância atual entre o início e o fim da cadeia de bones
👉 Clique no botão abaixo para saber mais sobre o assunto!
- A distância de referência (o comprimento natural do rig) O driver calcula: escala = distância_atual / distância_referencia. Esse resultado é aplicado como escala no eixo local do segmento. No Blender, isso fica no editor de drivers: add driver, add variable com o tipo single bone, transform channel escolhendo a localização Z no espaço local do osso, e a expressão de divisão.
4. Adicione controle de comprimensão
Esticar é a parte fácil. Comprimir é onde os rigs costmam falhar. Quando o personagem encolhe, os segmentos precisam se sobrepor sem atravessar uns aos outros. A solução que eu uso é um clamping suave: o driver de escala tem um valor mínimo de 0.15 no eixo de compressão. Abaixo disso, o osso para de comprimir e o excesso de movimento é absorvido pela rotação do próximo segmento. Isso evita que o osso vire um ponto e a geometria colapse. Também adicionei um limitador de escala máximo de 4.0 em todos os segmentos. Nada pior do que ver um braço esticado até virar um fio durante uma ação de salto.
Problemas reais que eu enfrentei
Num projeto recente, eu estava animando um personagem com perna que precisava dar um passo de 2 metros em 4 frames. O rig esticou corretamente, mas o mesh na região do joelho entrou em colapso topológico. Os vértices se agruparam num ponto porque a densidade de loops era insuficiente justamente na curvatura natural do joelho. A correção foi adicionar um bone extra de orientação no joelho que funciona como um pivot. Esse osso não participa do stretch direto, mas recebe um constraint de Damped Lerp entre a posição intermediária e a posição final. Ele rotaciona suavemente enquanto o segmento estica, mantendo a curvatura do joelho. Sem esse osso auxiliar, o rig produzia pernas retas como varetas durante o alongamento.
Outro problema recorrente: quando o personagem se move para fora do plano XZ e o stretch precisa acontecer em 3D. Drivers configurados apenas para o eixo Z local ignoram rotações globais. A solução é usar o property de "chain length" do próprio bone chain. Em vez de calcular distância manualmente, leia a propriedade auto gerada pelo Blender que já considera a cadeia inteira no espaço world.
Pegadinhas comuns
O erro número um é esquecer de congelar as transformações antes de montar o rig. Se o bone começa com escala 1.5 aplicada, o driver lê esse valor como parte da referência e o resultado é sempre 50% maior do que o esperado. Congele tudo. Sempre. O segundo erro é não testar com deformações extremas desde o início. Muitos montam o rig, testam com 10% de stretch e consideram funcionando. Quando chegam no 150% de squash, a geometria desintegra. Teste com valores absurdos logo na primeira semana de desenvolvimento do rig. É mais barato corrigir agora do que refazer na semana anterior ao deadline.
Também preste atenção nos eixos de escala dos segmentos. Se algum osso tiver o eixo de stretch errado (por exemplo, esticando no eixo X quando deveria ser no Z), o driver aplica a escala na direção errada e o rig se torce de formas que parecem bugs inexplicáveis até você identificar qual osso está com o eixo local invertido.
Limitações que ninguém admite
Rigs de boneco que estica não são solução para tudo. Se o seu personagem precisa de expressões faciais complexas enquanto estica o corpo todo, os drivers entram em conflito com os shape keys do rosto. A solução é separar: rig de corpo com stretch para movimentos gerais, e um rig facial independente que não herda os drivers de escala. Outro ponto fraco: renderização com subdivision surface. Quanto mais níveis de subdiv, mais custoso fica o cálculo dos drivers em tempo real. Num projeto que fiz com 8 segmentos de stretch por membro e subdiv nível 3, o viewport travava em 8fps. Baixei para subdiv nível 2 no viewport e reservei nível 3 apenas para o render final. A diferença visual é imperceptível na maioria dos casos.
Se você precisa de stretch com deformação muscular realista (não apenas alongamento cartoon), esse método não entrega isso. Para músculos, você precisa de simulação FEM ou blend shapes manuais. O boneco que estica é uma ferramenta de animação, não de simulação física.
Download e recursos
Não existe um arquivo pronto universal que funcione para qualquer modelo. Cada rig precisa ser adaptado à topologia específica do seu personagem. O que eu recomendo é começar com um rig genérico de teste e reconstruir a cadeia de bones conforme a anatomia do seu modelo. Existem templates gratuitos de stretch rigs na comunidade Blender que servem como ponto de partida sólida. O mais importante é entender o mecanismo dos drivers. Quando você sabe exatamente o que cada expressão faz, consegue ajustar qualquer rig para qualquer personagem sem depender de arquivos prontos que nunca se encaixam perfeitamente.