Índice do Fórum Dimensao3.com


Autor Mensagem

<  Animação  ~  Expressões matemáticas na animação

Mira
Colocada: Dom Out 09, 2005 3:40 pm Responder com Citação
Novo membro Registo: 26 Jul 2005 Mensagens: 39
Criei este tópico com o objectivo dos usuários deste fórum poderem partilhar e usufruir de informação sobre expressões matemáticas na animação, bem como poderem desenvolver os seus conhecimentos. Gostava, pois, que este tópico não morresse e que todos pudessem participar. Sem mais paleio aqui vai o meu contributo.
Consiste em animar 3 bolas estilo malabarista de circo. A trajectória das bolas descrevem uma semi-elipse na parte superior as mãos (estão em zero no eixo z) às imaginárias mãos, e descrevem uma semi-circunferência quando a bola passa de mão para mão.

Bem, são apenas 11 passos para fazer isto. Aqui segue a descrição.
1- Construa um Dummy e altere o seu nome para D1.A sua posição é: x=-15, y=0,z=0.
2- Vá até ao painel Motion e na X Position atribua-lhe uma Float Expression.
3- Insira a seguinte expressão:
if(mod(F,90)<45,-15+30*mod(F/45,1),15-30*mod(F/45,1))
4- Explicação da fórmula:
Temos duas condições a- se o tempo é menor que 45 frames (segundo e meio) o Dummy (D1) tem sentido positivo; b- senão tem sentido negativo(troca de direcção). Mod é uma função que retribui o resto da divisão inteira – exemplo mod(5,2)=1, no nosso caso o tempo total é 90 frames (3seg), F é o valor instantâneo da frame em que nos colocamos, assim mod(F,90)quando chega à frame 45 , passamos para a condição b.
Sucintamente : if(mod(F,T)<t, i+a*mod(F/t,1),f-a*mod(F/t,1))
F- frames; T- tempo total de um ciclo; t- tempo parcial (meio ciclo)
i- posição de partida ; f- posição do meio ciclo
5- Faça uma esfera no visor Front de raio 4 e dê-lhe o nome de bola1. Vá até ao painel Motion em X Position atribua uma Float Expression. Crie uma variável com o nome dx. Clique em Assign to Controller. Vá até D1 e clique em X Position, depois no primeiro quadro do lado direito em Expression digite dx. Ok, a bola 1 segue a posição de D1 em X.
Agora é necessário deslocar a bola no eixo Z. Como o movimento da bola quando z>=0 vai descrever uma semi- parábola, em que atinge uma altura de 40 no ponto (0,0,0), é só inserir a fórmula da elipse que queremos para trajectória. A fórmula da parábola é (x/a)^2+(z/b)^2=1,( ou seja z=sqrt(1- (x/2)^2*b^2), em que sqrt é a raiz quadrada) em que a é a distancia de um dos pontos extremos a 0 isto no eixo X, e b é a distância do ponto de altura máxima a 0 em Z. Assim a=15 e b=40. Clique na bola1, no painel Motion na Z Position atribua um Float Expression : Crie a variável a clique em Assign to Costant atribua o valor 15, agora crie a variável b, clique em Assign to Constant e digite 40, por ultimo crie a variável dx como anteriormente (que é aposição de D1 em X). digite a seguinte expressão sqrt((1-dx^2/a^2)*b^2)
6- Ok, a bola1 já percorre a trajectória da elipse, até demais porque quando passamos a frame 45, volta a seguir a trajectória da elipse só que em sentido contrário. Para resolver isso temos que instruir o Max, para que este saiba que a partir da frame 45 até a 90 (e assim em cada ciclo) siga outra trajéctoria ( a da semi-circunferência).
7- Clique no D1, vá até ao painel Motion e em Z Position digite a seguinte expressão: if(mod(F,90)<45,1,-1)
- significa isto que D1 até à frame 45 vai estar numa posição positiva (=1) e a partir da frame 45 vai estar numa posição negativa no eixo Z.
8- Agora clique novamente na bola1 vá ao painel Motion e clique com o botão direito em Z Position acesse a Properties e temos a expressão anterior vamos complementar esta expressão { inicial: sqrt((1-dx^2/a^2)*b^2) }, para If(dz>0, sqrt((1-dx^2/a^2)*b^2)), -sqrt(r^2-dx^2)) , temos duas variáveis novas(ainda não foram criadas) r que é o raio da circunferência e dz a posição de D1 que nos permite saber quando D1 muda de sentido. Vamos então criar as variáveis r é uma constante de valor 15, dz é aposição de D1( crie dz, clique em Assign to Controller e vá até D1 – Z Positon e clique novamente ).
9- Explicação: A fórmula da circunferência de centro em (0,0) é x^2 +z^2= r^2, em que r é o raio, no nosso caso pretendemos que o raio seja 15, portanto vem que a posição da bola1 será z= -sqrt(r^2-dx^2) , menos porque queremos que em z seja negativa ( a parte de baixo da semi-circunferência). Ok está quase pronto, só falta animar as outras bolas.
10- Faça duas copias de D1 e duas cópias de bola1, designe-as por D2,D3,bola2 e bola3. Rode a animação, repare que como seria de esperar as bolas e os Dummy’s se movem juntamente. Aquilo que pretendemos é que se movam uniformemente em tempos diferentes. São no total de cada ciclo 90 frames – a bola1 faz o primeiro ciclo de 0 a 90 frames, a bola fará o seu primeiro ciclo de 30 a 120, e por fim a bola 3 fará o seu primeiro ciclo de 60 a 150. Assim teremos sempre um espaçamento de 30 frames entre cada bola. Para resolver isto, é muito simples basta que a segunda bola comece 30 depois da bola 1, e a bola 3 60 frames.
11- Ok, clique então em D2, vá ao painel Motion em X Position temos if(mod(F,90)<45,-15+30*mod(F/45,1),15-30*mod(F/45,1)) altere para if(mod(F-30,90)<45,-15+30*mod((F-30)/45,1),15-30*mod((F-30) /45,1)) , vá agora ao Z Position e onde esta if(mod((F),90)<45,1,-1) coloque if(mod((F-30),90)<45,1,-1) assim quando a bola1 estiver na frame 30 a bola2 apenas estará na frame 0. Faça o mesmo para D3, só que em vez de -30 é -60. Rode a animação a partir da frame 60. Ok, espero que tenha gostado, e se possível contribua para o desenvolvimento deste tópico.

_________________
"Tudo vale a pena quando a alma não é pequena." Fernado Pessoa
Ver o perfil de utilizadores Enviar Mensagem Privada Enviar email
DANY_3D
Colocada: Dom Out 09, 2005 9:12 pm Responder com Citação
Já faz sozinho Registo: 05 Mai 2005 Mensagens: 450 Local/Origem: Porto (Santo Tirso)
Shocked Shocked Shocked Exclamation Question Exclamation Question MEU DEUS Exclamation Question Exclamation Question

_________________
Ver o perfil de utilizadores Enviar Mensagem Privada Enviar email MSN Messenger
Mira
Colocada: Seg Out 10, 2005 7:03 am Responder com Citação
Novo membro Registo: 26 Jul 2005 Mensagens: 39
Boas, Dany, tenta fazer, e por ventura se não conseguires perceber algo posta ai, que eu tento ser mais claro.Abraços a todos

_________________
"Tudo vale a pena quando a alma não é pequena." Fernado Pessoa
Ver o perfil de utilizadores Enviar Mensagem Privada Enviar email
DANY_3D
Colocada: Seg Out 10, 2005 8:52 pm Responder com Citação
Já faz sozinho Registo: 05 Mai 2005 Mensagens: 450 Local/Origem: Porto (Santo Tirso)
Mira escreveu:
Boas, Dany, tenta fazer, e por ventura se não conseguires perceber algo posta ai, que eu tento ser mais claro.Abraços a todos


Shocked Shocked Shocked ....tas a falar a serio Shocked
ps:fostes tu que fizestes? Question

_________________
Ver o perfil de utilizadores Enviar Mensagem Privada Enviar email MSN Messenger
Mira
Colocada: Seg Out 10, 2005 9:32 pm Responder com Citação
Novo membro Registo: 26 Jul 2005 Mensagens: 39
sim fui eu que fiz, mas não é nada de especial, o texto é que pode estar um pouco confuso.Vou tentar melhorar isso o proximo fim de semana. As vezes as coisas podem parecer complicadas porque não estamos familiarizados com certas linguagens(como pode ser o caso das expressões acima) mas bem explicado vais ver que não é tão díficl quanto isso.E sim estou a falar a sério
abraços

_________________
"Tudo vale a pena quando a alma não é pequena." Fernado Pessoa
Ver o perfil de utilizadores Enviar Mensagem Privada Enviar email
Grury
Colocada: Seg Out 10, 2005 10:04 pm Responder com Citação
Veterano Registo: 22 Ago 2005 Mensagens: 524 Local/Origem: Helsinki, Suomi.
Wow!
Sem duvida admiro o teu esforco, no entanto fiquei sem perceber muinto bem qual a finalidade. Sem querer estar a tirar merito ao teu trabalho, nao estou a ver ate que ponto e que poderia ser usado em animacao, a nao ser como referencia de background.
Ja agora gostaria de ver um movie clip como exemplo, para melhor poder perceber o objectivo que desejas atingir..
Forca nisso!
Ver o perfil de utilizadores Enviar Mensagem Privada
cc
Colocada: Seg Out 10, 2005 11:14 pm Responder com Citação
Já faz sozinho Registo: 09 Mar 2005 Mensagens: 426 Local/Origem: lisboa
acho que estou a compreender o objectivo, mesmo que para animar 3 bolas seja mais fácil fazer isso manualmente (n sei se é) tendo conhecimento de expressões deste género será muito fácil animar 3mil bolas se necessário
Ver o perfil de utilizadores Enviar Mensagem Privada Enviar email
greven
Colocada: Seg Out 10, 2005 11:29 pm Responder com Citação
Novo membro Registo: 11 Set 2005 Mensagens: 30
Bom post, embora não perceba bem qual a finalidade... mas de animação percebo tanto como de cirilico.

De qualquer forma as fórmulas são simples para quem percebe um pouco de matemática, acho é que estão expostas um pouco de uma forma confusa.

Bom post anyway.

_________________
Ver o perfil de utilizadores Enviar Mensagem Privada
zardoz
Colocada: Ter Out 11, 2005 12:27 am Responder com Citação
Uma mente torturada Registo: 19 Fev 2005 Mensagens: 174
pessoal, as expressões são extremamente importantes para a animação...é possível na animação de um carro, associar com expressões a rotação do volante à direcção das rodas e depois com targets associar também às mãos de um condutor. Ou seja, animando com keyframes a rotação do volante podemos ter automáticamente tudo o resto animado...até os piscas, e os travões a funcionarem. Eu já usei algumas para coisas deste género e até são relativamente simples nestas situações pq são coisas relativamente lineares.
No entanto no caso de um carro eu usaria dynamics para este seguir as variações do terreno ao longo de um path e com expressões associaria as mudanças de direcção das rodas dianteiras com as rotações do volante, e com uns targets aos movimentos dos braços. Como podem imaginar neste caso com o uso de expressões conseguimos ter uma série de pequenas animações a funcionar sem muito trabalho.

No entanto aconselho o seu uso em casos em que o objecto (neste exemplo, o carro) venha a ser usado várias vezes...porque para uma única animação simples, a animação apenas com keyframes acaba por ser mais rápida.

a que o Mira escolheu óbviamente é um pouco mais complicada do que o exemplo que escolhi.

_________________
..::O meu site::..
Ver o perfil de utilizadores Enviar Mensagem Privada Enviar email
Mira
Colocada: Ter Out 11, 2005 6:59 am Responder com Citação
Novo membro Registo: 26 Jul 2005 Mensagens: 39
Boas Zardoz, gosto das tuas criaturas, acho que misturas muito bem o fantastico com o natural- brilhante.
Mas tens razão acho que não escolhi muito bem o exemplo que dei para começar, mas se for melhor explicado talvez se torne bastante mais simples. Vou fazer essa do carro, depois corrige se estiver errado, ou fizeres de maneira diferente.
É como Zardoz disse, para começar animar é necessário conhecer um pouco de expressões, eu também estou a começar,

Boas CC, o objectivo é mesmo o que estás a pensar- Aprender a usar expressões

Boas Greven, eu também ainda não percebo nada de animação, mas se quero aprender tenho que começar por algum sítio, e acho que este é um bom caminho

Boas Grury, a finalidade em primeiro lugar antes de criar qualquer coisa útil é aprender expressões, mas também concordo que se uma coisa não tem qualquer expressão palpável torna-se um pouco lunática- por isso pretendo construir uma máquina (meio estrambólica) em que vai usar o movimento daquelas três bolas para contar o tempo (não o movimento total só o da elipse, que o restante vai ser alterado, mas foi só para dar uma ideia). E nesta máquina pretendo utilizar pelo menos meia duzia das funções que estão no Function List- e este é o objectivo principal.Tem ainda um objectivo secundário(e um desafio também) - animar tudo com expressões.
E quando estiver pronta (a máquina) envio o vídeo( já agora alguém sabe de algum alojamento grátis para vídeo?)

abraços para todos

_________________
"Tudo vale a pena quando a alma não é pequena." Fernado Pessoa
Ver o perfil de utilizadores Enviar Mensagem Privada Enviar email
DANY_3D
Colocada: Ter Out 11, 2005 7:47 am Responder com Citação
Já faz sozinho Registo: 05 Mai 2005 Mensagens: 450 Local/Origem: Porto (Santo Tirso)
hi mira.

man.vou tentar fazer isso quando tiver tempo.mas se nao perceber algo ou quando nao souver onde fica algo. tipo :

um exemplo de prai 30 exemplos Embarassed

Clique no D1, vá até ao painel Motion e em Z Position

D1???? Confused
nai inteessa quando tiver tempo começo, e pergutno e vai se discutindo-....

_________________
Ver o perfil de utilizadores Enviar Mensagem Privada Enviar email MSN Messenger
Mira
Colocada: Ter Out 11, 2005 7:54 am Responder com Citação
Novo membro Registo: 26 Jul 2005 Mensagens: 39
Ok, Dany mas D1 é o Dummy1 - o primeiro a ser criado, bem o texto deve estar mesmo confuso, até mais, agora está na hora de ir trabalhar abraços

_________________
"Tudo vale a pena quando a alma não é pequena." Fernado Pessoa
Ver o perfil de utilizadores Enviar Mensagem Privada Enviar email
Grury
Colocada: Ter Out 11, 2005 8:50 am Responder com Citação
Veterano Registo: 22 Ago 2005 Mensagens: 524 Local/Origem: Helsinki, Suomi.
Mira escreveu:


Boas Grury, a finalidade em primeiro lugar antes de criar qualquer coisa útil é aprender expressões, mas também concordo que se uma coisa não tem qualquer expressão palpável torna-se um pouco lunática- por isso pretendo construir uma máquina (meio estrambólica) em que vai usar o movimento daquelas três bolas para contar o tempo (não o movimento total só o da elipse, que o restante vai ser alterado, mas foi só para dar uma ideia). E nesta máquina pretendo utilizar pelo menos meia duzia das funções que estão no Function List- e este é o objectivo principal.Tem ainda um objectivo secundário(e um desafio também) - animar tudo com expressões.
E quando estiver pronta (a máquina) envio o vídeo( já agora alguém sabe de algum alojamento grátis para vídeo?)



Nice one sonny, keep us posted!
Ver o perfil de utilizadores Enviar Mensagem Privada
Mira
Colocada: Ter Out 11, 2005 9:42 pm Responder com Citação
Novo membro Registo: 26 Jul 2005 Mensagens: 39
Giro das rodas de um carro

1- Faça um cilindro no visor Front. Nomeio-o de Volante.
Raio=12 ; altura=2
Posição: (0,0,0)
2- Faça outro cilindro, agora no visor Left. Nomeio-o de Rodaesquerda
3- Vá ao painel Hierachy, clique em Affect Pivot Only e depois em Center To Object, desactive o botão Affect Pivot Only
4-
Atribua os seguintes valores para o cilindro Rodaesquerda :
Radius:14 ; Heigth=10
Posição: (50,-40,-30)
5- Faça uma cópia do cilindro Rodaesquerda. Atribua ao novo cilindro, o nome de Rodadireita. Coloque-o na posição: (-25,-40,-30)
6- Agora vá ao painel Motion, e clique em Z Position, e atribua-lhe uma Float Expression
7- Verifique que em Expression aparece o valor de -1.5708, este valor é o mesmo(arredondado) que -pi/2 (radianos) equivalente a menos 90 graus.
8- Agora crie uma variável Scalar com o nome de rotVolante. Clique em Assign to Controller e vá até a Objects»» Transform»»Rotation:Euler XYZ e clique em Y Rotation.
9- Agora no quadro Expression ao valor de -1,5708 some rotVolante/6
(-1,5708+rotVolante/6). Faça exactamente o mesmo para a Rodaesquerda. Pronto pode girar o Volante (no eixo Y) e animar a sua rotação que as rodas respondem automaticamente à rotação.
10- Explicação da fórmula: Suponho que o volante gira no máximo 360º(uma volta completa) e que as rodas giram no máximo 60 graus portanto 1/6 da rotação do volante. – rotVolante é a variável associada à rotação do volante (ex: assim se girar Volante 90 graus rotVolante é igual ao equivalente a 15 graus (90/6) em radianos.

Abraços

_________________
"Tudo vale a pena quando a alma não é pequena." Fernado Pessoa
Ver o perfil de utilizadores Enviar Mensagem Privada Enviar email
MALicivs
Colocada: Ter Out 11, 2005 9:49 pm Responder com Citação
Já faz sozinho Registo: 23 Mar 2005 Mensagens: 397 Local/Origem: Estoril
só um pequeno detalhe que está errado nessa tua teoria, os volantes normalmente giram cerca de 2 voltas e meia, 900º de topo a topo.

cheers

Evil or Very Mad MALicivs Evil or Very Mad

_________________
http://www.ididitforthepoly.com/
Ver o perfil de utilizadores Enviar Mensagem Privada
Mira
Colocada: Ter Out 11, 2005 9:59 pm Responder com Citação
Novo membro Registo: 26 Jul 2005 Mensagens: 39
Obrigado Malicvs, não sabia, vou reparar nisso amanhã, por não ter a certeza é que escrevi "supondo que gira 360º", já agora sabes qual é o padrão mais ou menos para a roda?
abraços

_________________
"Tudo vale a pena quando a alma não é pequena." Fernado Pessoa
Ver o perfil de utilizadores Enviar Mensagem Privada Enviar email
MALicivs
Colocada: Ter Out 11, 2005 10:10 pm Responder com Citação
Já faz sozinho Registo: 23 Mar 2005 Mensagens: 397 Local/Origem: Estoril
epá para a roda é k nao faço ideia, talvez ande a volta dos 50 - 60º. parece-me um numero razoavel, mas tou a adivinhar...

Evil or Very Mad MALicivs Evil or Very Mad

_________________
http://www.ididitforthepoly.com/
Ver o perfil de utilizadores Enviar Mensagem Privada

Mostrar os tópicos anteriores:  

Todos os tempos são GMT
Página 1 de 2
Ir à página 1, 2  Seguinte
Novo Tópico

Ir para:  

Neste fórum, você Não pode colocar mensagens novas
Não pode responder a mensagens
Não pode editar as suas mensagens
Não pode remover as suas mensagens
Você Não pode votar neste fórum
You cannot attach files in this forum
You cannot download files in this forum