Animations-Keys per Xpresso setzen

grotten

Schusselkopf
Hallo,

vielleicht habe ich das neulich alles zu umständlich formuliert. Ich wollte nur mal fragen: kann ich in Xpresso die Werte eines Keys in einer Animationsspur irgendwie setzen? Keyzeit, Keywert oder so?

Gruß,
Gordon
 
Also Keys per Xpresso zu setzen - ist meiner Meinung nach nicht möglich. Ein Key besagt, dass ein gewisser Parameter zu einer gewissen Zeit eingenommen werden soll. Statt dessen muss die gesamte Animation durch Xpresso gesteuert werden.

Da du hier nun einen weiteren Thread aufgemacht hast - in Ermangelung von Antworten im vorhergehenden, den ich dafür erst einmal nachschlagen musste.... Dass da keine Antwort kam, kann eventuell an der doch recht schwammigen Erklärung Deinerseits liegen - mal erzählst du etwas von Coffee - mal von Xpresso. Das das zwei verschiedene Paar Schuhe sind, ist dir aber bewußt?
 
Ja, das ist mir bewusst. Aber ich kann ja C.O.F.F.E.E.-Nodes in Xpresso einfügen. Per C.O.F.F.E.E. mache ich den Vergleich, ob das aktuelle Bild in einer Werteliste auftaucht. Wenn ja, möchte ich dass eine vorher mittels Zeitleiste erstellte Animation ab diesem Zeitpunkt abläuft.

Diese Animation soll aber mehrmals zu variablen Zeitpunkten ablaufen, daher die Werteliste und nicht einfach Keys vorher überall da setzen, wo sie ablaufen soll.

Ich hatte an eine Art Lösung gedacht, die wie folgt aussieht: Die Animation in der Zeitleiste ist z.B. von Bild 0 bis 10, ist aber zunächst deaktiviert.

Nun läuft man durch die Bilder, vergleicht den aktuellen Zeitwert mit der Werteliste. Bei einem Treffer wird die Animation aktiviert und läuft nun statt von 0 bis 10 eben von 0 + aktuelles Bild bis 10 + aktuelles Bild.

Klingt mathematisch ja ganz simpel, aber mir fehlt eben irgendwo eine Funktion wie "Nimm diese Animationsspur und addiere zu allen Keyzeiten den Wert aktuelles Bild / aktuelle Zeit". Es erschien mir eigentlich nicht so kompliziert, daher dachte ich das müsste es irgendwo geben.
 
Wenn eine Animation von Xpresso gesteuert wird, dann brauchst du doch keine Keys! Du sagst per Xpresso, wie die Animation aussieht und auch wann!
 
Ich fürchte, dazu kenne ich mich dann doch noch nicht genug aus in Xpresso. Bei einer ganz simplen Animation ist das ja noch kein Problem, aber wie sieht es mit komplexeren Dingen aus? Ein Objekt, das z.B. mit 20 Animationsspuren versehen ist, wo die Werte zwischen den Keys sich nicht unbedingt linear verändern... klingt für mich etwas kompliziert, das per Xpresso zu gestalten. Aber wie gesagt, kenne mich damit noch nicht so aus. Habe bisher hauptsächlich Stills gerendert oder nur kleine Animationen per Zeitleiste erstellt.
 
Nun - dann dürftest du wohl um ein kopieren und verschieben in der Zeitleiste nicht herumkommen. - und da man in so einem FAll einfach die Animation verschiebt oder (und da fehlt leider eine Angabe darüber, welche Cinema-Version du benutzt) du benutzt einfach die Motionclips - da werden die kompletten Animationen gespeichert und werden einfach wie in einer Videosoftware abgemischt.
 
Ich benutze Release 10. Hm, Motionclips? Mal schauen, kann ich leider im Moment nicht überprüfen ob ich die habe / ob es funktioniert. Erstmal danke für die Tipps.
 
Nein die 10er hat keine Motions soviel ich weiss. Voll der beschiss.

Grotten frag doch mal Marc hier im Forum, der weiss ziemlich viel und er kennt sich auch gut mit XPRESSO und mit C.O.F.F.E.E. aus.
 
Hi!

Keine Ahnung, ob's eleganter geht und auch nicht, ob's damit überhaupt funktioniert, aber der Ansatz erscheint mir recht spannend:
Mittels doc->AnimateObject([BaseObject] op, [BaseTime] time, [int] flags); kannst Du die Animations-Zeit eines einzelnen Objekts setzen und diese somit von der globalen Zeit "lösen"... :)

Liebe Grüße,
Mark.
 
Hallo Mark,

klingt wirklich spannend, als ob es klappen könnte... leider weiß ich gar nicht, wo und wie ich diese Befehle einsetze :-/

Ich habe es ja nun mit einem ganz einfachen (dachte ich) Skript versucht, da sich wirklich nur die Z-Position schlagartig von 0 auf -1 ändern sollte, und dann in 0,2-Schritten wieder zurück auf 0. Die Werte, wann denn auf -1 gesprungen werden soll, kommen per Spline-Punkten. Nun habe ich mir folgendes ins Coffee-Node geschrieben:


main()
{
if (!SplineList) return FALSE;
{
if (!instanceof(SplineList, PointObject)) return FALSE;
var pcnt = SplineList->GetPointCount();
Output1 = 0;
var i;
var j;
j = 0;
for(i=0; i<pcnt; i++) {
var p = SplineList->GetPoint(i);
for(j=0; j<=5; j++) {
if (p.x+(0.04*j) == Value)
Output1 = (-0.2)*(5-j);
}
}
}
}


Die Werte kommen über den Input SplineList, die Zeit über Value. Keine Ahnung, ob das nach Pfusch aussieht, aber beim ersten Wert 0.28 funktioniert es gut: Bild 7 produziert den Wert -1, Bild 8 -0.8, Bild 9 -0.6, Bild 10 -0.4, Bild 11 -0.2 und zu guter Letzt Bild 12 den Wert 0.

Aber dann passiert folgendes: bei verschiedenen Werten erzeugt das Coffee-Skript nicht immer die Folge -1, -0.8, -0.6, -0.4, -0.2, -0 sondern manchmal einfach


-1, -0.8, 0, -0.4, 0, 0
-1, -0.8, 0, 0, -0.2, 0
0, -0.8, -0.6, 0, -0.2, 0

und so weiter... sprich, scheinbar beliebige Werte der Folge werden durch 0 ersetzt, nachfolgende Werte aber durchaus wieder richtig berechnet. Wie kommt das? Wie kann ich das beheben? Ich habe einfach mal verschiedene Werte ausprobiert und ein paar herausgefunden, die fehlerfrei arbeiten. Aber eigentlich wollte ich da auch mal nach Belieben welche einsetzen und nicht nur die, die dem Programm genehm sind ;-)
 
Zuletzt bearbeitet:
Zurück