|
Autor |
Mensagem |
< Animação ~ Expressões matemáticas na animação |
Mira |
Colocada: Dom Out 09, 2005 3:40 pm |
|
|
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 |
|
|
Voltar acima |
|
DANY_3D |
Colocada: Dom Out 09, 2005 9:12 pm |
|
|
Já faz sozinho
Registo: 05 Mai 2005
Mensagens: 450
Local/Origem: Porto (Santo Tirso)
|
MEU DEUS |
_________________
|
|
|
Voltar acima |
|
Mira |
Colocada: Seg Out 10, 2005 7:03 am |
|
|
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 |
|
|
Voltar acima |
|
DANY_3D |
Colocada: Seg Out 10, 2005 8:52 pm |
|
|
Já faz sozinho
Registo: 05 Mai 2005
Mensagens: 450
Local/Origem: Porto (Santo Tirso)
|
|
Voltar acima |
|
Mira |
Colocada: Seg Out 10, 2005 9:32 pm |
|
|
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 |
|
|
Voltar acima |
|
Grury |
Colocada: Seg Out 10, 2005 10:04 pm |
|
|
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! |
|
|
|
Voltar acima |
|
cc |
Colocada: Seg Out 10, 2005 11:14 pm |
|
|
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 |
|
|
|
Voltar acima |
|
greven |
Colocada: Seg Out 10, 2005 11:29 pm |
|
|
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. |
_________________
|
|
|
Voltar acima |
|
zardoz |
Colocada: Ter Out 11, 2005 12:27 am |
|
|
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::.. |
|
|
Voltar acima |
|
Mira |
Colocada: Ter Out 11, 2005 6:59 am |
|
|
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 |
|
|
Voltar acima |
|
DANY_3D |
Colocada: Ter Out 11, 2005 7:47 am |
|
|
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
Clique no D1, vá até ao painel Motion e em Z Position
D1????
nai inteessa quando tiver tempo começo, e pergutno e vai se discutindo-.... |
_________________
|
|
|
Voltar acima |
|
Mira |
Colocada: Ter Out 11, 2005 7:54 am |
|
|
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 |
|
|
Voltar acima |
|
Grury |
Colocada: Ter Out 11, 2005 8:50 am |
|
|
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! |
|
|
|
Voltar acima |
|
Mira |
Colocada: Ter Out 11, 2005 9:42 pm |
|
|
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 |
|
|
Voltar acima |
|
MALicivs |
Colocada: Ter Out 11, 2005 9:49 pm |
|
|
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
MALicivs |
_________________ http://www.ididitforthepoly.com/ |
|
|
Voltar acima |
|
Mira |
Colocada: Ter Out 11, 2005 9:59 pm |
|
|
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 |
|
|
Voltar acima |
|
MALicivs |
Colocada: Ter Out 11, 2005 10:10 pm |
|
|
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...
MALicivs |
_________________ http://www.ididitforthepoly.com/ |
|
|
Voltar acima |
|
|
Todos os tempos são GMT
|
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 |
© 2005 + 2021 | Dimensao3.com - All rights reserved
Powered by phpBB
//
Template by Mike Lothar
|
|