aiuto animazione impazzita
Moderators: Arkimed, natas, visualtricks, cappellaiomatto
-
- Advertising
-
- Posts: 4
- Joined: Sat Jul 02, 2005 7:13 am
aiuto animazione impazzita
Come posso risolvere questo problema.
Grazie a tutti.
- masterzone
- Site Admin
- Posts: 10551
- Joined: Fri Sep 17, 2004 5:34 pm
- Location: Verona
In quel caso il problema e' la tipogia di "punto" che viene registrato ogni volta che dai un keyframe di posizione.
Nella barra dove registri, il palletto rosso, vedi che sulla estrema destra c'e' un piccolo pulsante, dopo la P e il PLA, se clicchi si apre un contestuale, e dentro, e in alto, vedi che c'e' l'interpolazione...mettila in manuale, e poi entra nella voce interpolazione personalizzata...dovresti settare la tipologia di punto che vuoi fare...
Questo ti permette di evitare che punti molto ravvicinati vengano creati sotto forma di punto automatico morbido, ed evitare che la curva si convulsioni su se stessa...
ps: fammi sapere se hai capito riguardo al keyframing, purtroppo avvolte accadono cose strane
Ah, se vuoi un consiglio ulteriore, se vuoi evitare che in alcuni punti di movimento, i keyframe sentano i keyframe precedenti, interpolandoti il movimento, ricorda che le traccie si possono "SPEZZARE", metti la barra blu al momento che vuoi spezzare la traccia, e nel menu SEQUENZE trovi "dividi"...la traccia si spezza, e il keyframe non sente i precedenti...quindi puoi fare veri e propri "STOP" di animazione...e riprendere pulito da li...
Se vuoi realizzare una sfera che ruota da sola, prendi questo script coffee carino e incollalo in un TAG coffee nuovo, cancella tutto quello che c'e' dentro e incolla questo:
const var LASTPOS_ID = 1001205;
const var LASTROT_ID = 1001206;
main(doc, op)
{
// Get radius
var container = op->GetContainer();
var radius = container->GetFloat(PRIM_SPHERE_RAD,100.0);
// Get container
var bc = op->GetContainer();
// Get last values
var lastrot = bc->GetData(LASTROT_ID);
var lastpos = bc->GetData(LASTPOS_ID);
// Restore rotation
if (lastrot) op->SetRotation(lastrot);
// Get matrix
var matrix = op->GetMg();
// Constrain to plane
var oppos=matrix->GetV0();
oppos.y=radius;
matrix->SetV0(oppos);
// Calculate the deltapos
if (!lastpos) lastpos=oppos;
var deltapos=oppos-lastpos;
// Set the lastpos
lastpos=oppos;
// Calculate rotation
if (!radius) return;
var rot=vlen(deltapos)/radius;
// Calculate rotation axis
var rotaxis=vcross(deltapos,vector(0,1,0));
// Rotate accordingly
var rotmat=new(Matrix);
rotmat->SetRotAxis(rotaxis,rot);
matrix->SetV1(vnorm(rotmat->GetMulV(matrix->GetV1())));
matrix->SetV2(vnorm(rotmat->GetMulV(matrix->GetV2())));
matrix->SetV3(vnorm(rotmat->GetMulV(matrix->GetV3())));
op->SetMg(matrix);
// Remember rotation
lastrot=op->GetRotation();
// Set last values
bc->SetData(LASTROT_ID, lastrot);
bc->SetData(LASTPOS_ID, lastpos);
op->SetContainer(bc);
}
Secondo te è giusto impostare l'interpolazione su Lineare? Anche in presenza di altri movimenti dell'Oggetto?
Ad esempio un anello che gira su sè stesso dal frame 0 al frame 50, stop al 50 e poi dal 55 al 100 si sposta in orizzontale (valori dei frame assolutamente indicativi, tanto per capirci): non c'è stato verso che non pigliasse...la rincorsa per partire dal 55.° in poi......


- masterzone
- Site Admin
- Posts: 10551
- Joined: Fri Sep 17, 2004 5:34 pm
- Location: Verona


Grazie per la..."dritta": ho fatto una prova con un toroide e spezzandola in due (da 0 frame a 50 e poi da 51 a 100) e dando l'interpolazione Lineare non ho più l'effetto.....gambero.
Mannaggia: pensandoci bene, spezzando in due la sequanza, Cinema non considererà più, nel calcolo dell'interpolazione, le chiavi dei frame da 0 a 50, poichè fanno parte di una sequenza a sè stante...
- masterzone
- Site Admin
- Posts: 10551
- Joined: Fri Sep 17, 2004 5:34 pm
- Location: Verona
-
- Advertising
FOLLOW US