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
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.
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.
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.