Logo Logo
///  >

Praxis : Die bunte Welt der DCTLs in Resolve - Teil 2: DCTL-Scripting

von Do, 22.Juli 2021 | 4 Seiten | diesen Artikel auf einer Seite lesen

 Einleitung
 Die erste Funktion

Im ersten Teil unseres Artikels haben wir kurz vorgestellt, was die DCTL eigentlich ist und wie man DCTL-Scripte in Resolve einsetzen kann. Wen es danach in den Fingern gejuckt hat, einmal selber Hand anzulegen, dem helfen vielleicht die folgenden ersten Schritte beim Einstieg...

Ganz ohne Vorkenntnisse geht es allerdings nicht. Man sollte schon einmal etwas gescriptet haben und etwas von der C-Syntax mitbekommen haben. Darunter versteht man ein paar typische Regeln, wie man Script-Strukturen formuliert. Eine C-ähnliche Syntax kommt in zahlreichen Programmiersprachen (wie auch in Java oder Javascript) zum Einsatz. Funktionsblöcke werden beispielsweise in geschweiften Klammern zusammengefasst oder Befehle enden mit einem Strichpunkt.



Die erste Funktion



Die Haupteingabefunktion (transform) sollte als unterstes - also nach allen anderen Funktionen - im Programmtext definiert werden und laut Handbuch einen float3-Vektor zurückgeben. Dieser float3-Rückgabewert enthält als Ergebnis der Funktion die drei Farbkanäle des transformierten Pixels, also in der Regel Rot, Grün und Blau.

Schauen wir uns einfach einmal eine einfache DCTL mit einer einzigen (Haupteingabe)-Funktion an. Diese wird (wie Main() in anderen Programmiersprachen) als erstes vom Programm ausgeführt und muss wie jede Funktion in einem DCTL-Script mit "__DEVICE__" beginnen:


__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)
{
const float r = p_R * 1.0f;
const float g = p_G * 2.0f;
const float b = p_B * 1.0f;

return make_float3(r, g, b);
}


Zum Ausprobieren speichert man dieses Script in einem Editor mit der Dateiendung *.DCTL ( also zum Beispiel "test.dctl" ) in folgendes Verzeichnis:


Mac OS X:
Bibliothek/Anwendungssupport/Blackmagic Design/DaVinci Resolve/LUT

Windows:
C:/ProgrammDaten/Blackmagic Design/DaVinci Resolve/Support/LUT

Linux:
/home/resolve/LUT


Wie man eine solche DCTL ausprobiert haben wir im ersten Teil dieses Artikels bereits erklärt. Sehen wir uns einmal detaillierter an, was in unserem Script passiert:


__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)


In dieser ersten Zeile wird die Hauptfunktion (transform) definiert. Unser Script bekommt dabei ein paar Variablen von Resolve auf den Weg, die wir mit unserem Script im Anschluss nutzen können.

Dies sind Höhe und Breite des gesamten Frames (int p_Width, int p_Height), die exakte Position des zu bearbeitenden Pixels (int p_X, int p_Y) sowie dessen Rot, Grün und Blau-Wert (float p_R, float p_G, float p_B).

Int-Variablen fassen dabei ganzzahlige Werte und Float-Variablen sind Gleitkommawerte, die IMMER mit einem Punkt und NIE mit Komma getrennt werden. Damit man konstante Zahlenwerte im Script unterscheiden kann, hängt man bei Fließkommazahlen ein kleines f an die Zahl, um sie als float zu nutzen.

Im Funktionsblock schnappen wir uns die übergebenen Farbwerte des Eingangs-Pixels (p_R, p_G und p_B):


const float r = p_R * 1.0f;
const float g = p_G * 2.0f;
const float b = p_B * 1.0f;


Wir definieren also in einem Rutsch gleichzeitig drei neue lokale Variablen r, g und b in denen wir die Veränderungen durch unsere Funktion speichern wollen. Im unserem Beispiel multiplizieren wir einfach alle Pixel im grünen Kanal mit dem Faktor 2. Den roten und blauen Kanal lassen wir unverändert, indem wir mit 1 multiplizieren. Wir schreiben 1.0f, statt 1, damit der Computer weiß, dass wir mit Fließkommazahlen arbeiten.

Die letzte Zeile fasst die drei Variablen (r, g, b) zu einem dreidimensionalen Float-Vektor zusammen, den Resolve als Rückgabefunktion erwartet:


return make_float3(r, g, b);


RGB nach YUV / Helligkeitsregler - hin und zurück


4 Seiten:
Einleitung / Die erste Funktion
RGB nach YUV / Helligkeitsregler - hin und zurück
Jetzt alles(s) zusammen...
  

[noch keine Leserkommentare] [Kommentar schreiben]   

Weitere Artikel:


Praxis: ACES in Theorie und Praxis Teil 2: Der ACES Workflow in Blackmagic DaVinci Resolve Mi, 15.September 2021
ACES ist für viele nur ein theoretischer Begriff. Wir wollen zeigen, wie man in DaVinci Resolve einen ACES Workflow korrekt einstellen kann...
Praxis: Die bunte Welt der DCTLs in Resolve - Teil 1: Zwischen LUT und Plugin Di, 13.Juli 2021
DCTLs können mehr als LUTs und weniger als Plugins - und sind gerade deswegen für viele Einsatzzwecke interessant...
Grundlagen: Konsistente Farben für Filmprojekte - ACES in Theorie und Praxis Teil 1: Die Basics Di, 7.September 2021
Jeder hat schon davon gehört, aber die wenigsten nutzen es für ihren persönlichen Workflow: Die Rede ist von dem Academy Color Encoding System, kurz: ACES. Wir wollen einmal die Basics des Industriestandards für Farben beim Film beleuchten.
Tips: Schnell zu guten Hauttönen bei Sony Alpha S-LOG 3 Material kommen Do, 29.Juli 2021
Wir hatten bereits die wichtigsten Workflows gezeigt, um in DaVinci Resolve schnell zu guten Hauttönen zu gelangen. Den Auftakt zu kameraspezifischen Tips machen hier nun die aktuellen Sony DSLMSs Alpha 7S III, die Alpha 1 etc. mit S-Log 3 Material. Wie kommen wir also am schnellsten zu guten Hauttönen mit den Sony Alphas?
Grundlagen: Full Data Video Level Studio Swing? Wenn der Pegel nicht mehr stimmt... Di, 27.Juli 2021
Erfahrungsberichte: Atomos Neon 24 - 4K HDR-Grading Display-Recorder Do, 24.Juni 2021
Tips: LUTs in Lumetri unter Premiere Pro CC richtig anwenden Di, 4.Mai 2021
Tips: Schnell zu guten Hauttönen bei LOG und RAW Video kommen: Teil 1: Workflows in DaVinci Resolve Mi, 28.April 2021
Tips: Farbmanagement korrekt? Der slashCAM Color Workflow Schnellcheck! Fr, 19.Juni 2020
Ratgeber: RAW Format Vergleich - Ein tabellarischer Funktions-Überblick Di, 11.Februar 2020
Test: DJI Mavic Mini - Bester Match: GoPro Hero8 Black oder DJI Osmo Action? Fr, 20.Dezember 2019


[nach oben]


[nach oben]















Artikel-Übersicht



Artikel-Kategorien:

Messenschraeg
9-13. Oktober / Las Vegas
NAB 2021
3-6. Dezember / Amsterdam
IBC 2021
weitere Termine von Messen, Schulungen und Roadshows


update am 16.September 2021 - 18:02
ist ein Projekt der channelunit GmbH
*Datenschutzhinweis*