PDA

Visualizza Versione Completa : accelerazione/decelerazione



Solferinom
14-03-08, 14:04
Salve a tutti,
so che porebbe sembrare un'operazione quasi scontata, ma effettivamente non so bene come si faccia.
Esiste un'espressione che va assegnata al moto di un oggetto che simula l'accelerazione o decelerazione dello stesso in un dato arco di tempo (ad esempio, l'elica di un elicottero che pian piano si avvia, un'auto che si ferma ad uno stop...e che non o farà all'improvviso ovviamente), ma non la conosco.
Qualcuno di voi saprebbe indicarmela, o indicarmi un tutorial che esemplifichi la situazione? Grazie a tutti, Marcello.

bug3d
14-03-08, 15:23
Ciao,sapendo più precisamente il fine dell'animazione sarebbe sicuro più facile aiutarti,ma comunque in modo generico ti consiglierei di usare le hermite curve nel graph editor,in alternativa se l'oggetto si muove su un solo asse anche l'fx gravity può essere usato allo stesso modo,soprattutto usando valori negativi.
Anche una espressione andrebbe bene,ma chiaro che dipende sempre da cosa vuoi animare:D

Solferinom
14-03-08, 16:17
Allora, facciamo finta che un automobile si sposti dal punto A al punto B.
Parte dal punto A da FERMA e raggiunge la velocità massima dopo X Metri, mantenendola per un certo tempo.
Ad una certa distanza dal punto B comincia a rallentare fermandosi sul punto B.

Ma è solo un esempio, la mia richiesta era giusto per chiarire come è possibile (senza dover impostare manualmente dei keyframes) far si che il moto di un oggetto non sia costante e azzerato di colpo.

Spero di essere stato chiaro.

marconwps
14-03-08, 18:39
Allora, facciamo finta che un automobile si sposti dal punto A al punto B.
Parte dal punto A da FERMA e raggiunge la velocità massima dopo X Metri, mantenendola per un certo tempo.
Ad una certa distanza dal punto B comincia a rallentare fermandosi sul punto B.

Ma è solo un esempio, la mia richiesta era giusto per chiarire come è possibile (senza dover impostare manualmente dei keyframes) far si che il moto di un oggetto non sia costante e azzerato di colpo.

Spero di essere stato chiaro.

> se non erro nella sezione plug-in si parlava di una plug-in simile
http://www.pauzapictures.com/lightbox/tmp/KeyForce.p

o vai di relativity ;)!!!
Saluti Stefano

Delirium_Fx
24-03-08, 13:26
Forse questo può darti qualche spunto.
Se qualcosa non è chiaro, chiedi pure.
Bye.
Mark.

Solferinom
25-03-08, 12:36
anzitutto ti ringrazio per la risposta dettagliatissima.
Per quanto riguarda le equazioni della cinematica illustrate nello screenshot allegato ci siamo, ho studiato fisica, quindi non ho avuto difficoltà a leggerle. Quello che non mi è molto chiaro è come sono state riportate nel "modifiers" del graph editor.

In pratica hai sommato i 3 moti "A", "B" e "C" (accelerazione/velocità costante/decelerazione) dei tempi Ta, Tb e Tc nell'espressione:

A+B+C

ognuno dei quali corrisponde alle seguenti istruzioni:

A= ((Time >= 0)*(Time <= 5)) * 0.5*2*pow(Time,2) + ((Time > 5) * 0.5*2*pow(5,2))

B= ((Time > 5)*(Time <= 20))*2*5*(Time - 5) + ((Time > 20)*2*5*(20 - 5))

C= ((Time > 20)*(Time <= 30)) * (2*5*(Time - 20) - 1*0.5*pow((Time - 20),2)) + ((Time > 30) * (2*5*10 - 1*0.5*pow(10,2)))

sono queste ultime tre che non mi sono molto chiare...
Ma non posso assegnare direttamente un'equazione del moto al punto? Per equazione intendo così come viene rappresentata in fisica.

Delirium_Fx
25-03-08, 18:05
anzitutto ti ringrazio per la risposta dettagliatissima.
...
di nulla.



Ma non posso assegnare direttamente un'equazione del moto al punto? Per equazione intendo così come viene rappresentata in fisica.

Sì, puoi farlo a patto che il mobile sia soggetto ad un solo tipo di moto: solo uniformemente accelerato, solo uniforme, solo uniformemente ritardato e così via. Nel caso da te proposto (moto vario, per intenderci), le cose si complicano un poco dal punto di vista del computer, notoriamente sciocchino :D; per noi bipedi l'uso di tre equazioni per determinare lo spostamento del mobile non crea problemi, ma Lightwave deve essere istruito su come comportarsi durante lo scorrere del tempo.



Quello che non mi è molto chiaro è come sono state riportate nel "modifiers" del graph editor.

In pratica hai sommato i 3 moti "A", "B" e "C" (accelerazione/velocità costante/decelerazione) dei tempi Ta, Tb e Tc nell'espressione:

A+B+C

ognuno dei quali corrisponde alle seguenti istruzioni:

A= ((Time >= 0)*(Time <= 5)) * 0.5*2*pow(Time,2) + ((Time > 5) * 0.5*2*pow(5,2))



Il nostro scopo è spiegare a LW che nei primi 5 secondi di moto deve usare l'equazione del moto unif. accelerato, poi per tutto il tempo restante dell'animazione deve restituire sempre lo spazio percorso dal mobile al secondo 5; come istruiamo LW a tal proposito?
Semplice, ricorrendo a una vecchia tecnica di programmazione (vecchia perché l'ho imparata quando ero giovane ;)): utilizzare il risultato booleano restituito dagli operatori logici.
La parte di espressione "((Time >= 0)*(Time <= 5))" va letta nel seguente modo:
Se "Time >= 0" è vera, viene restituito il valore 1, altrimenti il valore 0;
Se "Time <= 5" è vera, viene restituito il valore 1, altrimenti il valore 0;
Se entrambi i confronti valgono 1 si è per certo nei primi 5 sec di animazione, quindi "((Time >= 0)*(Time <= 5))" equivale a "1*1" e contemporaneamente "(Time > 5)" restituisce il valore 0; in siffatte condizioni l'espressione A va intesa come:

1 * 0.5*2*pow(Time,2) + 0 * 0.5*2*pow(5,2))

in caso contrario, quando siamo oltre il 5° sec., l'espressione diventa:

0 * 0.5*2*pow(Time,2) + 1 * 0.5*2*pow(5,2))

questo escamotage si rende necessario perché non vi sono keyframe che "fissano" il mobile al termine del 5° sec da usarsi come punto di partenza per i calcoli successivi.



B= ((Time > 5)*(Time <= 20))*2*5*(Time - 5) + ((Time > 20)*2*5*(20 - 5))

C= ((Time > 20)*(Time <= 30)) * (2*5*(Time - 20) - 1*0.5*pow((Time - 20),2)) + ((Time > 30) * (2*5*10 - 1*0.5*pow(10,2)))

sono queste ultime tre che non mi sono molto chiare...


Il metodo è analogo per le restanti espressioni, con l'accortezza di sottrare da "Time" il tempo già trascorso e di "appartenenza" al moto che ha preceduto quello che stiamo calcolando; per il moto uniforme sarà:

"Time - 5" perché i primi 5 sec. sono unif. accelerati

e per quello ritardato sarà:

"Time - 20" perché il moto in esame copre gli ultimi 10 secondi di animazione.

Spero di essere riuscito a spiegarmi (sarebbe quasi miracoloso :D), in caso contrario chiedi pure!

Bye :yoo:
Mark.

Fire
26-03-08, 00:02
...ad esempio, l'elica di un elicottero che pian piano si avvia, un'auto che si ferma ad uno stop...e che non o farà all'improvviso ovviamente), ma non la conosco...
Aggiungo a quanto è stato giustamente ed esaustivamente già detto, solo la banalissima funzione (che già conoscerete) "Ease In" e "Ease Out", la quale consente "d'addolcire" i punti di ingresso e d'uscita di qualsiasi canale nel Graph Editor, compreso quello del movimento, in modo da ottenere un' andamento esponenziale in entrambe i sensi. Intendiamoci, non centra nulla con quanto è stato già detto in quanto è una mera funzione di raccordo sul quale l'utente ha solo la possibilità di attivarla o meno, per cui le espressioni di fisica rimangono sempre la strada giusta da seguire, ...però per completezza ho ritenuto giusto citarle, chissà, magari qualcuno potrebbe anche non conoscerle, (...anche se in realtà non credo, però credo che "abbondare" sia sempre meglio che ..."deficere" :D).

Grazie per l'interessante discussione.:g1:
Fabio.

skyler
26-03-08, 11:53
Ma anche.....:D (Veltroni docet) lavorando sulla curva di velocità si ottiene un buon risultato, con un paio di keyframe si dovrebbe ottenere il risultato. Poi se uno vuole il controllo frame by frame....:evil: giù di espressiones..
Si impara sempre frequentando questo forum.

DM67
26-03-08, 23:45
se non ti serve una soluzione precisa al secondo, ma ti interessa una accelerazione e/o decelerazione dolce, allora vai sul graph editor, selezioni il fotogramma di partenza o di arresto infine modifichi il valore Tension portandolo ad uno ... otterrai il risultato che ti serve senza impazzire troppo.

Tony