Cursos e Bibliotecas Ver Mais

Galeria 3D1 Ver Mais

Fabio Teles   Goiânia-GO - AC
Juliano Kloss   Blumenau - SC - SC
Fernando Cunha   Porto-Portugal - PR
Wever   Guarapari - ES

Portfólios Ver Mais

flavioprojetos   Goiânia - AC
Renie Projetos   São Paulo - SP - SP
blacktiger   Brasil - AC
Rodrigo   Santo André - SP

Tutoriais - 3ds max avançado

Simulando corda com o MassFX

Como sabem, a Autodesk retirou o Reactor do 3ds max a partir da versão 2012, adicionando no lugar o MassFX, que trabalha com a Engine PhysX da Nvidia.
Na simulação física de Rigid Bodies o MassFX é muito superior em vários aspectos como velocidade, precisão e facilitade de configuração, mas ainda não oferece os mesmos recursos que o Reactor oferecia como simulação de Soft Bodies, corda (Rope), tecido, superfície aquática, Motor, entre outros.
Porém, é possível simular Rope com o MassFX usando Constraints, apesar de trabalhoso o resultado é aceitável.

Neste tutorial vou explicar como fazer uma corda usando este método.

Se a barra de ícones do MassFX não apareceu na interface do seu 3ds max, clique com o botão direito nas beiradas da barra de ícones superior para abrir o menu com a opção para habilitar a barra do MassFX.
A cena é bem simples, basta criar um cilindro e copiá-lo várias vezes, você pode fazer isso copiando uma vez e aumentando o valor do Number of Copies na janela do Copy.


O ideal é que os cilindros tenham poucos segmentos, pois devem ser bem leves para poder usar muitos sem pesar na simulação. Na ponta criei um Box para animar e puxar a corda.


A cena está disponível para download abaixo e abre a partir do 3ds max 2012.
Selecione todos os cilindros e clique no segundo ícone da barra do MassFX, mas não solte o mouse para aparecer o menu com as opções.
A primeira cria objetos dinâmicos, ou seja, que são afetados pelas forças físicas da simulação.
A segunda cria objetos que são animados manualmente com Keyframes e não são afetados pelas forças físicas da simulação, porém, afetam os demais objetos dinâmicos que entrarem em contato com ele. Um objeto Kinematic pode ser transformado em Dynamic em qualquer momento da animação, permitindo assim que ele passe a ser afetado pelas forças físicas da animação.
A última opção cria objetos estáticos que não recebem a ação das forças físicas mas funcionam como objetos de colisão para os demais objetos dinâmicos da simulação, como o piso e a parede da cena, por exemplo.
Na verdade o piso não foi definido como Static Rigid Body, pois o MassFX cria um plano automaticamente para servir de piso e colidir com os objetos dinâmicos da cena, portanto, eu apenas criei o Plane para ter um piso visível.

Sendo assim, selecione todos os cilindros e clique na primeira opção \"Set Selected as Dynamic Rigid Body\", para que todos sejam tratados como objetos dinâmicos afetados pelas forças físicas da simulação.

Agora, selecione o Box na ponta da corda e atribua a segunda opção \"Set Selected as Kinematic Rigid Body\", para que possamos animar manualmente com Keyframes para puxar a corda.

Na minha cena de exemplo ainda tem um objeto na outra ponta da corda para servir como peso e uma parede para testar o comportamento da corda se o peso colidir com a parede. Como a parede é um objeto fixo que serve apenas para colisão, atribua a terceira opção \"Set Selected as Static Rigid Body\".
Já o peso na ponta da corda deve ser definido como Dynamic Rigid Body, pois deve receber a ação das forças físicas da simulação.
O terceiro ícone da barra do MassFX abriga os Constraints, que permitem criar ligações entre os objetos. O mais importante é saber que eles levam em consideração o ponto Pivot do objeto quando fazem as ligações.

Selecione o cilindro que está mais próximo do peso e clique no ícone dos Constraints, da mesma forma que antes, não solte o mouse para exibir as demais opções.

A primeira cria uma conexão rígida, a segunda cria uma conexão deslizante, a terceira cria uma conexão tipo dobradiça, a quarta cria uma conexão giratória, a quinta cria uma conexão livre que pode girar para todos os lados e engloba todas que citei antes, ainda tem a última que cria uma conexão estilo cotovelo de robô.
Para a corda vamos usar o Universal Constraint, portanto, clique sobre ele e verá um círculo verde na Viewport, conforme mover o mouse o círculo aumenta e diminui, não faz a menor diferença o tamanho, é apenas para exibição na Viewport e você pode configurar depois se ficar grande ou pequeno demais.

Assim que criar o Constraint, acesse o painel Modify para fazer o Link com o próximo cilindro da corda, basta clicar no botão Parent e selecionar o próximo cilindro.
Aproveite para configurar o Constraint agora, assim, não terá que voltar em todos novamente.


O MassFX permite configurar as propriedades dos objetos de uma só vez usando a aba Edit, disponível no primeiro ícone da barra do MassFX, porém, não oferece essa possibilidade para configurar vários Constraints ao mesmo tempo.


Encontre o menu Swing & Twist Limits e marque as opções Free, tanto no Swing Y quanto no Swing Z.
Apenas com isso funcionará corretamente, mas a corda se comportará de modo muito brusco, então será necessário retornar a todos os Constraints e aumentar os valores do Spring.


Sendo assim, sugiro que já aumente para 5 todos os parâmetros do menu Spring.
Agora, você precisa fazer a mesma coisa em todos os outros cilindros, começando pelo que acabou de definir como Parent do cilindro anterior.

Clique sobre ele, em seguida, clique no Universal Constraint, defina o próximo cilindro como Parent e atribua as mesmas configurações que fizemos acima nos menus Swing & Twist Limites e Spring.

Quando chegar no último cilindro, próximo ao Box que será animado para puxar a corda, antes de aplicar o Universal Constraint você deve selecionar o Box, acessar o painel Hierarchy, clicar no botão Affect Pivot Only e depois no Botão Center to Object, para centralizar o Pivot que por padrão é criado na base do Box. Assim o Constraint fará a ligação pelo centro do Box em vez de conectar na base.
Em seguida, o processo é o mesmo que expliquei acima, a única diferença é que definirá o Box como Parent do último cilindro.
No outro lado da corda temos o peso, que também precisa ser ligado a corda com um Universal Constraint e o processo é o mesmo que expliquei anteriormente, mas agora vai selecionar o peso, clicar no Universal Constraint e definir o primeiro cilindro como Parent.

As configurações dos menus Swing & Twist Limites e Spring são as mesmas.

Mas igual fizemos com o Box, é necessário colocar o ponto Pivot no centro onde o peso gira, ou seja, bem no centro da argola que prende o peso na corda. Basta habilitar o Affect Pivot Only e mover o ponto Pivot para o centro da argola no topo do peso.
Com isso a corda está pronta para a simulação, mas precisamos animar o Box para puxá-la.


Habilite o Autokey e mova o Box para cima fazendo uma rotação para o lado que foi conectado com a corda, para este lado ficar para baixo, deixando a corda pendurada.


A corda não acompanhará essa animação, pois não estamos rodando a simulação, mas o Gizmo do último Constraint seguirá o Box mostrando uma linha ligada ao cilindro.
Já é possível rodar a simulação e ver o comportamento da corda, mas o resultado não será adequado com as configurações padrões, que são bem otimizadas para colisões simples entre objetos.

Neste caso da corda precisamos de mais Substeps e mais interações para manter a estabilidade da simulação, portanto, clique no primeiro ícone da barra do MassFX para abrir o painel de configurações.

Aumente o valor do Substeps para 10 e o valor do Solver Interations para 90.
Agora sim, clique no ícone do Play na barra do MassFX e veja a corda puxar o peso até ficar pendurado.
Esta simulação na Viewport não cria Keys e não está gravada na cena, é gerada em tempo real como em um Game, portanto, é necessário fazer o Bake da animação para criar os Keys e realmente ficar gravada na cena, permitindo inclusive editar como outros objetos animados manualmente.

Para isso você deve clicar no primeiro ícone da barra do MassFX, para abrir o painel de configurações, acessar a aba Tools e clicar no Bake All.

Note que a animação será criada com a quantidade de Frames definida na cena, que por padrão são apenas 100, ou seja, 3 segundos.

Se for necessário mais tempo para a simulação, aumente a quantidade de Frames clicando no ícone Time Configuration, que fica ao lado do ícone do Zoom Region no canto inferior direito do 3ds max.

Ainda é possível retirar o Bake da animação no Unbake All, tornando tudo dinâmico novamente para fazer ajustes ou aumentar o tempo da animação.
Obviamente devemos substituir os cilindros pela corda modelada para renderizar a animação, é bem simples de fazer, basta modelar a corda como quiser e aplicar o modificador Skin, inserindo todos os cilindros no Skin para controlar a corda.
O ideal é aumentar um pouco os Envelopes do Skin em cada cilindro para proporcionar uma mesclagem mais suave entre eles.

Existem muitos tutoriais para modelar cordas, nas notícias da 3D1 você encontra vários. No meu exemplo eu criei 3 cilindros finos e compridos com bastante segmentos na altura para não facetar quando torcer. Agrupei os 3 cilindros e apliquei o modificador Twist, como explico no tutorial Modifiers 2 aqui na 3D1.
Abaixo o vídeo renderizado com a corda no lugar dos cilindros.
E aqui encodei o vídeo com 10 FPS para perceber melhor o movimento da corda.

Abraços

André Vieira

Faça o login para poder comentar

fcluk Comentou em 06/02/2012 13:52 Ver comentário
Andre Vieira Comentou em 30/08/2011 20:31 Ver comentário
Andre Vieira Comentou em 30/08/2011 20:29 Ver comentário
Christoni Comentou em 29/08/2011 23:44 Ver comentário
wmiler Comentou em 29/08/2011 22:53 Ver comentário
Andre Vieira Comentou em 29/08/2011 14:12 Ver comentário
Andre Vieira Comentou em 29/08/2011 14:04 Ver comentário
asdfg Comentou em 29/08/2011 13:37 Ver comentário
Roberlane Godoi Comentou em 29/08/2011 12:57 Ver comentário
Andre Vieira Comentou em 29/08/2011 11:02 Ver comentário

Usuários conectados

Total de mensagens publicadas pelos membros da comunidade: 711048.

Total de membros registrados: 138517

Últimos membros registrados: luciano pr, Davis123, diabecode, aldiriank1, nexagenkopen, GoldenRevivePlus, TroviranKapselnPreis, Williamcharses.

Usuário(s) on-line na última hora: 1312, sendo 3 membro(s) e 1309 visitante(s).

Membro(s) on-line na última hora: holtenodro, Sergio1987, TadeuB79.

Legenda: Administrador, Especial, Moderador, Parceiro .

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