ERLEDIGT
JA
JA
ANTWORTEN
11
11
ZUGRIFFE
813
813
EMPFEHLEN
-
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?Jeder Helfer freut sich über ein "Danke"
-
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!
Jeder Helfer freut sich über ein "Danke"
-
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.
Jeder Helfer freut sich über ein "Danke"
-
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.
-
29.05.09 18:15 #9
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.... bitte keine C4D-Fragen per PN ...
+++ OUT NOW for CINEMA4D: Al'em - Free Align Plugin + Shaderpack Vol 1 - Free Shaders + Roll-It v1.0 - Free Roll Plugin + Egg-Objekt - Free Egg Primitive +++
eggtion.net
-
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
Geändert von grotten (30.05.09 um 12:36 Uhr)
-
30.05.09 15:05 #11
Hi grotten!
Verzeih, wahrscheinlich bräuchte ich mir nur mehr Zeit nehmen, aber die habe ich nicht: ich verstehe nicht, was Du da machst / machen willst ... inhaltlich.
Was steht in der SplineList, was soll passieren? Ist das konkrete Beispiel nur ein reduzierter Versuch? Sonst könnte die SplineList ja direkt die korrekten Positionsangaben pro Frame tragen...
Was ist statisch, was dynamisch?
Somit komme ich einfach noch mal mit dem AnimateObject, eine Super-Funktion!
Könnte man so einiges mit anstellen.
Aber als einführendes Beispiel nur mal ein Coffee-Node, an dem man das Objekt selbst "obj" (link) den "offset" (integer - globale Zeit in Frames zu der die Animation des Objekts starten soll) und die Geschwindigkeit "speed" (real - als Multiplikator) angeben kann... 
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
main() { var doc = GetActiveDocument(); if (!obj) return false; var gt = doc->GetTime(); var gf = gt->GetFrame(doc->GetFps()); var lf = gf - offset; var lt = new(BaseTime); lt->SetFrame(lf, doc->GetFps() / speed); doc->AnimateObject(obj, lt, null); return true; }
Liebe Grüße,
Mark.... bitte keine C4D-Fragen per PN ...
+++ OUT NOW for CINEMA4D: Al'em - Free Align Plugin + Shaderpack Vol 1 - Free Shaders + Roll-It v1.0 - Free Roll Plugin + Egg-Objekt - Free Egg Primitive +++
eggtion.net
-
Okay, ich gebe es auf... ich verstehe leider nicht, was das Skript macht bzw. was der Output ist und wie ich ihn nutzen kann... bin wohl noch zu müde...
Es könnte aber auch daran liegen, dass ich keinen Schimmer von der Programmiersprache habe.
//EDIT: Okay, einfach nur abtippen, starten... und schon weiß ich was es macht. Sorry!Geändert von grotten (01.06.09 um 12:02 Uhr)
Ähnliche Themen
-
Need Help -> 3D Animations Hintergrund
Von Epinephrin im Forum Cinema 4DAntworten: 14Letzter Beitrag: 10.02.10, 16:04 -
Animations-Tut
Von Der Christian im Forum Cinema 4DAntworten: 3Letzter Beitrag: 04.11.07, 18:47 -
Animations- Dauer
Von manu21 im Forum Cinema 4DAntworten: 4Letzter Beitrag: 29.01.07, 19:23 -
Animations Problem
Von Kampfsessel im Forum Cinema 4DAntworten: 3Letzter Beitrag: 02.09.05, 16:31 -
Animations Problem
Von Interritor im Forum Cinema 4DAntworten: 27Letzter Beitrag: 26.12.04, 22:24





Zitieren


Login







Cinema 4D Tutorial - Ketten erstellen mit Cinema 4D (R11.5)