Animationsproblem!

fr34ky

Grünschnabel
Hi ihr,

ich habe folgendes Problem:

Ich möchte ein Objekt um eine bestimmte Achse drehen, und das ganze animieren
-> funktioniert ohne Probleme, einfach die Objektachse auf die gewünschte Position ändern..

Jetzt möchte ich aber die Objektachse um die gedreht wird zu verschiedenen Zeitpunkten abändern.

Mir ist klar, dass ich für jede neue Drehposition ein Nullobjekt verwenden könnte, das wird aber bei vielen vers. Drehpositionen sehr unübersichtlich. Da muss es doch eine andere Lösung geben?

Die einfachste Lösung wäre ja logischerweise einfach die Position der Objektachse zu animieren also für Frame 0 - 10 x1,y1,z1 ... für Frame 10-30 x2,y2,z2 .. usw.

leider lässt sich die Objektachse aber nicht animieren, bzw habe ich noch nicht rausgefunden wie... Kennt hier jemand eine Lösung?

(weder über die Objektspuren in der Timeline, noch über Autokeyframing wird eine Veränderung der Objektachse keytechnisch erfasst :rolleyes: )

Vielen Dank schonmal

P.s. Cinema 10
 
Ich bin mir nicht ganz sicher aber lässt die Achse sich denn nicht über Parameter keys animieren ?Ich habe mal etwas ähnliches versucht und es hat ganz gut geklappt.
Ist nur schon jahre her :D
 
Nee, leider nicht. Parameterkeyframes zeichnen keine Achsen auf...
Mittlerweile weiß ich auch, dass Cinema keine Pivot-Animation unterstützt, d.h. eine Änderung der Objektachse hilft dir nur etwas beim Modeln und kann generel nicht animiert werden.

Nach diversen Versuchen hab ich eine Xpresso-Schaltung gebaut, die es mir ermöglicht ein Nullobjekt als Pivot eines Objektes zu definieren und dieses zu animieren.

Problem an der Sache: Cinema rechnet intern zu ungenau.
Folge: bewegt man bsp. den Slider in der Timeline ein paar mal hin und her, ändert sich der Objektdrehpunkt ... also war diese Lösung auch nicht zu gebrauchen.

Naja, im Endeffekt hab ich mir jetzt erstmal mit haufenweise animierten Nullobjekten (hierarchisch angeordnet, und ohne Xpresso) geholfen... diese Lösung ist allerdings ziemilch unflexibel und macht mich auch nicht wirklich glücklich.

Schönen Tag noch :)
 
ich glaube des ist genau das, wonach du suchst

http://youtube.com/watch?v=aCGxqRzCpdg

mithilfe COFFE dreht sich der Propeller in abhaengigkeit vom Frame und den Heli kann man normal animieren
(Rotorbewegung kommt in 401 vor)


Das ganze geht auch mit COFFEE:

Mit kleinen Umbennenungen der Objekte kann man dieses Skript verwenden:

main(doc,op)

{
var zahnrad = doc->FindObject ("Antriebsrad");
var zahnrad_rotation = zahnrad->GetRotation ();
var rotation = -zahnrad_rotation;
op->SetRotation(rotation);
}

Die Expression kommt auf das Rad, das man nicht dreht/animiert. Wenn man verschieden große Zahnräder verwendet, muss man in der 3. Zeile nach dem "-" Zeichen einen Faktor eingeben, der das zweite Zahnrad schneller oder langsamer drehen lässt. Nun muss man nur noch das Objekt "Antriebsrad drehen/animieren.
 
Zuletzt bearbeitet:
Wegen Rechenungenauigkeiten: Cinema ist zwar im Editor ziemlich ungenau, aber beim Rendern is das Problem weg, will heißen, ich hatte auch schon sehr komplizierte Xpressoschaltungen auch mit winzigsten Zahlenänderungen weit hinterm Komma ohne Probleme verwenden können.
 
das ist leider nicht das was ich suche :)
Die von dir gepostete Coffee Schaltung, dreht ein Objekt einfach um die gleichen Winkel-Werte, wie ein anderes Objekt (z.B. das Antriebsrad), hat aber nichts mit der Drehachse (= Pivot) zu tun.

Mir geht es ja darum diese Drehachse zu animieren.

Wegen Rechenungenauigkeit: @Sascha
Richtig beim Rendern, wird alles korrekt berechnet, das Problem ist nur dass man mit der Editorungenauigkeit nicht mehr vernünftig arbeiten bzw. animieren kann, wenn man so eine Schaltung verwendet.
(Klicke ich z.b. auf Frame 300 und möchte dort etwas anpassen, ist die Position falsch (weil alle Punkte von 0-300 ungenau berechnet werden), d.h. ein Anpassen ist nicht möglich. ) Die einzige Möglichkeit zu Frame 300 zu kommen ohne Interpolationsfehler, ist den Slider langsam von Frame 0 bis 300 zu bewegen. Das ist aber natürlich viel zu Zeit aufwendig.

Schöne Grüße
 
sorry
hab im Eifer des Gefaechts den Falschen Code geschickt...

meinte

Code:
main(doc,op)
{
// aktuelle Zeit
var t     = doc->GetTime();
// aktuelles Frame
var frame = t->GetFrame(doc->GetFps());
// aktuellen Rotations-Vektor holen
var rotor_rot = op->GetRotation();
// Z-Rotation in Abhängigkeit des aktuellen Frames setzen (Multiplikator selbst herausbekommen ;) )
rotor_rot.z = frame*0.2;
// Rotation dem Objekt mit Coffee-Tag zuweisen
op->SetRotation(rotor_rot);
}

falls ich dir damit nicht helfen kann, halt ich mich mal zureuck
 
Hi!

Interessante Problematik! :) ...wenn ich verstanden habe, was Du benötigst:
Du möchtest ein Objekt immer um die Welt-Achsen drehen, egal, wie dessen Lage ist?
Beispiel "Default-Kegel", der in +Y schaut. Dreht man diesen um 90° in H, möchtest Du, daß er anschließend um P = - 90° gedreht, entlang der Welt-Z-Achse schaut! ... statt entlang -X ?
Die Lösung über einen animierten Prozeß, also einem, der die Zeit beinhaltet hast Du ja. Mir stellt sich nun die Frage, ob es ohne diesen zeitlichen Parameter überhaupt funktionieren kann:

Beispiel 1 (wie oben):
a) Rotation um H= 90° und anschließend
b) Rotation um P= - 90°
-> Kegel schaut entlang Welt-Z-Achse

Beispiel 2:
a) erst Rotation um P= - 90° und anschließend
b) Rotation um H= 90°
-> Kegel schaut entlang der Welt-X-Achse (negativ)

Die Reihenfolge der Drehungen, der Zeit-Faktor, spielt also eine wesentliche Rolle. D.h. es kann keine Lösung geben, die ohne Berechnung der vorhergehenden Rotationen eine "spontane Lösung" bietet...
-> in der Zeitleiste umhergesprungen, überspringt nötige, vorherige Rotationen.
Du bräuchtest ein Script, daß IMMER alle Frames vom ersten bis zum gewählten durchrechnet ... wohl eher eine Aufgabe für Coffee denn XPresso ?!

Hm, jedenfalls eine schöne Herausforderung, würd' mich interessieren, ob es da eine pipifeine Lösung gibt :)

Liebe Grüße,
Mark.
 
hm,
I think I dig it

ne Idee waere...
Du richtest n Punktobjekt als Ausgangspunkt ein. Auf diesem schiebst du ein weiteres Punktobjekt, das sich nach deinem eigetnlichen Ausrichtungspunkt ausrichtet (z.B. via COFFE, sicherlich gibts einfachere Moeglichkeiten, aber sogut kenn ich mich net aus).
Auf demselben Objekt schiebst du dein eigentliches 3D-Kunstwerk, das sich nach einem anderen Ausrichtungsobjekt ausrichtet (z.B. eins, das nun fuer deinen Winkel zustaendig ist)

so wie ichs nun verstanden habe:
z.B.

du hast ein Planetensysten, in der mitte die Sonne, und drum herum dreht sich die Erde(/Punktobjek)
auf diesem Punktobjekt befindet sich nun die Erde mit deren Rotationsachse... nun bewegt sich das Haupt-Punktobjekt um die Sonne... die Erde kannst du nun so ausrichten, dass England immer am nahsten an der Sonne ist (was Astronomisch eh nicht geht)...
foglich dreht sich die Erde um die Sonne, befindet sich aber immer auf der gleichen Eigenrotationsachse, die sich nicht bewegt...

Meintest du vielleicht sowas?
 
Zuletzt bearbeitet:
Zurück