COFFEE-Node & RenderData

Matthias

Spasspatrouille
Hallo zusammen,

Ich möchte gerne mit einem COFFEE-Node den zu erzeugenden Dateiname in den Rendervoreinstellungen manipulieren.
Dazu habe ich einen COFFEE-Node mit einem Dateiname-Variable Eingang (DatNam) erzeugt und leite in diesen Eingang einen String.

main()
{
var BaseDocument = GetActiveDocument();
var RenderData = BaseDocument -> GetFirstRenderData();
var BaseContainer = RenderData -> GetContainer();
BaseContainer -> SetData( RDATA_PATH, DatNam );
RenderData -> SetContainer( BaseContainer );
BaseDocument -> SetActiveRenderData( RenderData );
}

Wieder einmal klappt das grundsätzlich! Allerdings zeigt mir der COFFEE-Node im Attribute Manager wieder mal so ne olle Meldung:

Fehler: Member not found

Die Meldung bezieht sich auf die letzte Zeile. Also die mit:

BaseDocument -> SetActiveRenderData( RenderData );

Gut ist: (Seltsamerweise) funktionierts trotzdem!
Schlecht ist: Es "funktioniert" mit einem Versatz von einem Frame!

Wieso Frame? Weil ich den pro Frame zu erzeugenden Dateinamen nicht nur mit der entsprechenden Framenummer, sondern mit einem Klartext versehen will. ...und ja, das muss sein!

Hoffe jemand kann mir da weiterhelfen.
Danke im Voraus
Matthias

EDIT:
Habe gerade festgestellt, dass ich auf die Letzte "Programm"-Zeile verzichten kann! Klappt trotzdem. Gibt im Attribute-Manager auch keine Fehlermeldung mehr, das Problem bleibt aber bestehen!

EDIT2:
Sooo, nach weiterem rumprobieren hab ich mit Entsetzen festgestellt, dass der Ziel-Pfad in den Rendervoreinstellungen zwar ändert wenn ich mich durch die Zeitleiste bewege, also macht was er sollte, aber nicht wenn ich die Sequenz rendere. Dann nimmt der Renderer nur den letzten, gesetzten Eintrag im Pfad der Rendervoreinstellungen und setzt wie üblich Nümmerchen dahinter. -Mist

help
 
Zuletzt bearbeitet:
Hi daltonmonaie!

Per "EventAdd()" bekomme ich es hin, daß der Filename passend zum jeweiligen Frame geändert wird:
Code:
main()
{
var doc = GetActiveDocument();
var rd = doc->GetFirstRenderData();
var bc = rd->GetContainer();
bc->SetData(RDATA_PATH, DatNam);
rd->SetContainer(bc);
EventAdd();
}
Wie man allerdings den (zusätzlichen) "Framenummer-Anhang" los wird, weiß ich nicht :(
...man könnte evtl. per "GeFileRename" das vorhergehende Bild umbenennen :)
...könnte man sich evtl. selbst um's Rendern und dem anschließenden Speichern kümmern? ...meine Erkältung verhindert da aber weiteres Denken ;) *röchel*

Liebe Grüße,
Mark.
 
Hi Mark,

Schön, dass das doch noch einen Thread gibt :)

Ja, das mit EventAdd() hab' ich auch festgestellt... Dann klappts, allerdings nur wenn du dich manuel duch die Timeline klickst. Das Ding ist aber, dass ich auf den Renderbutton klicken will, und eine (pseudo)-Animation rendere. Dabei soll sich pro gerendertem Bild der Datei und Pfadname ändern.
Ich habe mich im PluginCafé aufklären lassen, dass das mit höchster Wahrscheinlichkeit nicht gehen wird! Denn dank der Programmstruktur ist es nicht möglich beim rendern auf diese Rendervoreinstellungen zuzugreifen... ...wenn ich das dann ma richtig kapiert hab' :)
Tja, jedenfalls hab' ich dann heute Mittag die selbe Idee wie du hattest ausprobiert: Ich verzögere mit Speicher-Node den String-Input in den Coffee-Node um ein Frame (damit das Bild schon als Datei vorliegt), und wende danach die GeFileRename-Funktion darauf an. Klappt super! Nun noch ein wenig tunen hier und da und die Geburt ist geschafftt. Das aber erst am Montag.
Einmal mehr denk ich: Was ein geniales Programm: Klappts so nicht, machs einfach anders!

Jedenfalls danke für deine Antwort. Ich wünsche dir gute Besserung und hoffe du kannst trotzdem das WE geniessen....

Liebe Grüsse
Matthias
 
Hi daltonmonaie!

...ich sehe schon: demnächst werden wir alltägliche Windowsarbeiten mittels Cinema4D+XPresso+Coffee realisieren: umbenennen, kopieren etc. ;)

...und wenn ich wüsste, wie man auf ALLE Classen in Coffee-Tags zugreift - "BrowseFiles" läßt sich wie oben einfach nicht erzeugen :( - hätt ich beinahe Lust gehabt mal einen "File-Browser" in C4D zu erstellen: alle Files eines Ordners als z.B. Kugeln in einem Würfel ... "Verschieben" per Drag'n'Drop ;)

Somit mal zurückgefragt: hast Du eine Ahnung, welche Classen mit Coffee-Tags oder Coffee-Nodes nutzbar sind bzw. kennst Du eine diesbezügliche Dokumentation?

Liebe Grüße,
Mark.
 
Moin Mark,

Ne du, ich hab' leider bis jetzt auch noch nichts konkretes gefunden. Aber im SDK ist ein Hinweis welcher einem vielleicht ein bisschen hilft es zu ahnen ob die Funktion erlaubt ist oder nicht. Da steht irgendwo, dass es bezüglich den COFFEE-Expressions, also Coffee-Tag & Node, Einschränkungen gebe um der Verbreitung von Viren entgegen zu halten.
Da scheint es schon einen Zusammenhang zu geben wegen dem BrowsFiles, dass sich nicht erzeugen lässt. Weil damit wäre es schliesslich möglich Dateien effizient und HD-Deckend zu manipulieren. (Was wir ja auch immer gerne wollen ;-] :p )
Bin mir jetzt nimmer ganz sicher, aber ich glaub' auch FileSelect() hat nicht funktioniert mit dem Coffee-Tag. Damit liesse sich dem User anbieten, zu wählen welche Datei er gerne mit Virus verseuchen möchte... -> ne weiss ned warum das nicht klappt/e.
Tut mir leid, aber ich hab da auch keine Ahnung. Aber wie schon gesagt: Es wird meistens möglich sein, seine Idee irgendwie durchzustieren. Müssen halt ausprobieren und uns auf dem laufenden halten.

Liebe Grüsse
Matthias
 
Zurück