Um das anlegen der Projektstruktur zu vereinfachen gibt es OneShot.
Unter Project Name gibt man den Namen des Projektes an. Unter Shots werden die Bezeichnungen der Shots, getrennt durch Leerzeichen angegeben.
Ok legt nun automatisch die Ordnersturktur an. Möchte man im Nachhinein noch Shots hinzufügen, so ist dies jederzeit möglich in dem man im Dropdown Menü „Project“ das Projekt auswählt und wiederum im Shots Feld die Shots angibt.
OneShot ist unter Y:\_fuer_alle\OneShot zu finden.
Sollte man etwas abändern wollen, so findet sich der source code unter Y:\_fuer_alle\OneShot\python.
Die Ordnerstruktur sieht dann wie folgt aus(an dem Beispielprojekt „a“):
Nuke Script speichern
Beim nutzen von Nuke wird einem die Benamung und das speichern deutlich erleichtert.
Im Saving Wizard wählt man einfach unter Project das Projekt und unter Shot den Shot an dem man arbeitet und wählt dann noch die Art, welche meistens Comp sein wird. Solltet ihr ein eigenes Script für z.B. Roto haben könnt ihr unter Type auch Roto wählen. Sollte im Dropdown nichts passendes zu finden sein kann man es immer noch auf Custom stellen und im Feld unten eine eigene Bezeichnung eingeben. Mit Klick auf speichern wird das Nuke Skript unte Y:/Projects/EuerProject/scenes/euerShot/setup-nuke/ gespeichert.
Sollte es ausnahmsweise nötig sein das script unter einem andern Namen oder außerhalb der Projektstruktut zu speichern, so gelangt man durch klicken auf Cancel zu dem Standard Speicher Dialog von Nuke.
<fc #FF0000>Bug:</fc> Wenn man Nuke schließt erscheint eine Messagebox die fragt ob man das ungespeicherte Projekt noch speichern möchte, wenn man dies mit Ja bestätigt, erscheint der Nuke standard speicher Dialog anstatt des Namin Wizards. Der jenige, der den Fehler behebt, hier einfach den Kommentar löschen. Danke! :)
Speichert regelmäßig neue Versionen!!! Denn so habt ihr im zweifelsfall wenn etwas schief geht immer noch eine alte Version in der der Großteil eurer arbeit erhalten ist. Speichern einer neuen Version ist in Nuke über File→ Save as new Version(Alt+Shift+S) erreichbar.
Solltet ihr z.B. von einem Layout in eine Comp umsteigen wollen, oder den Benutzernamen ändern wollen weil ihr das Comp von wem anders übernehmt, so könnt ihr das unter Edit→Project Settings (im Node Graph S drücken). Dort gibt es einen Tab „Shot Setup“ unter dem ihr einfach das entsprechende Feld ändert und dann speichern drückt. Der Dateiname sollte sich jetzt entsprechend ändern.
Rendern
Auch die Render Node vereinfacht euch die Benamung.
Im Tab Autowrite müsst ihr nurnoch auswählen, was für eine Art das Rendering sein soll z.B. img-prv für Vorschau Renderings für die dailies oder das Mittwochstreffen im Hardcut oder img-prerender für ein Prerendering eures Denoise. Optional kann dann noch ein Filename Comment angegeben werden, wenn ihr z.B. mehrere Rots prerendert macht es Sinn diesen den Filename Comment „rotoMann“ oder „rotoAuto“ zu geben. Ein Klick auf AutoOuput stellt den filepath und die Rendersettings im Write Tab ein. Zum rendern selbst müsst ihr immer noch auf Rendern drücken.
Normalerweise sollten fehlende Unterordner vor dem Rendern automatisch erstellt werden. Sollte dies nicht klappen, kann man dies per Klick auf „MakeFolder“ manuell vornehmen.
Vor dem Rendern wird auch noch eine Kopie eures Nuke Skripts in den gleichen Ordner wie euer Renderoutput kopiert. Solltet ihr euer Skript irgendwie zerschießen, so gelangt ihr so immerhin an die Version des letzten Renderings. Arbeitet jedoch nicht in dem File weiter, sondern kopiert es euch in den setup-nuke Ordner.
Rendern auf der Farm
Sollten eure Skripte aufwendiger werden und anfangen länger zu rendern, so macht es eventuell Sinn diese auf der Farm zu rendern. Dazu nutzen wir als Rendermanager Renderpal. Unter C:\Program Files (x86)\RenderPal V2 findet ihr einerseits den RenderPal Client, welcher laufen muss, wenn der Computer als Slave mitrendern soll und andererseits den RenderPal Remote Controller, über den ihr alle Renderjobs einsehen und managen könnt. Zum rendern eines Nuke Skripts auf auf der Renderfarm selektiert man in seinem Nuke Skript die Write Nodes, welche gerendert werden sollen und klickt anschließend im Menü auf Render→Submit to RenderPal (Shift+R). In dem daraufhin erscheinenden Fenster sollten eigentlich alle Werte stimmen. Man kann eventuell die Priority ändern, unter Pools sollte nur der vfx Pool sthen(da die andern Rechner kein Nuke installiert haben) und unter FrameSplitting ist es sinnvoll „frames“ auszuwählen mit einem Split count von 5. So rendert jeder Rechner immer Pakete von 5 Frames.
Custom Toolbars oder die HdM Toolbar
in der Toolbar findet ihr auch ein HdM Logo, hier habt ihr Zugang zu eigenen Tools.
Wollt ihr Tools hinzufügen, so speichert diese, jenachdem ob es Gizmos, Python Scripts oder TCL Scripte sind in die passenden Ordner unter Y:\_fuer_alle\nukeTools. Diese werden nun automatisch geladen. Ihr müsst sie jedoch noch zu der Toolbar hinzufügen. Dazu öffnet die menu.py in Notepad++. Ihr seht nun am ende den Abschnitt „adding hdm toolbar and tools“ hier drunter könnt ihr über h.addCommand(„Name der im Menuü erscheinen soll“,'nuke.createNode(„NameDesGizmos“)') und optional noch icon=„iconName.png“ euer gizmo einbinden.
Wollt ihr ein nukescript über die toolbar importieren so geht dies über nuke.nodePaste(„EuerNukeFilePath“), siehe das auskommentierte Beispiel für ein Basesetup.
Probleme, Fragen, Anregungen
Sollte es mit den Tools oben irgendwelche Probleme geben, oder solltet ihr Fragen oder Anregungen dazu haben, so könnt ihr mich unter hdm-support@patrickheinen.com erreichen.
Nuke Python Basics
In Nuke könnt ihr alles was ihr in der Benutzeroberfläche vornehmt auch per Python Script machen. Dies bietet einem die Möglichkeit den ein oder anderen lästigen Arbeitsschritt zu automatisieren. Zum ausprobieren von euerm Script könnt ihr den Script Editor nutzen. Diesen könnt ihr euch in jeder Pane über Rechtsklick→Script Editor ablegen. Später könnt ihr eure Python Scripte dann auch speichern und über die menu.py ins menu einbinden. Eine große Hilfe beim Python scripten in nuke ist einerseits der Python User Guide, in dem viele der Basics sehr schön erklärt werden und es auch viele Beispiele gibt, sowie die Nuke Python API, welche alle Klassen und Methoden von Nuke enthällt. Gute Code Schnippsel(Python und TCL) gibt es auch hier. Außerdem zu empfehlen sind die Python Video Tutorials von Frank Rueter hier und hier.
Hier mal die wichtigsten Befehle:
Wert eines Knobs: node.knob(„KnobName“).value()
Wert eines Knobs setzten: node.knob(„KnobName“).setValue(„value“)
selektierte Node: nuke.selectedNode()
selektierte Nodes: nuke.selectedNodes()
selektierte Nodes einer bestimmten NodeKlasse: nuke.selectedNodes(„NodeKlasse“) (Achtung Node Klassen werden immer Großgeschrieben z.b. „Write“)
alle Nodes: nuke.allNodes()
alle Nodes einer bestimmten Klasse: nuke.allNodes(„NodeKlasse“)
eine bestimmte Node: nuke.toNode(„NodeName“)
eine Node erstellen: nuke.nodes.nodename() (in den Klammern kann man schon alle Attribute Knobs Inputs usw. setzten)
MetaDaten auslesen: node.metadata(„key“)
Arri LogC Workflow für Alexa wird in folgendem Dokument beschrieben: 2012-08-02_alexa_logc_curve-usage_in_vfx.pdf
LogC wird für korrektes Compositing nach Linear Light gewandelt. Für die D-21 können wir die 200 ASA Kurve der Alexa nutzen (sie ist annähernd identisch).
Gewandelt wird über eine Formel (hat gegenüber LUT den Vorteil, dass es kein Cipping gibt). Um das linearisierte Bild korrekt darzustellen wird abweichend von o.a. Dokument eine 1D-LUT genutzt, da das D-21 LogC anscheinend schon im REC709 Colorspace ist. Mit 3D-LUT aus Arri LUT-Generator übersättigte Farben.
Für die Implementierung in Nuke wurden folgendes gemacht:
#custom input/output LUTs nuke.root().knob('luts').addCurve("AlexaV3LogC_EI200_Arri_D21", "{ t > 0.128643 ? (pow(10.0, (t - 0.382478) / 0.266007) - 0.076621) / 5.555556 : (t -0.092782) / 5.776265 }") # ViewerProcess LUTs nuke.ViewerProcess.register("Arri_D21_None_EI200", nuke.createNode, ("Vectorfield", "vfield_file Y:/_fuer_alle/nukeTools/luts/D21_EI0200_LogC2Video_LL_nuke1d.cube colorspaceIn AlexaV3LogC_EI200_Arri_D21"))
Für den Anwender bedeutet das:
Um eine (relativ) farbtreue Quicktime Preview rendern zu können müssen folgende Schritte beachtet werden:
- Vor die Write Node eine Vectorfield Node einfügen. In dieser dann folgende Einstellungen übernehmen:
- Nun müssen in der Write Node noch ein paar Einstellungen geändert werden:
- Nach dem rendern sollte nun eine farbtreue mov Datei vorliegen.
Baustelle. Interessante Links: http://ffmpeg.org/trac/ffmpeg/wiki/vfxEncodingGuide http://www.tweaksoftware.com/ http://jefecheck.jefecorp.com/