aiuto animazione impazzita

Forum per: Modellazione, Texturing, Animazione, Composting e tutto quello che riguarda il normale utilizzo di Cinema4D.

Moderators: Arkimed, natas, visualtricks, cappellaiomatto

Post Reply
  • Advertising
digimaster
Posts: 4
Joined: Sat Jul 02, 2005 7:13 am

aiuto animazione impazzita

Post by digimaster »

sto cercando di fare la seguente animazione: una sfera che prima rotola, quindi si ferma per qualche frame e poi riprende a rotolare. Inserendo un keyframe al fotogramma zero, il secondo al fotogramma 30, con la sfera spostata di qualche metro lungo l'asse X, il terzo keyframe al fotogramma 60 (con la sfera alla stessa posizione del fotogramma 30) ed il quarto keyframe al fotogramma 90, con la sfera spostata di qualche altro metro sull'asse X. Mettendo in play l'animazione la sfera da 0 a 30 fotogrammi avanza, come voluto, da 30 a 60 indietreggia di pochi cm (quando dovrebbe essere ferma) e da 60 a 90 ricomincia a spostarsi.
Come posso risolvere questo problema.
Grazie a tutti.
User avatar
masterzone
Site Admin
Posts: 10551
Joined: Fri Sep 17, 2004 5:34 pm
Location: Verona

Post by masterzone »

Allora, vediamo, quando ti capita che un oggetto registrato nella sua posizione ti torna indietro, prova a verificare la tipologia di punto che crei al momento della registrazione, se clicchi sull'oggetto, in editor vedi la "position Track"...prova ad avvicinarti ai punti, e prova a vedere se hai le curve della position track che tornano indietro.
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);
}
62VAMPIRO
Posts: 3807
Joined: Mon Mar 14, 2005 6:46 pm

Post by 62VAMPIRO »

Quindi suggerisci di cambiare l'interpolazione da personalizza (di default) a lineare? Mi è capitato che in presenza di Oggetti "pesanti" (fatti con booleane, ad esempio) lo "stop and go" presenti evidenti....salti all'indietro :D :D : sembra che prenda la rincorsa:D :D
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...... :shock: :shock:
User avatar
masterzone
Site Admin
Posts: 10551
Joined: Fri Sep 17, 2004 5:34 pm
Location: Verona

Post by masterzone »

Beh, lineare? nel caso delle rotazioni si, pero' io spezzerei sempre le sequenze, cosi' non c'e' paura di ritorni indietro, perche' non vengono contate le chiavi precedenti...e' comodisssssimo.....

:roll:
62VAMPIRO
Posts: 3807
Joined: Mon Mar 14, 2005 6:46 pm

Post by 62VAMPIRO »

Caspita, non ci avevo proprio pensato a suddividere la sequenza :( :( .
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...
User avatar
masterzone
Site Admin
Posts: 10551
Joined: Fri Sep 17, 2004 5:34 pm
Location: Verona

Post by masterzone »

Esatto! e' fortissima questa cosa e molto sottovalutata...
MZ :lol:
  • Advertising
Post Reply