Transcript: Python in der Visual Effects Branche

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Ja, hallo liebe Hörerinnen und Hörer, herzlich willkommen beim Python-Podcast. Heute ist die 31. Episode.

Wir machen heute Visual Effects und Python, also ein bisschen aus der Filmindustrie.

Und wir haben natürlich neben dem Jochen, hallo Jochen, und mir den Dominik, einen wunderbaren Gast dabei, den Fabian.

Und ich finde, er kann sich selber vorstellen. Er macht nämlich tolle Sachen.

Du musst erst mal erklären, was ist dein Job und wer bist du und was machst du denn?

Ja, hallo, also ich bin Fabian, ich arbeite als Pipeline Developer oder Pipeline TD in der Visual Effects Branche und genau, ich programmiere quasi Arbeitsabläufe im Hintergrund, weil die Datenmengen und das, was da passiert auf dem Bildschirm, da muss halt eine ganze Menge im Hintergrund auch geregelt werden.

Also alles in Python?

Größtenteils schon.

und das, was du da machst, ist irgendwie,

man guckt einen Film und dann explodiert irgendwas

und die Art und Weise, wie das

explodiert, das baust du, oder?

Das macht quasi

der Artist,

der hat ein spezielles Programm,

dass das kann.

Ich bin aber quasi noch

eine Stufe davor.

Ich regele quasi,

dass dieser Artist sich nicht mehr darum

kümmern muss, wo er Sachen abspeichern muss,

sondern quasi einfach nur

sagen muss, okay, ich möchte

an Haus XY arbeiten und das in die Luft jagen,

machen wir mal eine Datei auf.

Und das ist quasi mein Job, den ich da im Hintergrund mache,

dass die das alles nicht mehr nachdenken müssen,

wo sie Sachen abspeichern, wo sie Dateien hinkommen.

Diese ganze Geschichte in der Filmindustrie,

die kann man tatsächlich auch mit Python machen.

Und darüber werden wir euch heute ein bisschen erzählen.

Schön, dass du da bist, Fabian.

Vielleicht fangen wir doch mal bitte ein bisschen Struktur an

Ihr wisst, wir vermissen das immer ein bisschen selber

Es gibt ein bisschen News, glaube ich

Ja, was haben wir denn da so?

Wir haben ein bisschen viel Neuigkeiten

Aber

Also ein Ding, was mich so ein bisschen freut

Oder, ach nee, das nehme ich mir auch

Das nehme ich mir auch für was anderes

Für die Fix später

Komm, jetzt musst du das spoilern

Es hat was mit der Fischshelle zu tun

Das reicht

Mit der Fischshelle, die kennst du auch

Oh ja, natürlich kenne ich die, das ist lustig, sehr gerne.

Ja, und ansonsten

ist halt noch irgendwie

Django 3.2 ist released worden.

Oh ja.

Habt ihr schon an den Produktionen, also

relativ einfach ging der Umstieg

ohne Probleme. Ja, also bei mir war das

das problemloseste

Django Upgrade,

das ich bisher so hatte. Man kann sich

an ein neues Setting gewöhnen, die da

die Standard-Key oder Primary-Key-Variante ist,

die man gerne für seine ganzen Projekte hätte.

Ja, das muss man jetzt halt konfigurieren sozusagen.

Genau.

Sonst kriegt man Warnungen.

Genau, man kriegt nur eine Warnung.

Das war alles und dann funktioniert alles wie vorher auch.

Und er nimmt sogar die alten Keys und behält die.

Genau.

Macht sie also nicht weg und nimmt also nur die neuen Tabellen,

die man einbaut.

Also es passiert nichts Schlimmes, wenn man jetzt irgendwie upgradet.

Nicht, dass dann plötzlich alle Primary-Keys da so groß sind.

Wir sind mittlerweile bei 3, 9, 4 oder so.

und ich warte immer noch auf 3.10.

Ihr wisst warum. Ihr kommt ja jetzt demnächst auch bald.

Ja, genau. Ich hätte auch noch ein paar News.

Einfach mal aus meiner Branche.

Autodesk Maya

ist jetzt auf Version

2022 hochgestuft worden.

Das Besondere daran ist,

wir sind endlich auf

Python 3.

Oh, wow.

Blast

from the past.

Ihr hört, also die

Reflexindustrie ist anscheinend sehr weit vorne, was

Software angeht. Woran das wohl liegt,

also ich habe gehört, viele arbeiten dort tatsächlich

mit Windows und die Interpreter sind alle

eingebaut in die Programme.

Ja, die sind

fast durchgängig allen

Programmen eingebaut,

was natürlich das Upgraden zwischen den Python-Versionen

relativ schwierig macht, weil

die Programme

sind eher konservativ eingestellt und sagen,

okay, bevor wir den Artists da

ihre Skripte kaputt machen,

fassen wir das mal lieber nicht an.

Und naja,

zwölf Jahre später.

Wird jetzt so langsam

auch Security-technisch und

so kritisch, dass man

Python 2 eigentlich nicht mehr so richtig

benutzen sollte.

Und ja,

jetzt ziehen wir langsam nach.

Ich würde sagen,

gut drei Viertel aller

Programme, die so gängig sind in der Industrie,

haben es inzwischen

einigermaßen geschafft auf den Sprung,

aber es gibt immer noch so ein paar

Nachzügler. Vielleicht für alle ganz

unbedeckt. Und was ist denn Maya?

Maya ist ein

sehr geläufiges

3D-Programm aus

der Branche.

Man kann Modelle, Objekte

rendern, generieren, darstellen,

bauen. Genau.

All das im Grunde genommen.

Sprich, du willst

einen Charakter oder ein Haus

irgendwo in eine Szene stellen,

dann kannst du es da bauen,

hübsch ausrendern und

ja,

auch durchprogrammieren mit Python, wenn du möchtest.

Das heißt, ich kann dann Achsen skalieren, drehen und Bewegungsabläufe skripten?

Oder was macht man da mit Python?

Genau, die Python-API in Maya ist eigentlich sehr, sehr mächtig.

Du kannst im Grunde genommen wirklich alles durchskripten, wenn du möchtest.

Alles, was du per Keyboard und Maus eingeben kannst, kannst du genauso gut in Python einskripten.

Also wenn du wild genug bist, kannst du wirklich ein Python-Programm schreiben von A bis Z und am Ende hast du einen Baum.

Kein Problem.

Das wäre nett. Also dann hätte man verschiedene Objekte und könnte dann eine kleine Bibliothek bauen mit verschiedenen Bäumen.

Dann hat man einen ganzen Wald und dann in dem Wald, da muss natürlich noch ein Schloss und dann noch ein Schloss mit dem Drachen.

Ja, aber schick. Weißt du, warum? Aber eigentlich sind wir da schon fast im Thema.

Wir können eigentlich auch...

Ja.

können wir auch einfach

weißt du oder

das kannst du wahrscheinlich

ja sagen, woran das liegt

warum hat man sich denn da so auf Python

quasi

standardisiert, weil

ich kenne das jetzt aus anderen Bereichen

da es wird häufig zum, damit man halt

irgendwie

so Applikationen skripten kann, also ich kenne das

zum Beispiel hier von der digitalen

Digital Audio Workstation

die ich hier verwende, das ist Reaper

da ist das Lua oder halt auch von

von diversen anderen, so Money, Money,

Online-Banking ist auch Lua, also ganz oft ist es Lua,

wenn man das halt super einfach integrieren kann in C.

Aber Python ist eigentlich gar nicht so super

einfach zu integrieren.

Warum wird da Python genommen?

Ich glaube,

das ist auch so ein bisschen historisch bedingt.

Die ersten Programme und

Anbindungen haben einfach mit Python

angefangen und nach und nach hat sich das quasi

etabliert. Es gibt auch genug

Beispiele von, also Lua

zum Teil habe ich auch schon gesehen.

Aber viele Programme, unter anderem Maya, haben zum Beispiel auch einfach ihre Skriptsprache selbst erfunden. In Maya gibt es Mail, die Maya Embedded Language, erinnert sehr stark an Bash.

Oh.

Okay.

Also wer Bash mag, hat da wahrscheinlich seine helle Freude dran.

Und das Schöne an Python ist aber, dass man sehr gut eigentlich dynamisch Sachen rappen kann mit Python.

Im Grunde genommen in Maya ist Python nichts anderes als ein großer Rapper um Mel.

Sprich...

Das heißt, du sprichst eigentlich direkt

per Kommandoteile mit

den verschiedenen Endpunkten dieses Programms und

Kommandozeile ist hier übertrieben.

Also du befindest dich im Programm selbst,

aber Mail ist

Bash ähnlich. Also du

arbeitest aber jetzt nicht auf der Kommandozeile.

Das heißt, die API, das Interface des Programms ist irgendwie so,

dass es halt Befehle entgegennimmt,

die man dann aber

nicht eingeben möchte, sondern die man

automatisiert über Python-Skripte.

Also ich stelle mir das so vor,

Menschen, die ganz viel so 3D-Sachen machen, die

programmieren ellenlange Skripte,

ganz viel Code untereinander, um

Dinge zu automatisieren und

schöne Figuren zu rendern oder Bäume

und diese Wälder, wo wir irgendwo drüber gesprochen

hatten. Entspricht das der Realität

oder wie sieht denn dein Arbeitstag dann damit aus?

Die Artists an sich,

die machen da eigentlich

und alle Arbeit nur über das User-Interface.

Relativ wenige Skripten, es gibt ein paar spezielle Jobs,

da muss man ein bisschen mehr skripten, weil es dann schon aufwendiger wird.

Aber mein Arbeitsablauf ist eigentlich eher im Hintergrund.

Sprich, ich überlege mir, okay, an meinem Projekt arbeiten 40 Leute,

die alle auf den gleichen Folder zugreifen auf meinem Server.

wie kriegst du denn gebacken, dass die sich nicht gegenseitig in die Quere kommen

oder sich falsch überschreiben oder Sachen verloren gehen?

Also auf so einem Videoprojekt, da müssen ja ganz schön viele Daten aus dem Server liegen, oder?

Genau. Um so ein paar Eckdaten zu haben, also für ein Projekt, was wir neulich erst abgeschlossen haben,

was ihr auch auf Netflix gucken könnt übrigens, nennt sich Outside the Wire.

ist wirklich

also Visual Effects top

Story, naja

aber da hatten wir im Endeffekt

12 Millionen Dateien

auf dem Server und

das waren insgesamt

220 Terabyte

glaube ich

und naja, es ist halt eine Menge Holz

ein bisschen größer als mein Heimcomputer

Das will man erstmal durchs Netzwerk schleifen

und dann natürlich auch noch die Übersicht behalten, dass du weißt

okay, ja, diese Version fand ich schön

die nächste ist vielleicht nicht so toll

oder ja, dann muss man auch noch bedenken

okay, diese Artists, die arbeiten natürlich auch noch miteinander

also der eine baut das Haus, der andere malt es an

der nächste lässt es explosieren

dann musst du natürlich auch noch zusehen

okay, wie bekommst du denn die Daten

von A nach B, dass jetzt nicht

jeder erstmal Windows Explorer

aufmacht, eintippt, okay

wo ist denn mein Haus und

wo finde ich denn das, sondern

auch das ist alles durchgeskriptet und gestreamlined

dass du einfach nur sagst, okay

ich möchte von Haus

von meinem Haus

ja, diese Außenwand

in Version 6

zack, reingeladen, fertig

also okay

Guckt man da irgendwie über so ein Editor drauf oder so was?

Oder ist da dann ein Maya-Interface?

Oder habe ich so eine Sicht wie so ein CAD-Programm, auf das ich dann schauen kann?

Oder ist das so ein Studio-Umgebungsding?

Das ist alles integriert.

Neben Python hat sich noch ein anderer Standard relativ gut in der Branche etabliert.

Und das ist PySite bzw. PyQt.

Sprich

viele Programme unterstützen

das, dass man mit dieser

Bildbibliothek quasi arbeiten kann

und

das Schöne an der Sache ist, man kann

somit auch User Interfaces komplett

durchskripten

Sprich du kannst

direkt sagen, okay ich habe jetzt hier mein

Datei

Lauda, wie auch immer

programmier das User Interface dafür

einmal durch und wenn ich den aufrufe

in Maya

oder in

The Foundry Nuke

sieht er halt gleich aus,

für die gleichen Zwecke und da

nur im Hintergrund arbeitet man

halt vielleicht an verschiedenen Codestücken,

weil eine Datei zu

laden in Maya ist was anderes als

in Nuke.

Also auch wir benutzen

quasi relativ gängige

Bibliotheken. Vielleicht musst du

uns da nochmal so ein bisschen einführen und

so ein bisschen diese ganze Infrastruktur

und das ganze Ökosystem so

näher bringen, dass wir so ein bisschen diese Bausteine,

die es da gibt, zusammensetzen können, weil

wenn ich jetzt

dazu, ich habe keine Ahnung von diesem Videothema,

dann verstehe ich jetzt noch nicht genau,

wie du diese einzelnen

Belletungen dirst und

wie das funktioniert.

Okay.

Wie fangen wir da

am besten an?

und

vielleicht so ein paar allgemeine Sachen.

Sprich, dadurch, dass ja die Interpreter

in den einzelnen Programmen eingebettet

sind,

muss man oder

sollte man zumindest danach streben, dass man

alles relativ gut gestreamlined hat mit verschiedenen

Bibliotheken, die man auch in verschiedenen

Sachen laden kann.

Du kannst in jeder einzelnen

Interpreterschicht dieselbe Interface

benutzen oder was meinst du mit Streamlined?

Genau.

zum Beispiel.

Man will ja quasi nicht fünfmal das gleiche

sk sk sk sk sk sk sk sk sk sk sk sk sk sk sk sk sk sk sk sk sk sk sk sk sk

hat auch den Vorteil für

jemanden, der die Programme benutzt,

der hat immer das gleiche User-Erlebnis.

Sprich,

ob du ein File lädst oder ein File öffnest,

ist eigentlich ganz egal,

ob du jetzt ein 3D-

oder ein 2D-Programm

aufmachst.

Also

diese ganze

Hierarchie, wie das alles

aufgebaut ist mit den Bibliotheken,

ist natürlich wahnsinnig komplex.

Was für Jobs gibt es denn in dem Bereich?

Wenn ich mich da in der Industrie

wiederfinden möchte, welche Jobs gibt es denn, die Python

machen?

Da es so offen ist,

kann es im Grunde genommen jeder benutzen, der

möchte, weshalb auch eine Menge

Code

quasi am Markt ist, der

weniger gut ist,

hätte ich mal so gesagt.

Aber es gibt zum Beispiel

den Job des Riggers.

Oh, ein Rigger.

Shadow Punk ist das.

Ein Mensch, der seine

Drohnen nach oben schickt und sie steigen lässt.

Genau.

Das ist jemand,

der quasi

virtuelle Marionetten in Charaktere

baut.

Ah, okay.

Also von innen werden quasi diese

und Jochen unterhalten sich über die Programmiersprache Python

und Jochen unterhalten sich über die Programmiersprache Python

und Jochen unterhalten sich über die Programmiersprache Python

wie Pixar zum Beispiel, haben wirklich

nur Leute, die

beschäftigen sich 24-7

nur mit Haaren.

Tja.

Oder nur mit Kleidung.

Also relativ spannend, das kann man für coole

Sachen benutzen. Das klingt so, als wenn

man einmal diese Logik und als Modell und

als Skript irgendwie kompletieren würde,

könnte man auch die ganzen externen Effekte, also sowas wie

Wind und Licht und

was weiß ich da noch alles gibt,

als Umwelteinflüsse dann auf dieses RIG

oder so übertragen, dass man

halt so ein bisschen, ja, also nicht so statisch im Raum rumsteht und vielleicht

ein oder zwei geskriptete Bewegungen macht, sondern tatsächlich mit der Bewegung interagiert

oder in die Bewegung so eingebettet wird.

Also sozusagen, ja, ja, ja, das heißt der Job von dem ist sozusagen vorzubestimmen,

was sich alles noch mitändert, wenn sich irgendwas, wenn irgendwas bewegt wird und

der Animator, der gibt dann quasi vor, wie die Bewegung aussehen soll.

Genau, wie weich das wird, die Bewegung innerhalb der Bewegung.

Aber der kümmert sich dann nicht mehr darum, dass sich quasi, keine Ahnung,

die Kleidung mitbewegt, wenn sich der Arm bewegt oder so.

Genau, der fängt nur die eigentliche Bewegung ein und das, was dann da rum passiert in der Umgebung,

das müsste dann mit durch die Skripte passieren, oder?

Weil das ist ja fast Physik, also das ist ja das, was man durch Algorithmen irgendwie vielleicht...

Also das ist eigentlich noch mehrstufig.

Im Grunde genommen hast du erst das Rig, dann hast du den Animator, der da eine Animation drauf macht.

Da ist aber meistens noch relativ wenig Physik dabei.

und erst im nächsten Schritt gibt es dann quasi Simulationsschritte, wo du dann sagen kannst,

okay, über meine Animation habe ich dann nochmal ein bisschen Wind,

die dann die Klamotten noch wehen lässt oder die Haare oder, keine Ahnung,

Feuerexplosionen, was immer du willst, dass der Arm abfällt, geht alles.

Genau, weil gerade Physik-Simulationen sind wahnsinnig ressourcenfressend.

Das heißt, du kannst

wenig interaktiv

arbeiten als Animator, wenn du die ganze

Zeit dann auf Physik-Simulationen arbeiten

im Hintergrund laufen hast

Also das tatsächlich aus der technischen Restriktion

noch, oder?

Ja, durchaus, ja

Es ist immer noch eine hohe

Kunst, performante Rigs

zu bauen, weil

die Animatoren, die wollen natürlich

immer Echtzeit haben

Also 24 Frames die Sekunde

sollte schon sein, aber

Dadurch, dass die Programme halt so komplex sind, ist es unheimlich einfach, sehr langsame Rigs zu bauen

Und wenn du dann, ich meine, du musst ja, weiß man ja selbst, man sitzt vor einem Rechner und wenn irgendwas so im Sekundentakt vor sich hin ruckelt, ist das irgendwie kein schönes Arbeiten

Aber wenn es flüssig ist und man sich das angucken kann im Ganzen, dann hat man halt am Ende auch mehr Spaß

Ich meine, ja.

Ja, klar.

Es gibt hundert tolle Wege, wie man das verschnellern kann und verbessern kann.

Und die Industrie ist natürlich auch immer vorne mit dabei, da die neuesten Technologien einzubauen.

Ja, aber wir schleppen halt auch eine Menge Legacy-Stuff mit uns rum,

wo viele Leute sich sehr lange dran gewöhnt haben.

und es ist auch

schwierig, daraus zu werden.

Ich kann mir auch vorstellen, dass es einfach

an den Release-Zyklen

hängt. Ich habe jetzt keine Ahnung, wie oft

Maya oder

Houdini oder was auch immer da released

wird oder ein neues Release hat, aber wenn die

relativ lang sind,

dann ist ja klar, dass die nicht so aktuell

sein können wie

andere Software, die man jetzt, weiß ich nicht,

irgendwelche Web-Applikationen, die man ständig deployt.

Wobei man sagen muss,

Houdini ist eine sehr

tolle Ausnahme, die bieten

Nightly Builds an.

Was ist denn Houdini?

Houdini ist eine der

größten Effektsoftwaren,

die man im Moment so haben kann.

Sprich, damit machst du

Feuer,

genau, lässt Häuser zusammenfallen.

Es ist

unheimlich

modular

und dadurch

auch wahnsinnig komplex zu bedienen.

und

also ich kenne

einige Leute, die an der

Einstiegshürde einfach gescheitert sind.

gefühlt musste ich erstmal

ein Jahr einarbeiten.

Aber wenn das Ganze ein Magier, also ein Houdini, der dann

tatsächlich die höhere

Effektion hat, okay.

Aber auch da ist

Skripten wieder total angesagt.

Die haben sogar interne Skripte,

die sich glaube ich sogar zu C

kompilieren, so halb.

damit es dann richtig fix wird.

Genau.

Haben aber auch wieder ihre eigene

Skriptsprache

darin erfunden.

Also es gibt ja quasi ein Level-Interface,

was da drüber liegt.

Also eine API, mit der man

Houdini-Methoden

ausführen kann.

Ist auch recht interessant,

weil gerade das Python, dadurch das Python

so modular ist und auch so

in verschiedensten Arten umformen l benutzt jeder jedes Programm Python auch in verschiedenen Arten und Weisen Also Pythonic w ich sagen

ist da eigentlich nichts.

Das ist alles schon sehr gewagtes

Zeug, was man da macht zum Teil.

Deswegen gibt es sogar schon Wrapper-Libraries, die das alles mehr in die

Pythonic-Richtung

drücken, weil

irgendwann die Skripte sich halt auch gesagt haben,

so, ey, so funktioniert das nicht.

Ja, aber das ist ja auch das, was man

so auch in der generellen

Python-Welt hat, oder? Dass halt die

Mehrleute sich das zur Brust

nehmen und damit arbeiten.

Umso schneller

entdeckt irgendjemand das wirklich tolle

Higher-Level-Interface und man kann

halt irgendwie mit der einfacheren API

die gleichen oder schönere Dinge machen.

Ja.

Ich hatte neulich so ein schönes Beispiel

Ich hatte

eine Funktion namens

getString

Parameter oder

irgendwas und der hat mir

eine Liste zurückgegeben

Super

Vielleicht hätte ich mir eine Type Annotation

geschrieben und dann war es klar, dass er eine Liste zurückgibt

Er hat immer

eine Liste zurück und das macht

dann halt irgendwie keinen Spaß

zu lesen

Ja, witzig.

Also Datentypen und so, was das rein ist.

Ja, was wollte ich eigentlich? Ich wollte irgendwas fragen.

Jetzt habe ich vergessen, was ich fragen wollte.

Ist das denn nur für jetzt, also ich meine diese ganzen, also Maya und, also nee, Houdini ist doch eher so auch Realfilm-Geschichte.

und Jochen unterhalten sich über die Programmiersprache Python

Videos anfasst. Eine große Rolle

dabei spielt auch immer der Renderer.

Sprich,

das Programm, was dir am Ende die schönen Bilder

auf die Leinwand zaubert.

Wir benutzen zum Beispiel

in der Produktion Arnold.

Der ist

schon sehr auf Realismus ausgelegt,

was auch für unsere Firma Sinn macht,

weil wir benutzen halt sehr viel

Real-Footage,

wo wir Sachen

einbauen möchten.

Aber man kann auch sehr viel offener

gehen. Ich glaube, RenderMan

zum Beispiel kann man noch sehr viel

mehr mit einstellen.

Hat natürlich auch alles immer seinen Preis.

je offener du bist, desto langsamer

wirst du im Endeffekt.

Meistens.

Dadurch, dass man, wenn man sich quasi

vorschreibt, okay, ich möchte so realistisch

und physisch akkurat

bleiben, wie es nur irgendwie geht,

dann heißt das

auch okay, ich kann halt

Performance an gewissen Stellen halt einfach

einbauen, weil ich weiß, okay, ich werde niemals

so ein

Cartoon-Character-Look brauchen.

Kann man weglassen.

Also

kannst du vielleicht nochmal kurz erläutern, was du mit

Performance meinst? Also jetzt

die Geschwindigkeit, die das Ganze zum Rendern braucht,

aber ich denke mir jetzt gerade,

du hast ja eh vorgefertigte Szenen, also

du wirst das ja jetzt nicht live

irgendwie augmentieren,

sondern du möchtest ja quasi

einen Videoschnipsel, den du irgendwo liegen hast,

ergänzen

und da filtern oder Sachen

drauf

spiegeln oder

also neue Dinge erschaffen mit einem Schnipsel,

den du schon hast. Und da ist auch quasi die

Zeit, die das braucht, um

zu rendern und Dinge dazu zu erfinden,

relativ

dehnbar.

Ja, aber die Ressourcen sind ja nicht endlos dehnbar.

Sprich, wir haben zum Beispiel so eine Faustregel, dass für uns ein Frame nicht länger als eine Stunde rendern sollte.

Also ein Frame ist sowas wie...

Wie viele Frames hat man sowas bei einem normalen Fernsehfilm? Irgendwie 30 oder 60 oder sowas?

Normalerweise so 24, 25.

20. Natürlich gibt es

da ganz tolle neue Technologie

mit 48 Frames die Sekunde.

Ich glaube, Herr der Ringe hat das

eigentlich. Aber für jede Sekunde

von diesem Film musst du halt zwei Tage

einklaren.

Ja, beziehungsweise

wir haben eine Renderfarm.

Drei Minuten pro Jahr schaffst du dann.

Ja, es gibt da so tolle Statistiken.

Ich glaube,

ich habe mal gehört, bei den Transformer-Filmen

und da hatten sie Frames, die haben

72 Stunden gerendert.

Wow.

Und dann stellst du fest, ja, nee, ist kaputt.

Ja, da muss man halt dann tatsächlich an andere Strames skalieren.

Da muss man mehrere Parallel-Render-Inzansen haben, weil

dann wirst du tatsächlich...

Du hast ja schon eine Render-Farm.

Musst du deine Render-Farm paralysieren.

Irgendwann wird es

ein bisschen schwierig, klar.

Und wahrscheinlich ist es ja auch so, dass

je... Also ich meine,

das ist ein völlig anderer Bereich, aber das ist halt

auch beim, wenn man jetzt so Data Science

Machine Learning Geschichten macht, da hat man auch so

rechenintensive

Jobs, also wenn man jetzt Modelle trainiert

und zwar auch Tricks

das zu beschleunigen, aber da muss man halt abwarten

und abwarten ist auch mal ganz schlecht. Also wenn man

irgendwie so auf irgendwas ein paar Stunden warten muss,

dann reduziert das die

Gesamtperformance enorm, weil oft

nach ein paar Stunden man sieht, das war alles

Unsinn, man muss es halt nochmal machen und die paar

Stunden sind dann einfach weg und wenn man

lange braucht, um irgendwas zu rendern, dann

oh Mist,

meine Figur hatte wie ganz zeitweise nicht die Augen zu

oder das Grinsen ist einfach schief,

dann muss man nochmal von vorne anfangen.

Ich habe keine Ahnung, ich stelle mir das so vor,

dann ist das blöd, wenn die Iterationen

zu lange sind.

Genau, also natürlich gibt es da auch wieder

Tricks und Kniffe, dass man sich so,

es gibt zum Beispiel progressives Rendering,

da

fängt der Renderer an sich schon

sehr, sehr grob an und wird dann einfach mit der Zeit

immer feiner, aber

dem Menschen ist das quasi

und Jochen unterhalten sich über die Programmiersprache Python

und gucken danach, ob da alles okay ist.

Das

Qualitätsmanagement ist da

auch jedem selbst überlassen.

Die Renderfarm,

vielleicht kannst du noch was sagen, was eine Renderfarm ist.

Wir

haben quasi einen Satz Rechner

in unserem Serverraum.

Ich glaube, es sind wahrscheinlich jetzt um die 60,

die

für nichts anderes da sind,

als die schönen Bilder zu berechnen.

Sprich, wir senden

den Jobs hin und sagen, okay, hier guck mal, hast meine Szene, rechne einfach mal aus.

Und dann gibt es so eine Renderfarm Manager, die im Übrigen auch alle wunderbar in Python

geschrieben sind.

Es gibt ein Thinkbox Deadline, komplett in Python geschrieben.

Ich glaube nur unten an der Basis so ein paar C-Sachen und einzelne Programme.

Aber damit lassen sich dann auch die Sachen komplett steuern.

dass du sagen kannst, okay

ich habe hier meinen Job von

100 Frames

bitte verteile mir die auf meine

30 Blades und jeder

Blade bekommt 5 Frames

also die einzelnen Rechner

heißen Blades bei uns

genau, und dann siehst du halt

in einem kleinen User Interface, okay

mein Job muss leider noch ein bisschen warten

da sind noch 5 andere, die erstmal hier

und Jochen unterhalten sich über die Programmiersprache Python

dafür aber eine bestimmte Lizenz

haben. Davon muss der Renderfarm

wissen und

das Rendering am Ende auch.

Es gehört aber quasi auch zu

meinem Job, das alles zu organisieren, dass das

am Ende passt. Die IT,

die kümmert sich dann im Grunde genommen nur noch

darum, dass die Lizenzserver

aufgesetzt werden und ich bastel dann die

Programme so zusammen, dass dann am Ende die

Lizenzen auch da landen, wo sie sein sollen.

Das ist quasi auch Teil meines Arbeitsberufs oder Alltagslebens

Ja, ja, ja, interessant

Wie werden die Daten eigentlich gespeichert?

Die landen auf einem zentralen Fileserver?

Oder habt ihr da so eine Art verteiltes Dateisystem?

Irgendwie sowas wie bei Hadoop, HDFS oder keine Ahnung

Es gibt einen zentralen Server, auf dem landen alle Daten

auf den haben eben auch alle Zugriff

und genau

von dem wird alles gezogen und

alles hingespeichert

genau, ist

eigentlich mit der einfachste Weg

vielleicht nicht unbedingt

der sicherste

wenn man mal Sachen verschiebt oder

aus Versehen löscht

oder so

aber

das hat sich eigentlich

schon sehr lange bewährt in der Industrie

Jochen hat gerade kurz

von den Schultern gezuckt.

Also das passiert halt.

Wenn man es wirklich

nicht verlieren will,

Methoden, wie man das sicherstellen kann.

Ich überlege mir gerade,

weil ich hier zu Hause auch mal überlege,

was ich für ein Netz verlege und

ich bin jetzt so bei 10 Gigabit

Kabeln, aber tatsächlich

kann ich das noch nicht wirklich nutzen, weil

die Switches sind halt

irgendwie, die haben halt Lüfter drin, die das

können und das ist einfach zu laut und da habe ich keine Lust drauf.

Aber das muss ja dann

wirklich schnelles Netz sein. Weißt du,

womit ihr das hinbekommt?

Weil man muss ja dann, wenn man so große Datenmengen

übers Netz immer schiebt...

Das Netz ist weitestgehend

mit Glasfaser

überall ausgestattet.

Ich kann dir keine

genauen Details nennen,

weil ich bin quasi

nicht unbedingt für

IT zuständig.

Aber ich meine jetzt,

wenn man an einem Rechner arbeitet, dann

muss da ja auch irgendwie Netz reinkommen.

Das ist aber wahrscheinlich kein...

Also wenn man jetzt irgendwo an einem Rechner dran sitzt.

Oder haben die Karten mit Glasfaser hinten dran?

Ja. Achso, okay.

Gut. Ja, das geht natürlich auch.

Ich hätte jetzt eher gedacht, dass das irgendwie

Thunderbolt ist oder weiß ich nicht, irgendwie

10 Gigabit Ethernet

oder sowas. Aber ja, okay.

Also es ist ein Mix.

Wir haben glaube ich auch noch ein paar 10 Gigabit

Leitungen. Das geht auch,

wenn man jetzt nicht total

alles hochfährt. Aber wir hatten

schon Zeiten, wo wirklich die Render

am Rand voll war,

keine Ahnung, 20, 30 Leute

gleichzeitig aufs Netzwerk zu greifen

und dann beschweren sich natürlich

alle, warum ist denn alles so langsam?

Kann man im Endeffekt auch nicht so viel

machen? Es gibt natürlich noch ein paar Tricks und

Kniffe, dass die Programme zum Beispiel

die cachen sich die Dateien

einfach runter lokal

und wenn du es einmal lokal

hast, dann belastest

du natürlich das Netzwerk nicht und hast auch wesentlich

mehr Speed. Das ist so ein bisschen Peer-to-Peer.

denke.

Genau.

Das ist

eine gängige Methode. Meistens hat man

dann einfach so eine Scratch-Disk noch, die man

mit einer schnellen SSD,

die musst du natürlich alle jedes Jahr wahrscheinlich

einmal austauschen.

Aber dafür hast du eben ordentlich

Performance hinten dran.

Das

ist schon sehr sinnvoll im Endeffekt.

Ja.

Ah ja, okay.

Ja.

Aber dann sozusagen immer einen File-Server,

zentralen File-Server als so Quelle der Wahrheit,

was da liegt, ist dann eigentlich das, was

ja, sozusagen

das ist, was dann

dabei rausgekommen ist irgendwie.

Das ist schon interessant, also wie man so mit

Merch-Konflikten umgeht dann an der Stelle.

Ich überlege auch gerade, ob es da irgendwie

sowas wie Git oder so geben könnte,

keine Ahnung.

Hatte ich auch alles

schon mal angedacht. Ich meine, Git

und Git-LFS

hört sich ja das gut an, aber

relativ schwierig und

die Lernkurve dafür finde ich auch

ziemlich hart für jedermann.

Es gibt aber

Unreal Engine

Das ist auch

aus der Gaming-Szene tatsächlich.

Das ist aus der Gaming-Szene, genau. Die haben zum Beispiel

eine Git-LFS-Anbindung, dass man rein

theoretisch sein Projekt komplett über Git-LFS

machen kann. Macht glaube ich

keiner, aus genannten Gründen.

Beziehungsweise ich kenne niemanden.

Was ist denn das Problem an dieser Learning-Groove bei Git LFS?

Na,

man kann relativ

viel immer noch kaputt

machen, bis man quasi so in diese

Arbeitsweise reingekommen ist von

okay, ich stage meine Sachen,

dann committe ich sie, dann push ich sie,

okay, ich muss die aber auch wieder runterpullen

und dabei dann eben auch aufpassen, dass

meine Pre- und Post-Commit-Hooks

da alle mit Git LFS

alles das machen, was sie sollen.

Ich glaube, schwierig ist es halt tatsächlich bei so Merch-Konflikten,

weil du halt nicht einfach

den Code nicht zusammenfügen,

einfach so und sagen, hey, die Stelle ist jetzt

okay, die nicht, sondern du kannst dich halt wahrscheinlich

nur für entweder ein oder unterscheiden, also entweder

das Bild vom Server oder

halt mein Bild irgendwie und das ist halt bestimmt

schwierig.

Ja, ganz genau. Das

ist zusätzlich noch so.

Auch da haben aber die

3D-Programme zum Teil noch ganz gute Kniffe,

weil deren

Pfeilformate

sind meistens auf ASCII ausgelegt.

Sprich, wenn man ein bisschen findig ist,

kann man die einfach selbst aufmachen und

da ein bisschen drin rumfuhrwerken

und am Ende sogar

seine Szene retten. Also funktioniert

manchmal, manchmal funktioniert es nicht.

Aber

auch da sehr clever.

Ich überlege gerade,

was hat passiert.

und

ob so eine

Videoproduktion aus mehreren Schichten besteht,

wo es halt quasi ein Urbild gibt, also

quasi das, was eine normale Kamera aufgenommen hat

und dann die einzelnen Effekte drüber

gelegt werden, einer nach dem anderen

oder ob die alle irgendwie gemerged werden und dann

alle gleichzeitig irgendwie ablaufen und

welcher halt dann

der Layer ist, der am nächsten an diesem

Realbild dann dran ist oder so.

Gehen wir

von einer normalen Produktion aus, wie

wir sie gerade haben, mit

mit echtem

Footage. Sprich, du hast

keine Ahnung, Superman

und hast ihn vor einem Greenscreen

gedreht. Sprich, schöne grüne

Leinwand und der soll

jetzt erstmal schön durch den Himmel fliegen.

Dann

wird es wahrscheinlich der Job

von dem 3D-Artist sein, dass der dir erstmal

einen schönen 3D-Himmel baut.

Kann er. Noch ein paar Wolken mit

rein, dass er alles schön mitmacht.

Und dann gibt es,

und wenn diese Layer quasi fertig sind, noch den Job des Compositors, der diese Layer zusammenfügt.

Sprich, der sieht dann zu, okay, den grünen Hintergrund, den machen wir mal weg.

Dann sehen wir noch zu, dass wir hier noch, keine Ahnung, das Cape flattert noch ein bisschen,

da war noch ein Kabel dran, das geht auch noch mit da weg.

Und ja, damit jetzt die Wolken hier auch noch so schön aussehen, muss ja eine Wolke davor und eine Wolke dahinter,

und Jochen unterhalten sich über die Programmiersprache Python

Filme in das echte Leben draußen und da sind ja wahnsinnig viele physikalische Sachen am Werk.

Lichtbrechung, Reflektionen, Licht schimmert durch Bäume und wird absorbiert und wieder zurückgeworfen hundertmal.

Und wenn wir das alles wirklich physikalisch durchrechnen würden, ja, dann würden wir auch in einem 3D-Programm auf das exakt gleiche Bild kommen,

würden aber auch Ewigkeiten warten.

Sprich, man nimmt

auf die Menge ab

Absolut

Jeder Simulationsartist, der in den Himmel guckt

und ein paar Wolken sieht, denkt sich so

Ach, ja

Kleine Cumulus Cloud, ach, Nächtszeit

Genau, deswegen nimmt man eine Menge Abkürzungen

und der Compositor zieht das dann quasi

wieder zusammen und

blendet quasi die Tricks, die da so sind

wieder zusammen. Aber wenn ich das richtig verstehe,

ist halt quasi das Einzige, was uns daran hindert,

so wirklich so live richtig tolle

Echtbilder zu machen, so die

Rechenpower, die dahinter steckt.

Ja, im Grunde

genommen schon, ja. Ich meine,

gute Software wäre auch ganz nett

dazu, aber ja,

es ist einfach die

absolute Rechenpower, die dahinter steckt,

die man da eben

braucht. Ich meine, es gibt ja

bestimmte Programme, Unreal Engine

schreibt es sich ja auch auf die Fahne, dass die da wunderbar

realistisch sind und du die tollsten Games

mitmachen kannst. Aber auch die

benutzen halt ihre eigenen Tricks und Kniffe,

dass sie halt sehr viel vorberechnen

und dann wieder benutzen.

Die haben sich natürlich im Laufe der Jahrzehnte

schon entwickelt.

Früher war das natürlich bestimmt noch viel aufwendiger.

Gibt es da irgendwie so einen Faktor, den man sagen kann,

ja, wenn es jetzt noch so 10 Mal schneller

wäre, dann wäre es ja irgendwie total

cool oder so.

Wenn es jetzt noch 100 Mal schneller wäre, dann wäre es so

wie in echt. Oder würdest du sagen, ja, okay, da ist

und Jochen unterhalten sich über die Programmiersprache Python

und

weil das Endprodukt wird immer

gut aussehen.

Oder sollte immer gut aussehen.

Das heißt, es geht tatsächlich darum, wie du in deinem Zwischenschritt

was für eine Visualisierung du

von deiner akuten Arbeit hast, also wie du

quasi direkt eingreifen kannst und wie gut das visualisiert ist,

was du da machen willst.

Genau.

Theoretisch könntest du also immer die Pauseknopf drücken und dann

das schon rennen lassen und dann hättest du das quasi

jetzt Bild in super toll und dann

machst du halt dann da weiter.

Und dann ist natürlich für den Zwischenschritt wieder nur, wie du

gesagt hast, in grauen Kugeln oder so.

Genau, das könnte man so machen, wie man denn will.

Genau, und deswegen gibt es auch immer wieder so Zwischenschritte, wo man das macht.

Animatoren zum Beispiel machen gerne Playblasts.

Das sind wirklich nur sehr simpel gerenderte Szenen, wo sie quasi ihre Animationen einmal flüssig abspielen können.

Oder einmal flüssig sehen, nur als Bildmaterial.

und die Programmiersprache Python

was man gerade modellieren möchte.

Genau.

Im Grunde genommen ist es das.

Ich meine, vielleicht landen wir irgendwann mal in einer Welt,

wo alles sofort immer echtzeitphysikalisch machbar ist in einem Programm.

Aber noch sind wir nicht da Aber ich meine die Rechenpower und so die wird auch immer besser Ja klar Ich meine kann man sich da nicht vielleicht auch einem der Tricks bedienen

den die Spiele besser aussehen lassen?

Ich meine, da wird ja jetzt inzwischen

fast alles in GPUs gerechnet.

Gibt es da eigentlich irgendwie

ein, wird das jetzt auch

beim Rendern gemacht oder

ist das alles noch CPU oder

Es gibt schon Hybrid-Render.

die sogar beides benutzen können, GPU und

CPU

das große Ding

ist immer

der Speicherplatz auf deiner Grafikkarte

ah, ja ja

also wir haben zum Teil

Texturen, sprich

das so wie

keine Ahnung, wenn du eine Jacke an hast

dann ist da eben der Jeansstoff

drauf, so wie er eben aussehen soll

und das sind halt auch nur Bilder

und die sind im Durchschnitt bei uns 4K

groß, sprich

4096x4096.

Das

frisst dann gerne mal so

300-400 MB auf deiner

Grafikkarte. Dann hast du von

den Dingern 10 und dann ist die voll.

Und dann war's das.

Dann war's das auch wieder

mit Echtzeit.

Ja, also

Neukarten, die können relativ viel von

sowas machen, glaube ich.

Wird auch immer besser. Also ist auch

wirklich toll, was sie inzwischen damit können, aber

ja, wir haben auch massenhaft

Daten, die wir da versuchen

raufzupressen und irgendwann gibt es halt

den Cut, okay, Grafikkarte voll,

ich benutze wieder

die Festplatte und

drittst du erst mal

wieder schön auf die Bremse.

Ja.

Das Interessante ist auch,

irgendwer hat das mal gesagt,

die 3D-Branche

ist schon

peinlich

parallelisierbar.

Sprich, wenn man so eine 3D-Szene

hat, die ist so in sich abgeschlossen,

dass man die unheimlich gut

multithreaten und parallelisieren kann.

Weil

es ist ja quasi alles bekannt.

Es ist alles da, es ist alles eingestellt.

Also

du kannst jedem Core quasi sagen,

okay, du fängst da an, du fängst da an.

Ja, von der

Zeit her kann ich mir vorstellen, dass das sehr gut möglich ist.

in ein Bild zerlegen, stelle ich mir schwer vor.

Wenn irgendwo eine Lampe über das ganze Bild leuchtet,

dann hängen die ja die Sachen voneinander ab.

Man kann natürlich in der Zeit super splitten.

Ja, sprich die Renderer gehen natürlich auch voll auf Coas ab.

Wenn du da einen Threadripper drin hast, das merkst du definitiv.

Ja.

Auch sehr spannend, ja.

und wenn man dann halt eben beliebig viele Rechner hat,

dann ist das auch im Grunde ja

nicht so schlimm, wenn das CPU...

Muss man halt einfach nur mehr Rechner nehmen.

Ist das horizontal skaliert?

Genau.

Ich finde das spannend an der Stelle, dass

Python da auch wieder reinkommt,

weil Python an sich ist ja,

ich meine, verschrien langsam

bei Skriptsprache,

aber das ist unheimlich

egal an dieser Stelle,

weil

Was ich an der Sache mache, ist quasi einfach, okay, die Leute kriegen ihre Daten an der richtigen Stelle und ob das jetzt hundertmal schneller oder tausendmal schneller funktioniert, ist vollkommen egal.

Das ist

so ein wunderbarer Use Case von

okay

du musst die richtige Sprache benutzen

für den richtigen Anwendungsfall

Ich kann das alle

ich kann nicht, aber

man könnte das alles in C ausprogrammieren

wer so wahnsinnig ist

dann wäre es auch wahnsinnig schnell, aber es macht keinen

Unterschied

Nee, klar, also manchmal ist

die Geschwindigkeit, mit der man irgendetwas hinschreiben

kann, halt die viel wichtigere

wenn Dinge halt nicht so oft

ausgeführt werden.

Naja, aber ich meine,

spielt das eigentlich bei euch irgendeine Rolle? Man könnte ja auch Dinge

dann in Python schnell machen, also

eben im Bereich Machine Learning und so, da wird

ja auch tatsächlich viel

selbst in Python gemacht und ich weiß jetzt nicht,

wie es mit Bilddaten aussieht und so, aber man könnte

da ja auch, weiß nicht, indem man das Ganze

zum Beispiel die Bilder irgendwie in

NumPy-Arrays hat oder so, und dann

darauf irgendwelche Transformationen machen oder so,

das müsste dann eigentlich auch schnell sein

oder dass man halt

irgendwie, keine Ahnung,

per Seiten

halt irgendwie Python-Code

in, oder zumindest

die heißen inneren

Schleifen und Funktionen

halt sozusagen in C

zuerst übersetzt und dann wieder

als C-Modul wieder einbindet, denn damit

könnte man es ja auch sehr schnell machen.

Wird das irgendwie verwendet oder ist das

da, wenn, ich meine, solange Python halt

zum Steuern verwendet wird, ist es ja egal

im Grunde, da braucht es das alles nicht.

Es wird jetzt immer interessanter

mit dem Machine Learning, weil es gibt so gewisse Schritte in der 2D und 3D Bearbeitung,

die halt unheimlich nervig und langweilig sind.

So das beste Beispiel ist Sachen ausschneiden.

Sprich, okay, Mann geht von A nach B, schneid den mal aus.

Und das lässt sich unheimlich, also unheimlich gut noch nicht,

aber es lässt sich langsam machen mit Machine Learning.

Wir hatten da auch schon erste Ansätze.

allerdings muss man da auch schon

also noch

durch ganz schön viele Hubs

springen, bis man da ankommt, wo man

hin will, aber

so automatisiert Sachen ausschneiden

das wird echt

unsere Branche nochmal ganz

gut aufmischen

genau, im Moment

hapert es noch an so

der Größe

der Bilder zum Beispiel

die meisten gehen da so

auf 512x512 Pixel

verständlicherweise.

Ja gut, wenn du jetzt so ein 4K-Bild hast,

dann musst du das erstmal zerlegen

in, keine Ahnung,

8-12 Bilder oder so,

die du dann einzeln da durchjagst,

hast du im Endeffekt auch nicht mehr so viel gewonnen,

weil das, was am Ende rauskommt,

ist auch,

naja, sagen wir mal 80% da,

wo es eigentlich sein sollte.

Und man kommt dann noch

so andere Probleme, wie zum Beispiel

ein Mann geht durchs Bild.

Ja, okay, den Mann kannst du ausschneiden.

Okay, jetzt hat der Mann aber auf einmal einen Hut auf.

Dafür ist jetzt das

Machine Learning Modell aber nicht

trainiert. Das ist nur auf

Menschen ohne Hüte.

Wenn du den Trainingsleitenden ein Trainingsleitenden hat,

dann hat man keine Hüte drin. Tja, das ist doof.

Okay, jetzt

darfst du es erst mal trainieren auf Hüte.

Das ist ja jetzt auch irgendwie

schwierig.

Aber ja,

Da gibt es auch

jetzt erste Fortschritte.

Es ist auch noch sehr interessant

für

zum Beispiel

so, keine Ahnung, wenn du Sachen

verschönern willst,

Tom Cruise hat einen Pickel auf der Stirn

oder so und bewegt sich durchs Bild.

Oh, und jetzt muss das aus jedem Bild

rausretuschiert werden.

Genau.

Da ist Machine Learning aber auch

schon ganz gut am Start und

die Ergebnisse

sind eigentlich sehr, sehr gut, muss man

sagen. Da

hätte vorher dann halt ein Artist

irgendwie eine Woche dran gesessen

und wenn das ein Rechner in einer Stunde

kann, dann ist das definitiv

cool.

Ja, witzig. Ja, klar.

Da gibt es natürlich auch jede Menge Anwendungen dafür.

Ja.

Ja, oder da gibt es etwas, was ich

ab und zu sehe ich mal so Demos. Ich habe aber

keine Ahnung, inwiefern das schon

soweit ist, dass man das benutzen kann,

dass man halt sagt, okay,

also alles, was in die Richtung Stylegun,

also diese

General Chief Adversarial Networks geht,

dass man sagt, okay, man hat jetzt hier ein Bild von, weiß ich nicht,

irgendeiner Kirche oder so und das hätte man jetzt gerne

in einem anderen Stil und dann muddelt es das Ding

halt irgendwie um oder man hätte jetzt gerne

irgendwie da einen Baum davor

oder solche Sachen.

Das würde noch sehr spannend.

Aber ist wahrscheinlich jetzt noch nicht wirklich verwendbar.

Ich stelle mir solche Dinge vor, du beschreibst eine Szene in Worten.

Ja, das gibt es auch.

und es generiert dir dann tatsächlich

daraus dein Gedankenuniversum

oder sowas. Du könntest zum Beispiel schreiben,

ich hätte gerne eine Kirche mit so und so vielen Fenstern

und einem langen Gang und 15 reinen Bänken.

Ja?

Genau, das gab es schon.

So à la Holodeck,

dass du eben dann wirklich nur,

ich weiß ja nicht mehr, wie das Programm hieß, aber es war wirklich

so, okay, ich habe einen Tisch,

da sind vier Stühle dran,

da sind noch eine

Cerealenschlüssel obendrauf und

Das wird dir dann mega, mega, mega krass interessant.

Also wenn du das dann hinbekommst mit sowas wie der Unreal Engine

und dann halt das augmentiert, eine virtuelle Realität auf irgendeine Brille projizieren kannst,

die das in, weiß ich nicht, pro Auge 8K darstellt und in, bitte nicht 24, sondern in 60 FPS oder sowas dann in live

und dann kannst du dir deine eigene Realität zusammenreden,

weil die KI-Methodologie das in mehr oder weniger Echtzeit dann als Darstellung bauen kann.

Ja gut, die baut das dann halt so wie sie das von ihren Trainingsdaten her kennt, nicht so wie du dir das vorstellst

Ja, aber das kann man ja dann anpredieren, das ist ja dann der Trick, dass man halt dann irgendwie selber

Ja, ich hab nochmal

Ich hab nochmal geguckt, wo das herkommt

Es gibt's von OpenAI, gibt's

so ein Ding, das nennt sich

Dolly

oder Dolly

Das ist auch von dem Namen her angelehnt an

Wally

an diesen Pixar-Filmen

und das macht halt eben Text zu Bildern und so.

Das ist auch sehr, also die Demos hier sehen super aus,

aber das Problem ist natürlich, die sind auch dann so ausgewählt.

Das ist halt natürlich nicht gut funktioniert.

Ja, genau das Ding halt dann zu bauen,

diese Komplexität in diesen 3D-Modellen,

die halt mehr sind als irgendwie nur zwei Bilder,

sondern die halt dann tatsächlich eine ganze Szenerie

mit den ganzen physikalischen Eigenheiten dieser Rigs

und die da drin stecken.

Ich weiß nicht, was da noch, also du hast jetzt gesagt,

also okay, ich habe jetzt ein 3D-Modell,

das ist ja so das Erste, dann ist das mit einem Rig gefüllt

und dann wird das irgendwie

texturiert und beleuchtet

irgendwie, ja, und

dann irgendwie platziert

mit anderen Objekten in die

Traktion gesetzt und sowas. Also das sind ja schon

irgendwie so mehrere

Komplexitätsschichten übereinander, die alle für

sich schon

schwierig genug sind, ja, also um

darüber nachzudenken und in der Realität zu platzieren.

Wenn ich jetzt irgendwie die Realität mir anschaue

und isolieren möchte, dann bin ich da ja

alleine schon sehr gut beschäftigt, glaube ich.

Ja, genau.

Es nimmt halt sehr stark

starke Komplexität an.

Je mehr du da hinzufügst,

desto

mehr muss man halt hinterher sein,

das alles ordentlich aufzublitten.

Aber wenn das halt geht und das alles mit Python, finde ich natürlich

sehr cool,

dass das wirklich möglich ist.

Also es weiß ich gar nicht,

ist dieser

Renderer, den es da gibt, von der Engine

ist der auch, also

von der Unreal Engine auch Python

getrieben?

Äh, ne, also dieser Renderer von Unreal Engine, das ist wirklich interner C-Code, der das da betreibt. Unreal Engine lässt sich aber auch inzwischen mit Python auch steuern.

Also es gibt halt tatsächlich so einen Wrapper oder sowas, der halt sagt, okay, genau.

Ich glaube auch mit Lua übrigens, also

falls

da Ambitionen sind.

Aber

Game Engines müssen

einfach auf C-Code eigentlich gehen,

weil

das ist einfach viel zu langsam, was du mit

Python da erreichen könntest.

Das würde niemals

60 FPS

erreichen. Also

kann ich mir nicht vorstellen. Ich meine, es gibt natürlich

so Sachen wie PyGame zum Beispiel,

mit dem man sich so sein eigenes kleines Python-Game zusammenschreiben kann.

Ich weiß aber nicht, wie fein da 3D-Grafik mit drin ist.

Na, nee, das ist von der Ordnung.

Da wirst du aber jetzt den Herrn Spielmann fragen, der da ein bisschen tiefer drin ist mit seinem Steam.

Aber ja, es ist trotzdem sehr spannend, was man damit halt machen kann,

wenn du sagst, das Unreal Engine, das man C braucht.

Was ist denn das, was die Geschwindigkeit dann tatsächlich gibt?

Ist das das Rechnen mit irrationalen Zahlen?

Nein, also das, was Python

ist, ich kann zum Beispiel sagen, was Python

langsam macht. Also Dinge, die in Python sehr langsam

sind, im Vergleich zum Beispiel zu C, ist halt

sowas wie ein Funktionsaufruf oder

halt ein Methodenaufruf.

Weil ich einfach Reference-Counting machen muss, oder warum?

Nein, deswegen, weil das ist halt richtig

langsam, weil das ist halt nicht einfach

nur irgendwie in C,

wenn das dann halt kopiert ist, das ist halt irgendwie

Ein SM der Anweisung, springe nach.

Ja, so genau. Und dann, ja,

das ist halt in Python nicht so. Da ist halt, da passiert

halt ganz, ganz viel. Der ganze Overhead, der halt nicht steckt.

Also den ganzen Namespace mit fressen muss.

Ungefähr halt tausendmal so langsam.

Also wenn du in C einen Funktionsaufruf machst

und machst in Python einen, dann ist in Python halt so,

als würdest du das in C tausendmal machen.

Also weil ich tatsächlich irgendwie diesen ganzen

Wraparound machen muss, weil ich die ganzen Namespaces

mit fressen muss, weil ich die ganzen Variablen

mit essen muss, weil ich die ganze Syntaktik Schoko

mit essen muss, oder warum?

Deswegen, weil das nicht ein Funktionsaufruf

wie in C ist, sondern das ist halt was

viel, viel komplizierteres in Python.

Weil das halt auch was viel dynamischeres ist.

weil das halt eine interpretierte Sprache ist.

Das ist halt nicht einfach nur

das. Also das ist halt

einfach was anderes.

Und das wirst du auch nicht

los. Aber die Frage ist halt,

ob du das machen musst unbedingt. Du kannst natürlich

auch einfach...

Wenn ich tausendmal schon einen Rechner hätte, wäre das zum Beispiel

egal. Ja, gut.

Aber den Unterschied wirst du immer

merken.

Aber sozusagen,

wenn du jetzt irgendwas

ausrechnest oder so, da

wird es, da ist es eigentlich

im Grunde nicht mehr, da hast du

diesen Unterschied halt nicht.

Also wenn ich in NumPy, weiß ich nicht, zum Beispiel

eben 2 Matrizen multipliziere oder so,

das wird schwer, das in C

genauso schnell hinzukriegen. Und das ist in Python ja

auch einfach hingeschrieben.

Da schreibst du halt dann a at b oder sowas

und du a mit b multiplizierst.

Es ist halt sehr schön, einfach das hinzuschreiben

und es ist halt trotzdem schneller, als wenn du es in C machen würdest.

Außer du machst

es halt wirklich, ja,

aber dann, also in C

ist es halt deutlich schwerer hinzuschreiben.

Weil da musst du halt dann

gucken, dass das halt...

Du musst die ganze Implementierung selber bauen,

muss dann auch so gut sein, dass du halt die Implementierung

so super selbst baust, wie das halt...

Du musst halt dann auch dem Compiler sagen,

jetzt hier bitte, ich weiß, was ich tue,

benutze die SIMD-Instructions

und

ja, wenn ich jetzt

hier eine Vorschleife hinschreibe,

dann meine ich nicht wirklich eine Vorschleife,

die Reihenfolge darf sich auch ändern

und keine Ahnung und wenn du das alles machst,

dann ist es vielleicht genauso schnell.

Aber

insofern, also für manche Sachen ist es

in Python überhaupt nicht schwer, genauso schnell zu sein.

Für andere Sachen ist es halt

schwer.

Wobei man da

eigentlich dann auch mal

insofern drum rumkommt, als man dann

sagen kann, okay, entweder man nimmt halt sowas wie

so ein Just-in-Time-Compiler, so ein Number

oder man nimmt halt

Man nimmt halt ein Subset von Python

halt zum Beispiel sowas wie Saiten

kompiliert das nach C

und dann

in ein C-Modul und dann kompiliert man das C-Modul

und importiert es wieder zurück

und dann ist es halt auch schnell

Also es gibt da schon Möglichkeiten, das hinzukriegen

Die Frage ist, naja gut, wenn man jetzt so eine

Engine hat, die irgendwie

Du würdest eigentlich besser das machen wie Game Engine

Also ich glaube schon,

dass man eine Game Engine in Python schranken könnte

das geht schon. Die Frage

ist

ja

ich weiß nicht, ob das jemand schon mal gemacht hat.

Ja, wahrscheinlich nicht. Also das ist halt immer auch

der größte

Flaw, den Python immer so hat,

wenn man Leute unterhält, dass das halt für 3D-Sachen

bis jetzt nicht so gut geeignet

gewesen ist. Weiß ich gar nicht.

Oder was meinst du mit 3D-Sachen? Ja, weil es halt

diese Bibliotheken dafür einfach nicht gibt.

Also wenn ich jetzt in C++ irgendwelche Frameworks

habe, die ja vorher schon

prädestiniert sind.

Und dass es in Python einfach nicht den einfachen Rapper gibt,

den man so gewohnt ist, wenn man das in der Hand hat.

Sondern es einfach viel, viel länger dauert, wenn man das

versucht anders zu machen.

Für mich wäre die Frage, was du genau meinst mit

was da gemacht werden soll.

Vielleicht möchte ich tatsächlich sowas haben

wie eine Figur, die animiert wird.

Und ich möchte dann im Raum drehen oder so.

Live Bilder sehen.

Ja, denke ich, kannst du in Python

wahrscheinlich ganz genau so schnell machen wie...

Oder ich würde sagen,

die Zeit, die du brauchst, um das hinzuschreiben.

Da bist du in Python wahrscheinlich deutlich schneller

und bist

halt wahrscheinlich auch vom Code her

schneller.

Ja, aber das ist doch eine Markt-Gesellschaft.

Ne, ich glaube,

ich weiß es nicht.

Mein Eindruck ist immer,

es ist irgendwie relativ schwierig, mit

Python irgendwie zur Grafikkarte

zu kommen.

Also,

ja, es gibt Anwendungen so für

PyOpenGL oder sowas.

geht bestimmt, aber

weiß nicht, so direkt

die Grafikkarte anzusprechen,

fällt mir jetzt persönlich nichts ein,

wo man sagen könnte, okay, das ist

was man,

dass man sich da in die Bibliothek reinholt, wo man

denkt, okay. Ja, ich kenne es halt nur aus dem

Machine Learning Bereich, da gibt es halt

CUDA, das ist halt diese Bibliothek

oder die

von Nvidia

und damit geht das, aber ich meine,

normalerweise gibt man damit halt keine Bilder aus, sondern man

berechnet halt irgendwie

Keine Ahnung, eben sowas wie Matrizenmultiplikation oder so.

Ja, aber da geht das. Aber ja, es stimmt schon.

Es ist ätzend. Man muss halt

diese ganzen Bibliotheken installieren.

Vielleicht soll das jemand mal neu bauen.

Das kannst du leider. Das ist leider nicht so einfach.

Nein, okay.

Ja, das ist ja auch das Problem. Also zum Beispiel für

diese ganzen Maschinenleutengeschichten kann man nur

Nvidia-Chips verwenden, weil es gibt nur für Nvidia

diese Bibliotheken.

Und ich glaube, die AMD-Chips sind halt

auch ähnlich leistungsfähig im Grunde,

aber kann man einfach nicht verwenden,

weil es gibt diese Bibliotheken nicht dafür.

Daher,

und das ist ja jetzt auch schon Jahre,

sind Leute dabei, das zu versuchen und es klappt halt nicht.

Daher, ich fürchte, das ist nicht so ganz einfach.

Es gibt dann so ein bisschen,

es gibt von Intel,

gibt es das irgendwie,

PlateML

oder so, wo man dann auch

irgendwie das auf anderen

als, also ich weiß nicht genau, also es funktioniert aber eigentlich alles letztlich nicht wirklich.

Da braucht man halt diese Unterstützung dafür und das gibt es halt nur für

Nvidia eigentlich in richtig gut. Und es ist total hakelig, das zu installieren

immer. Und wenn man halt nicht aufpasst, ist es halt langsam hinterher.

Also es ist ziemlich fies.

Also da hat man dann nicht wirklich Lust drauf?

Aufgrund, warum man dann Sprachen wechselt?

Ne, also für Maschinen, da gibt es ja auch keine Alternative. Welche Sprache willst du da wechseln?

und da gibt es ja auch nichts anderes.

Nee.

Es gibt wirklich nichts anderes.

Du kannst halt C++ verwenden,

aber...

Yay!

Was ist denn das?

Ja, aber wenn es um die Ausgabe geht,

ja, nee, keine Ahnung. Also ich habe, ehrlich gesagt,

auch, also Pygame gibt es,

ja. Nee, ich weiß nicht,

ob es da irgendwas gibt,

Aber ich denke mal, im Grunde müsste man das machen können.

Kann man eine Grafikkarte nicht einfach irgendwas

in den Hauptspeicher legen, in den Grafikkartenspeicher legen

und dann sagen, zeig das mal an oder so?

Das müsste doch eigentlich gehen.

Das müsste ich mal ausprobieren.

Aha.

Keine Ahnung.

Viel Spaß.

Mach mal deine Grafikkarte kaputt

und erzähl uns davon.

Ja.

Kann man eine Grafikkarte mit sowas kaputt kriegen?

Also wenn man sie zu heiß kriegt oder sowas?

Ja.

Ja, ja, ja, ja, interessant

Ja, aber was wäre das denn, wenn du dir was wünschen

könntest, weiß ich nicht, was dein Leben

irgendwie einfacher machen würde

jetzt sozusagen

in diesem

Anwendungsfall für Python

Was ist das, was dir da am meisten Schmerzen

macht oder wo man

am einfachsten irgendwas verbessern könnte.

Grundsätzlich

Python 3.

Okay, das ist ja fast schon traurig.

Ja.

Ich freue mich schon auf

Python 3.10 und denke mir so, ey, alles,

was danach oder davor war, das will ich nicht

mehr benutzen. Und das ist halt erst irgendwann,

das war so im August.

Ja, ihr glaubt gar nicht, wie sehr ich mich auf

F-Strings freue.

Ich glaube, mein Code hat immer noch nicht ein.

Also das

ist schon echt langsam haarig

was noch

es würde mich noch freuen

es gibt schon Ansätze, dass man

dass die ganze Industrie sich quasi

standardisiert auf gewisse

Bibliotheken, die dann auch

nach und nach geupdatet

werden, sprich dass man

sich alle einigen auf

eine bestimmte Compiler-Version

bestimmte Python-Version, bestimmte

andere Bibliotheken. Und wenn sich

da alle dran halten würden,

das wäre super, dass man nicht so

die ganze Zeit so zwischen diesen

Inkompatibilitäten hin und her

jobben muss.

Man kann ja einfach irgendwie ein PyEnt installieren und dann irgendwie seine

Version pinnen, sondern muss halt irgendwie

mit den Restriktionen jedes einzelnen

Programms, der Compiler

des einzelnen Programms verarbeiten und dann seine Skripte quasi immer downgraden oder sowas Irgendwie auf so ein auf so ein altes Python st Also ich habe Furcht davor ich wei nicht ob ich Lust h in Python 2 irgendwas zu machen

Ja, also nur um nochmal so einen kleinen Ausflug zu machen.

Es war eigentlich bis jetzt immer in Maya so, dass da ich das Python eingebettet war,

musste Python den Kompilierer benutzen, den Maya benutzt.

Das ist aber nicht der Standard C-Kompilierer, den Python normalerweise benutzt, sondern eine ältere Version

Sprich, alle PIP-Module, die eine DLL in sich hatten, wie NumPy oder so, haben erstmal auf Anhieb nicht funktioniert in Maya

Weil die Compiler einfach nicht miteinander kompatibel waren

Das heißt, wenn du NumPy benutzen willst, musst du es dir erstmal mit dem anderen Compiler durchkompilieren

bevor du es dann in Maya benutzen kannst.

Ja, sehr

anstrengend.

Absolut, ja.

Und ich würde mir auch wünschen, dass die Branche mal so

ein bisschen auf Python-Standards

umsteigen würde, wie Pip und

PyEnv und

alles andere, weil wir

sind quasi noch sehr, dadurch

dass die Python-Interpreter eingebettet sind,

sehr angewiesen auf die

Programme selbst. Also

Wir machen sehr viel mit Environment-Variablen zum Beispiel.

Typischerweise so Python-Path.

Wenn man das vorher setzt, dann findet halt der Interpreter in den entsprechenden Faden dann die Module.

Aber wir müssen uns die halt selbst zusammenklauben und selbst dann so ein bisschen unsere...

Hard reinhacken, alles injecten und dann läuft es.

Genau. Aber habt ihr das mal

probiert? Ich meine, eben, ich stelle

mir dann vor, genau, das Problem ist sozusagen, dass

deine

eben sowas wie NumPy

oder so Pakete installiert hast, muss halt

kompatibel sein zu dem

Python-Interpreter,

der in der Software drinsteckt,

mit der du das verwenden willst.

Du brauchst halt sozusagen dein

Maya-NumPy

für Maya und du brauchst

deinen, weiß ich nicht, Houdini-NumPy

und musst das dann halt umbiegen.

Habt ihr mal probiert, das mit

Conda-Paketen zu machen? Weil in Conda-Paketen

kann man solche Sachen ja auch mit reinbauen.

Das geht in PIP

nicht, aber mit Conda müsste das eigentlich

funktionieren.

Ich hatte bis jetzt noch nicht viel Zeit,

mich in Conda einzuarbeiten. Also ich hab's

hier und da schon gehört, viel Gutes

auch schon von gehört, aber

vielleicht ist das mal ein guter Tipp.

In Conda kann man sagen, welchen C-Compiler dahinter

verwendet werden soll? Ne, du kannst Binärpakete installieren.

Und du

kannst vor allen Dingen auch nicht Python-Pakete

installieren auch, was auch sehr praktisch

ist. Also PIPX.

Du kannst sogar so weit gehen, deine eigene

libc mitzubringen.

Also du kannst halt quasi viel mehr

mitbringen, als in einem PIP-Paket

ginge.

Und natürlich hast du dann immer noch das Problem,

dass Conda auch überhaupt gar nicht dafür gedacht ist,

sozusagen, dass man

halt

Ja, gab es oberflächlich eine Methan-Welt.

Nee, nee, dass das halt,

also dieser Use-Case, dass du

unterschiedliche Versionen von

ein Paket hast für unterschiedliche

Interpreter,

die eingewettet sind.

Dafür ist es auch nicht so wirklich gedacht.

Das ist schon ziemlich bizarr.

Ich glaube, du kommst daran nicht vorbei, dass du halt

ein Python-Nimms-Programm, das du da verwendest.

Und die Frage ist halt nur, wie du quasi

die geringste gemeinsame Basis findest

und das, was halt dann auf allen

diesen Programmen dann irgendwie läuft.

Das ist halt so, dass nervig, wenn da halt irgendwelche

Python-2-Sachen drunter stecken.

Ich weiß nicht, kann das sein, dass ihr das dann tatsächlich neu kompilieren müsst, wenn ihr das verwenden wollt und dann halt wartet, wenn das...

Also in Bezug auf NumPy wäre das so, genau. Man müsste es neu kompilieren, ja.

Genau, weil man könnte ja das auch irgendwie so

das halt sozusagen in allen für die

entsprechenden Interpreter kompilierten Versionen irgendwo hinlegen

und dann Tricks machen mit den

Umgebungsvariablen oder so, dass dann halt

das richtige Ding genommen wird

Also ja, wir würden es

vorkompilieren und dann umlegen

Genau

Ein sehr großer Teil

unserer Bibliothek liegt auch mit auf dem Server

und wird auch quasi

die ganze Zeit dynamisch einfach nur hinverlinkt

damit auch absolut sichergestellt

ist, dass jeder den gleichen Code ausführt.

Ah, ja, ja.

Also es gibt

teilweise

gibt es schon so Sachen, dass so

ja, Code quasi

runtergezogen wird auf die lokalen Maschinen

und von da aus dann exekutiert

wird, aber ein sehr großer

Teil unserer Pipeline liegt halt immer noch auf

dem Server zentral.

Was

gut und schlecht zugleich ist,

weil

und einerseits kannst du wahnsinnig schnell Sachen verändern, was manchmal einfach notwendig ist,

andererseits ist es irgendwie immer die Operation am offenen Herzen.

Und es geht dann vor allem gleichzeitig kaputt, wenn es kaputt geht, ne?

Ja.

Also patchst du dann wirklich auch die Module dann selber quasi?

Genau.

Also wir haben ja unsere eigenen Module, die quasi mit unserer Logik da funktionieren

und die patchen wir natürlich

komplett selbst. Für

Third-Party-Sachen, die versuchen wir

weitestgehend, so gut es geht,

unangetastet zu lassen, nur manchmal

hier und da vielleicht so ein bisschen zu bieten.

Jaja, so

in der Art.

Aber

ja, wir wollen uns da jetzt ordentlich ans

Bein binden, da unsere

eigene Version

jedes Mal hochzuziehen, nur wenn dann

ein Update kam.

Aber

ja

eigentlich ist mir das auch immer so ein kleiner

Dorn im Auge, dass das da alles immer so

live ist auf dem Server

und wir immer so ein Git-Repository updaten

und irgendwie

naja, ich habe noch

keinen wirklich guten Weg drum herum gefunden

vielleicht gibt es ja ein paar größere Experten

die hier auch mal hinkommen möchten

und sich erklären möchten, wie das funktioniert

ähm

aber

genau, also ja, diese Software-Installations-Story

bei Python ist halt echt so ein Problem.

Das ist irgendwie nicht gut gelöst.

Das ist immer furchtbar. Also habt ihr mal versucht,

jemandem, der kein Python kann, eine

vernünftige, lauffähige Python-Version, die auch

irgendwie selber ein bisschen was kann, ohne jetzt irgendwie

per Web-Installer

irgendwie auf der Software

was zu installieren? Also

gut?

Dass er selbst programmieren kann oder dass er selbst

ein kleines Programm bekommt? Nein, dass er selber

programmieren kann, also dass er eine vernünftige Computing hat,

dass ein Interpreter hat, am besten noch mit einer fünftigen Shell und integriert und mit

fünftigen Paketen und nicht jetzt irgendwie installiert in alle Pfade dieser

jeweiligen Systeme, sondern nur die gute Version oder sowas.

Also eigentlich sowas wie, du hast ein PyEnv installiert und du hast dann

die Pfade vernünftig gesetzt und du hast dann

ein PIP aktualisiert, vielleicht noch die Shell dazu aktualisiert mit einem

Paketmanager, irgendwie so. Also ich habe mal angefangen

so ein Developer-Environment-Skript zusammenzubauen, einfach

für Leute, wenn ein neuer Developer kommt,

zum Onboarden. Ich habe irgendwann,

das ist so 50% fertig, also 50% musst du immer noch

selber machen an der Stelle.

Aber grundsätzlich finde ich das eine interessante Idee,

so Leute relativ schnell auch reinzubekommen, aber

ja, wie du schon sagst,

es ist halt nicht so ganz einfach. Du musst halt

alles selbst zusammenziehen, alles an die

richtigen Stellen tun und...

Unheimlich aufwendig und das ändert sich halt alles so schnell.

Das heißt, du musst halt fliegen, weil du kommst halt irgendwie nicht hinterher.

Und dass

das dann gut funktioniert, ohne...

Und auf unterschiedlichen Systemen, mit unterschiedlichen Rechte

Verwaltungssystemen, die dann irgendwie installiert sind,

das ist alles furchtbar anstrengend.

Und das ist nie so, dass das irgendwie

also jetzt auf verschiedenen

Systemen Python nicht so integriert, dass man einfach

sagen kann, hey, cool, es ist da und

rennen mal los.

Das ist wahrscheinlich auch der Grund, weil ich glaube, die ganzen Programme,

die du da verwendest, sind hauptsächlich auf Windows, ne?

Ne, hauptsächlich auf Linux.

Auf Linux? Tatsächlich.

Es gibt

ein paar Ausnahmen.

Photoshop zum Beispiel.

Aber warum verwenden

die denn alle einen so veralteten Python-Elektroder?

Das verstehe ich dann wieder nicht.

Also

wir arbeiten

firmenintern auch noch mit CentOS 7.

Auch da ist noch Python 2

Default installiert.

Und wie gesagt, die Branche ist

unheimlich konservativ, was ihre eigenen

Applikationen angeht.

Also mach um Gottes Willen nichts kaputt.

Die

meisten User sind sowieso schon

angepisst genug von den ganzen

Bugs, die sie immer mit reinbekommen in die neue Version.

Aber ja, jetzt sind die meisten

halt in das Wasser gesprungen.

Oh ja, davon haben wir

einige.

Es gibt ja diesen schönen Trend von jetzt einfach schon die nächste Jahreszahl immer an die Softwareversion mit ranpacken, also Maya 2022 und so und naja, böse Zungen aus der Branche sagen dann immer, ja das ist die Jahreszahl, wo du es verwenden kannst.

Es gibt durchaus

Hotfix-Patches

die sind 1,5 GB groß

Also mit sowas schlagen wir uns auch gerne mal rum

Prima

Tja

Ja, ja, ja

so braucht. Ich meine, klar gibt es da hier und da

noch so ein paar kleine Kniffe.

Der macht ein krasses Boulder, oder? Der macht halt nicht so wirklich

mit external dependencies, da muss man

so ein bisschen noch fummeln und

Specification-Dateien irgendwie konfigurieren

und sowas, damit er es macht.

Genau, aber was er so

Default macht, ist eigentlich schon relativ

easy peasy.

Klar, je komplexer die

Bibliotheken sind, die du benutzt, desto

schwieriger wird das Ganze

da zurecht zu fummeln.

Aber im Endeffekt

ich habe sehr gute Erfahrungen damit gemacht.

Wir haben auch so 3, 4, 5

kleine Applikationen in der

Firma.

Die funktionieren damit tadellos.

je kleiner es ist, desto besser natürlich.

Du kannst natürlich da auch

sonst was reinknallen.

Wenn du dich nicht duhlet,

dann dauert

das natürlich auch 5 Minuten, bis das Programm offen ist.

Aber braucht ja keiner.

Oh, das erinnere ich mich.

Ich habe ein kleines Programm, was ich auch mit PyInstaller gepackt habe, als Binary geschrieben,

das nichts anderes macht, als YouTube zu fragen, hey, gib mir mal diesen Link zu diesem Suchbegriff.

Dafür muss man YouTube-API-Key bestellen und ich muss jetzt ein Video einreichen,

der meinen Workflow beschreibt, damit ich diesen API-Key ein Kontingent bekomme.

Hm.

Ja, traurig.

Ja, einen Screencast soll ich machen.

Hm.

Ja.

Aber das nur so als Beispiel für Sachen, die man in Python tut, das war eine ziemliche

Querverknüpfung

Ja, ja, ich bin

da habe ich dann auch nichts mehr davon gehört, es gab da noch andere Ansätze

es gab zum Beispiel irgendwie den Ansatz

Nuitka gibt es noch? Genau, das gibt es noch, aber das war auch nicht das Hippe

Es gab irgendwie noch das Hippe, wie hieß das denn noch?

Das hat irgendwie das in Rust geschriebene

Achso, gar nicht

Ja, ich hab's auch gehört, aber

ja, Rust installieren

und so weiter

Und dann gab's auch noch das

von PyOxidizer

Ja, genau, das ist richtig, genau

Ja, ja, aber da hab ich auch

länger nichts mehr von gehört

Das funktioniert alles immer so mittel

ehrlich gesagt

Dass irgendwie eins von den Dingen so unkompliziert mit jedem Paket

funktionieren würde in jeder Größe und

mir so eine Single-Binary-File baut,

die auf einem System läuft, das kein Python

präzisiert hätte, mit allem drin und

ohne Probleme und alles direkt mit

einpackt, was dazugehört mit den Dependencies,

weil ich irgendwie nur auf eine PyProject

oder eine Requirement zeige.

Gibt's noch nicht.

Ja, das ist wahrscheinlich einfach

nicht so einfach. Ja, warum denn nicht?

Sollen wir darüber noch eine Folge aufnehmen,

warum das so einfach ist?

Lass dich was sagen.

Ja, ja, ja

Ich weiß gar nicht, wie das

hier

Marc-André Lemburg hatte ja auch so

ein Ding geschrieben, ne?

Das packt auch so Pakete

Ja, und der macht da ganz schön fiese Tricks

Der packt das Ganze dann in so ein Zip-Archiv

benutzt dann die

Import, dass man daraus halt

Dinge importieren kann in Python

Dann strippt er dann auch irgendwie die ganzen Kram raus

damit das halt deutlich kleiner wird

dann ist das halt nur noch ein paar Megabyte groß

aber das ist, das sah auch schon

das sah auch schon nach

fortgeschrittener Magie aus

auch trotzdem, immerhin 20 MB oder so?

ne, ne, weniger

4, 5

und zwar komplette Standardbibliothek mit drin

ja, ok

also das ist schon sehr klein

aber funktioniert glaube ich auch nur auf

auf Linux

tja, tja

ich glaube wir sind beim Pick der Woche

angelangt, ja wollen wir

können wir gerne, also ich habe ja was

Grafisch hast du überlegt?

Ja.

Da habe ich ja letzte Woche ein bisschen reingeschaut und zwar die Konsole grafisch.

Also Rich fand ich sehr cool.

Das habe ich mit euch tatsächlich aufgestanden, ein bisschen ausprobiert und das macht wunderbar

die Konsole farbig und tolle Sachen.

Inspection.

Ich weiß nicht, ob ihr Ice Cream mitbekommen hattet.

Man konnte irgendwie Ice Cream importieren.

Und dann hast du einen Mini-Debugger, der quasi nichts anderes macht als ein Deep Web

Themen, aber da habe ich mir gedacht, nie, also

Don'tDogWitch, das macht

genau dasselbe, auch so ein Inspect quasi, der

in einer Tabellenform ausgibt

alle nutzbaren, coolen

Methoden einer Klasse zum Beispiel

oder einer Methode,

alles aufrufbar. Das ist echt cool.

Und alles farbige Outputs in der Konsole

einfach importieren und man kann quasi

seinen eigenen Python

Interpreter damit

pimpen, indem man das einfach lädt und installiert

quasi live und schon ist alles

und cool und sieht schön aus.

Geht doch rein, danke, rein.

Wow, ja, nice.

Ja, ist wirklich ziemlich cool.

Ich würde eins nehmen,

das natürlich so ein bisschen in meine Branche fällt,

nennt sich

Invisible Watermark.

Da kann man,

also Watermarken kann man ja Bilder

eigentlich relativ easy,

sprich du kannst einfach so ein großes,

und das fette Firmenlogo

quasi so halbtransparent über Bilder

legen und dann weiß jeder, okay, nee,

gehört dem oder dem.

Was aber interessant ist,

ist quasi unsichtbar Bilder

zu untermarken,

dass du quasi einfach nur verschiedene

Pixel so ganz leicht nuanciert

anders machst, dass du am Ende da

quasi deine

Daten reinpackst.

Das hat aber den Nachteil,

meistens, dass wenn du das Bild

verkleinerst oder, keine Ahnung,

spiegelst oder sonst irgendwas, dass dann diese Daten verloren gehen. Aber diese eine Python-Bibliothek kann das so machen, dass du das Bild komplett noch vermuscheln kannst, Bilder, Sachen rausziehen kannst oder wie auch immer und dein Watermark bleibt erhalten.

Also man muss aktiv diese Python-Bibliothek benutzen, damit das Watermark erhalten bleibt oder ist das auch für Dritte, die dann quasi das Bild bearbeiten, das Watermark noch drin?

Ich bin mir noch nicht sicher. Ich habe es leider noch nicht ausprobiert. Ich fand es nur mega cool. Es ist, glaube ich, auch wieder Artificial Intelligence hier basierend.

Okay, es hört sich aber so an, als müsste man das selber aktiv anschauen.

Es gab sehr coole Bilder dazu.

Das legen wir in den Show Notes.

Kann man mal reinkommen.

Ja, ich habe immer das Problem mit diesen ganzen

also ich meine, Steganografie

funktioniert ja auch in gewisser Weise so

Ich habe das aber auch

lange nicht mehr verfolgt, also das letzte Mal, dass ich da irgendwie

drauf geguckt habe, was da so passiert

ist halt schon lange her und das, was der zentrale

Punkt, der mich immer dabei gestört hat

ist, dass man

sagen wir mal so, wenn man jetzt Verschlüsselung hat

dann brauchst du halt einen Schlüssel, um rauszukriegen

was da drin steht

und bei diesen Geschichten kriegst du es halt

auch ohne, also was mich

interessieren würde, ist, ob es sowas gibt.

Du kannst erst

sehen, ob eine Information oder ein Watermark

in dem Bild oder

in irgendeinem Audio

oder Video oder sonst was drin ist,

wenn du den Schlüssel kennst. Und sonst kannst du

gar nicht rauskriegen, dass da irgendwas drin ist.

Und das Problem

ist halt immer,

das ist halt normalerweise nicht so,

vielleicht hat sich das auch geändert, und du kannst halt

immer zumindest sehen, was da drin ist. Das heißt, du kannst

da nicht irgendwelche Informationen drin verstecken.

Steekanografie.

Ja.

Und wenn du es halt sozusagen,

aber immer wenn du halt tatsächlich

einfach rauskriegen kannst, was da drin ist, ohne

zuerst einen Schlüssel

haben zu müssen, kannst du es auch

eigentlich ja dann wieder entfernen.

Einmal das, oder du kannst

es halt auch irgendwie verändern, oder du kannst halt

auch sozusagen

Dinge daraus lesen, die vielleicht eigentlich

gar nicht, also insofern,

ja, ich meine, um

Sachen zu markieren, dass

sie einem gehören oder so, ist wahrscheinlich

alles

ausreichend.

Ja.

Ja.

Ja, ja.

Der ist halt die Frage, wovon man es benutzen möchte.

Und ich hatte noch

eine andere kleine Entdeckung.

Die ist zwar kein Python-Modul,

aber ich finde sie trotzdem ziemlich cool.

Nennt sich devdocs.io

Oh.

Und

da...

Das ist im Grunde genommen

eine Sammlung von Dokumentationen

auch ganz verschiedenster Art

also ist nicht nur Python drin

ist auch C, C++, Angular

you name it

Das ist sehr schön aufbereitet

ziemlich fix und es macht Spaß

die Dokumentation drin zu lesen

also

da

hat mir

meinen Arbeitsalltag ein bisschen

versüßt, kann ich

empfehlen. Sehr schick.

Ja.

Mal kurz reingucken.

Ja, wunderbar. Ne, das sieht gut aus, tatsächlich.

Und da ist ja echt viel Zeug drin.

Oh ja.

Interessant.

Kann man sich jetzt so ein bisschen

Fables machen?

und dann

kann man da ratzbatz die Suche anschmeißen.

Funktioniert ziemlich

cool.

Ja, vielen Dank.

Moment, ich hätte hier auch noch einen.

Du hast auch noch einen?

Ja.

Ich würde mich auch schon mal bedanken.

Und zwar

hatte ich immer

so das Problem, dass ich

auf die Fischshell, so nachdem

ZSH ja jetzt

auf macOS irgendwie vorinstalliert ist,

zu Mainstreamig geworden. Da muss ich mal was Neues probieren.

Oh, cool, da ist Fisch.

Da sind wir an der Fisch-Hell gelandet.

Oh, mein Fisch.

Aber da ist immer das Problem, dass wenn man jetzt

die PyEnv

Virtual Envs verwendet, weil ich verwende

normalerweise PyEnv, um halt unterschiedliche

Python-Interpreter zu installieren,

oder halt

die von Portree, dann funktioniert das mit dem

Setzen des Prompts nicht immer

richtig und ist auch sonst irgendwie nicht

so schön integriert mit Fisch. Und man muss

irgendwie fiese Funktionen aufrufen

und manchmal geht es kaputt und dann ist man auf einem anderen Rechner

und da geht es auch nicht mehr alles nicht so schön.

Da gibt es ein

kleines Tool, was dem

Abhilfe schafft

und das ist

Virtual Fish und das ist sozusagen

ein

Virtual Env

Tool für Fish

und das funktioniert ganz hervorragend und das benutze ich jetzt immer

und das ist echt toll.

Ja, Virtual Fish mit Fuzzy Search, das ist schon...

Und ja, muss man benutzen eigentlich.

Genau.

Das nutze ich sogar auf den Windows-Rechnern.

Ja.

Ja.

Keine Ahnung.

Also, Witsche Fisch ist hoch im Kurs.

Fisch hat einige coole Plugins.

Müsst ihr mal reingucken.

Ja, dann sind wir mit den Picks auch durch, würde ich sagen.

Vielen Dank, Jochen.

Ja, danke, danke.

Schreibt uns alles, was ihr für uns haltet, was ihr doof fandet, was ihr gut fandet,

an hallo.at.pythonpodcast.de

Bis dann. Tschüss.

Dann bis zum nächsten Mal.

Schönen Abend.

Tschüss.