{"id":237,"date":"2026-11-06T22:35:15","date_gmt":"2026-11-06T22:35:15","guid":{"rendered":"https:\/\/nils-becker.org\/?p=237"},"modified":"2026-11-06T22:35:51","modified_gmt":"2026-11-06T22:35:51","slug":"lut-werkbank-eigene-3d-luts-fuer-darktable-bauen-2","status":"publish","type":"post","link":"https:\/\/nils-becker.org\/?p=237","title":{"rendered":"LUT-Werkbank: eigene 3D-LUTs f\u00fcr darktable bauen"},"content":{"rendered":"\n<p>Ich habe mir ein kleines Werkzeug gebaut, mit dem man eigene 3D-LUTs f\u00fcr darktable gestalten kann: die LUT-Werkbank. Sie l\u00e4uft komplett im Browser, und ihr k\u00f6nnt sie unten direkt ausprobieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie es dazu kam<\/h2>\n\n\n\n<p>Angefangen hat alles mit einem Portr\u00e4t im Gegenlicht bei Sonnenuntergang. Das JPG aus meiner Sony a6400 sah gro\u00dfartig aus: rosige Haut, warmes Licht, kr\u00e4ftige Farben. Dieselbe RAW-Datei in darktable wirkte dagegen flau und kippte ins Sepia.<\/p>\n\n\n\n<p>Der Grund ist simpel. Die Kamera bearbeitet ihre JPGs ab Werk kr\u00e4ftig, darktable startet bewusst neutral. Den Look kann man mit Modulen wie sigmoid, color balance rgb und color equalizer nachbauen. Irgendwann wollte ich aber verstehen, was bei so einer Farbver\u00e4nderung eigentlich mathematisch passiert. Und wie man einen Look als Datei festh\u00e4lt, die man immer wieder verwenden kann.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was eine 3D-LUT ist<\/h2>\n\n\n\n<p>Eine 3D-LUT ist eine Tabelle, die jeder Eingangsfarbe eine Ausgangsfarbe zuordnet. Mathematisch ist das eine Abbildung vom Farbw\u00fcrfel in den Farbw\u00fcrfel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>       f: &#91;0,1]\u00b3 \u2192 &#91;0,1]\u00b3, (r, g, b) \u21a6 (r\u2032, g\u2032, b\u2032)<\/code><\/pre>\n\n\n\n<p>Alle unendlich vielen Farben kann man nicht speichern. Deshalb wird der W\u00fcrfel in ein Gitter eingeteilt: Auf jeder Achse setzt man in gleichen Abst\u00e4nden Markierungen, meist 33 St\u00fcck von 0 bis 1. Jede Kombination aus einer Rot-, einer Gr\u00fcn- und einer Blaumarkierung ist ein Gitterpunkt, \u00e4hnlich wie die Kreuzungen auf kariertem Papier, nur dreidimensional. F\u00fcr jeden der 33\u00b3 = 35.937 Gitterpunkte steht die Ausgangsfarbe in der Datei. Liegt eine Farbe zwischen den Gitterpunkten, wird aus den acht Ecken des kleinen W\u00fcrfelchens interpoliert, in dem sie liegt. Das ist wie bei einer Wetterkarte, die die Temperatur nur an einzelnen Messstationen kennt und die Orte dazwischen sch\u00e4tzt. Je dichter das Gitter, desto genauer die LUT.<\/p>\n\n\n\n<p>In einer <code>.cube<\/code>-Datei steht das ganz einfach als Text: ein paar Kopfzeilen, danach eine Zeile pro Gitterpunkt mit drei Zahlen. Rot l\u00e4uft als erstes, dann Gr\u00fcn, dann Blau. Die Position der Zeile verr\u00e4t also die Eingangsfarbe, ihr Inhalt die Ausgangsfarbe.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Warum drei Kurven nicht reichen<\/h2>\n\n\n\n<p>Mein erster Gedanke war: Man braucht doch nur drei Kurven, eine f\u00fcr Rot, eine f\u00fcr Gr\u00fcn, eine f\u00fcr Blau. Das stimmt aber nicht. Bei drei Kurven h\u00e4ngt jeder Ausgangskanal nur von seinem eigenen Eingangskanal ab. Eine Regel wie \u201eOrange etwas r\u00f6ter machen, Grau aber in Ruhe lassen\u201c l\u00e4sst sich so nicht ausdr\u00fccken, denn daf\u00fcr m\u00fcssen alle drei Kan\u00e4le gemeinsam entscheiden.<\/p>\n\n\n\n<p>Genau das kann eine 3D-LUT: Jeder Gitterpunkt darf eine v\u00f6llig eigene Ausgangsfarbe bekommen. Drei Kurven sind nur ein Spezialfall davon, eine sogenannte 1D-LUT.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was die LUT-Werkbank kann<\/h2>\n\n\n\n<p>Die Werkbank baut eine 3D-LUT aus Werkzeugen, die man aus der Bildbearbeitung kennt, und rechnet am Ende alles in ein Gitter um. Die Vorschau l\u00e4uft schon \u00fcber dieses Gitter, also genau so, wie darktable die LUT sp\u00e4ter anwendet.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kurven:<\/strong> klassische Gradationskurven f\u00fcr RGB gesamt und die einzelnen Kan\u00e4le, mit Histogramm.<\/li>\n\n\n\n<li><strong>Farbton:<\/strong> Kurven \u00fcber dem Farbton, zum Verschieben (\u00b160\u00b0), S\u00e4ttigen und Aufhellen einzelner Farbbereiche. Eine Farbleiste zeigt f\u00fcr den gew\u00e4hlten Punkt, welche Farben er erreichen kann.<\/li>\n\n\n\n<li><strong>Mapping:<\/strong> Eine Farbe im Bild anklicken und im Farbrad auf eine Zielfarbe ziehen. Reichweite, St\u00e4rke und Helligkeit sind einstellbar, der \u00dcbergang ist weich.<\/li>\n\n\n\n<li><strong>3D-Ansicht:<\/strong> Das Gitter als drehbare Punktwolke, im RGB-W\u00fcrfel oder in OKLab. Man sieht direkt, wie die LUT den Farbraum verformt.<\/li>\n\n\n\n<li><strong>Inspektor:<\/strong> Zeigt f\u00fcr jedes Pixel die Gitterzelle, die Zeile in der <code>.cube<\/code>-Datei und die Interpolationsanteile.<\/li>\n\n\n\n<li><strong>Export:<\/strong> als <code>.cube<\/code>-Datei oder als HaldCLUT-PNG, mit einstellbarer Gittergr\u00f6\u00dfe (17, 33 oder 65) und Deckkraft.<\/li>\n<\/ul>\n\n\n\n<p>Gerechnet wird \u00fcberwiegend im Farbraum OKLab. Dort entsprechen Farbton, S\u00e4ttigung und Helligkeit ziemlich gut dem, was wir wahrnehmen. Graue T\u00f6ne bleiben bei den Farbwerkzeugen unber\u00fchrt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">So nutzt ihr die LUT in darktable<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In der Werkbank einen Look bauen und als <code>.cube<\/code> exportieren.<\/li>\n\n\n\n<li>In darktable in der Dunkelkammer das Modul <strong>lut 3D<\/strong> aktivieren und die Datei ausw\u00e4hlen.<\/li>\n\n\n\n<li><strong>application color space<\/strong> auf <strong>sRGB<\/strong> stellen, als Interpolation <strong>tetrahedral<\/strong> w\u00e4hlen.<\/li>\n\n\n\n<li>Bei Bedarf die Deckkraft des Moduls reduzieren.<\/li>\n<\/ol>\n\n\n\n<p>Wichtig: Die LUT erwartet Werte zwischen 0 und 1, also ein Bild, das der Tonemapper (sigmoid oder filmic) schon in den Bildschirmbereich gebracht hat. Werte dar\u00fcber werden abgeschnitten. Wer einen Look \u00f6fter braucht, speichert das Modul danach als Style.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Grenzen und Tipps<\/h2>\n\n\n\n<p>Eine LUT wirkt punktweise: Sie sieht nur die Farbe eines Pixels, nicht seine Nachbarn. Sch\u00e4rfen, Entrauschen oder lokaler Kontrast sind damit grunds\u00e4tzlich nicht m\u00f6glich. Auch die Werkbank selbst kann nicht jede denkbare LUT erzeugen. Kanalmischer oder Farbe abh\u00e4ngig von der Helligkeit, etwa Split-Toning, fehlen zum Beispiel noch.<\/p>\n\n\n\n<p>Ein paar Tipps aus meinen ersten Versuchen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kleine Schritte:<\/strong> 5 bis 10\u00b0 Farbton oder 10 % S\u00e4ttigung wirken oft schon deutlich.<\/li>\n\n\n\n<li><strong>An mehreren Bildern testen:<\/strong> Ein Look, der auf einem Foto toll aussieht, kann auf dem n\u00e4chsten kippen.<\/li>\n\n\n\n<li><strong>Verl\u00e4ufe pr\u00fcfen:<\/strong> Himmel und Haut zeigen am schnellsten, wenn eine Kurve zu steil ist.<\/li>\n\n\n\n<li><strong>Deckkraft nutzen:<\/strong> Oft ist die LUT bei 60 bis 80 % am sch\u00f6nsten.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Ausprobieren<\/h2>\n\n\n\n<p>Die Werkbank l\u00e4uft komplett in eurem Browser, es werden keine Bilder hochgeladen. Ladet ein eigenes Foto, spielt mit den Kurven und exportiert eure LUT. Entstanden ist das Tool in einem langen Gespr\u00e4ch mit Claude, vom ersten \u201eWie funktioniert eine LUT eigentlich?\u201c bis zur 3D-Ansicht.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><a href=\"https:\/\/nils-becker.org\/wp-content\/uploads\/2026\/11\/lut-werkbank_wordpress.html\" data-type=\"link\" data-id=\"https:\/\/nils-becker.org\/wp-content\/uploads\/2026\/11\/lut-werkbank_wordpress.html\">https:\/\/nils-becker.org\/wp-content\/uploads\/2026\/11\/lut-werkbank_wordpress.html<\/a><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Ich freue mich \u00fcber Feedback und eure Looks in den Kommentaren.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich habe mir ein kleines Werkzeug gebaut, mit dem man eigene 3D-LUTs f\u00fcr darktable gestalten kann: die LUT-Werkbank. Sie l\u00e4uft komplett im Browser, und ihr k\u00f6nnt sie unten direkt ausprobieren. Wie es dazu kam Angefangen hat alles mit einem Portr\u00e4t im Gegenlicht bei Sonnenuntergang. Das JPG aus meiner Sony a6400 sah gro\u00dfartig aus: rosige Haut, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[57,55],"class_list":["post-237","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-fotographie","tag-lut3d-de"],"_links":{"self":[{"href":"https:\/\/nils-becker.org\/index.php?rest_route=\/wp\/v2\/posts\/237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nils-becker.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nils-becker.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nils-becker.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nils-becker.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=237"}],"version-history":[{"count":1,"href":"https:\/\/nils-becker.org\/index.php?rest_route=\/wp\/v2\/posts\/237\/revisions"}],"predecessor-version":[{"id":238,"href":"https:\/\/nils-becker.org\/index.php?rest_route=\/wp\/v2\/posts\/237\/revisions\/238"}],"wp:attachment":[{"href":"https:\/\/nils-becker.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nils-becker.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nils-becker.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}