3 Punkte von GN⁺ 2024-01-25 | 1 Kommentare | Auf WhatsApp teilen

Wie man einen Animationsfilm in 8 kB macht

  • Im November 2022 begann die Herausforderung, eine Echtzeit-Animation innerhalb von 8 Kilobyte zu erstellen.
  • Das Ziel war, hochwertige Grafik, Animation, Regie, Kameraführung und Musik einzubeziehen.
  • Im April 2023 wurde nach mehreren Monaten Arbeit „The Sheep and the Flower“ fertiggestellt und veröffentlicht.

Überblick

  • Das Ergebnis ist eine Windows-Executable, bei der alle visuellen Elemente mit GLSL-Shadern erzeugt werden, die in Echtzeit auf der GPU berechnet werden.
  • Das Rendering verwendet Raymarching, und die Shader wurden mit dem Tool Shader Minifier verkleinert.
  • Die Musik wurde mit OpenMPT und dem 4klang-Synthesizer komponiert; die Instrumente sind prozedural beschrieben und die Notenlisten komprimiert.
  • Der Code wurde in C++ geschrieben und verwendet das Leviathan-Framework, um Compiler-Flags und Initialisierung zu starten.
  • Die finale Ausgabe wurde mit Crinkler komprimiert.

Der Beginn der Entstehung

  • Das Projekt begann, nachdem ein ehemaliger Kollege ein vor langer Zeit erstelltes Video namens „Capoda“ geteilt hatte.
  • Dieses Projekt könnte ein gutes Beispiel für Size Coding mit einer Geschichte sein, die zu 8 kB passt.
  • Die neue Herausforderung wirkte reizvoll, weil sie sich vom bisherigen Ziel von 64 kB unterschied.

Eine Welt mit zwei Dreiecken rendern

  • Es wird ein Rechteck gezeichnet, das den ganzen Bildschirm bedeckt (zwei Dreiecke), und ein in GLSL geschriebenes GPU-Programm (Shader) berechnet für jedes Pixel und jeden Frame die Farbe.
  • Die Szene wird als Signed Distance Field dargestellt, und per Raymarching wird das Distanzfeld in Pixel umgewandelt.

Regie

  • Es wurde darüber nachgedacht, wie sich mit begrenzten Figuren und Animationen eine Geschichte erzählen und Emotionen ausdrücken lassen.
  • Unnötige Elemente für die Geschichte wurden weggelassen, stattdessen lag der Fokus auf Details, Inszenierung, Schnitt und der Synchronisierung mit der Musik.
  • Kameraführung und Storytelling-Techniken wurden genutzt, um Emotionen zu vermitteln.

Entwicklungsprozess

  • Der Quellcode enthält viele hartkodierte Konstanten, die jeweils durch zahlreiche Iterationen festgelegt wurden.
  • Für eine schnelle Feedback-Schleife wurden Shader so genutzt, dass sie zur Laufzeit neu kompiliert werden konnten.
  • Für Animation und Kamerasteuerung wurde ein nützlicher Player benötigt.

Musik

  • Musik passend zur Geschichte benötigt verschiedene Abschnitte und Übergänge zu bestimmten Zeitpunkten.
  • Die Musik wurde mit dem 4klang-Synthesizer komponiert, und die Daten wurden komprimiert, um Platz zu sparen.

Animation & Synchronisierung

  • Alles in der Demo wird pro Frame neu ausgewertet und besteht aus etwa 25 manuell erstellten Kameraeinstellungen.
  • Für jede Einstellung wird beschrieben, wie sich die einzelnen Kameraparameter im Zeitverlauf verändern.

Texturen & Materialien

  • Anders als bei traditionellen Renderern werden 3D-Texturen in Echtzeit berechnet und verwendet.
  • Texturen wie Verkehrsschilder werden durch die Kombination mehrerer Funktionen erzeugt.

Augen

  • Zu Beginn der Entwicklung wirkten die Augen leblos und unbewegt, obwohl sie als Werkzeug des Storytellings wichtig sind.
  • Reflektiertes Licht in den Augen wurde hinzugefügt, um ihnen mehr Lebendigkeit zu verleihen.

Nachbearbeitung

  • Für den letzten visuellen Feinschliff und um die Stimmung der Geschichte festzulegen, wurden Farbkorrektur, Gammakorrektur, Vignettierung, FXAA-Filter und Ähnliches verwendet.

Komprimierung

  • Anstatt Daten zu speichern, wurde ein Ansatz gewählt, bei dem Daten per Code erzeugt werden.
  • Mit dem Komprimierungstool Crinkler wurde die Executable selbstextrahierend gemacht.

Minimierung

  • Um den Shader-Quellcode so klein wie möglich zu machen, wurde das Tool Shader Minifier verwendet.
  • Neue Funktionen wurden zu Shader Minifier hinzugefügt, um Shader-Code weiter zu minimieren und zu komprimieren.

Der Krieg zwischen dem Schaf und der Blume

  • Denkst du, der Krieg zwischen dem Schaf und der Blume sei unwichtig? Dieses in „Der kleine Prinz“ erwähnte Thema ist ein wichtiger Teil der Geschichte.

Fazit

  • Solche Demos basieren auf fortgeschrittener Technik und bestehender Forschung, die für ihre Erstellung nötig sind.
  • Es besteht die Hoffnung, dass die neuen Funktionen anderen helfen, noch bessere Demos zu bauen.
  • Die 8-kB-Kategorie bietet mehr Möglichkeiten als 4 kB und soll hoffentlich populärer werden.

Meinung von GN⁺

  • Dieses Projekt ist ein Beispiel dafür, wie technische Grenzen überwunden und mit Kreativität erstaunliche Ergebnisse erzielt werden können.
  • Die in extrem begrenztem Raum von 8 kB fertiggestellte Animation zeigt die Verbindung von Programmierung, Algorithmus-Optimierung und künstlerischem Ausdruck.
  • Die Entwicklung von Tools wie Shader Minifier und der Einsatz des Komprimierungstools Crinkler unterstreichen innovative Ansätze in Software Engineering und Datenkomprimierung.

1 Kommentare

 
GN⁺ 2024-01-25
Hacker-News-Kommentare
  • Meinung des Originalautors:

    • Als Schöpfer des Originalfilms findet er es beeindruckend, dass das Remake in 8 kB passt, während das Original aus Blender-, SVG- und Audiodateien im MB-Bereich bestand.
    • Er nennt dies ein gutes Beispiel für die sinnvolle Nutzung einer Creative-Commons-Lizenz und äußert den Wunsch, dass die Igel-Figur und die Melodie des Originals verwendet werden.
  • Erwähnung des Sloot Digital Coding System:

    • Mit den Worten "Sloot lives!!!" wird auf das Sloot Digital Coding System angespielt.
  • Meinung zu Demoscene-Videos:

    • Es wird angemerkt, dass Demoscene-Videos unterhaltsam sind und nicht die Aufmerksamkeit bekommen, die sie verdienen.
    • Es wird gehofft, dass Kanäle wie Retro Game Mechanics Explained die Demoscene gut erklären.
  • Analyse der Demoscene-Technik:

    • Wer viele Demoscene-Werke anschaut und untersucht, versteht, wie geometrische Vereinfachungen möglich sind, etwa Schafsbeine als Kegelformen darzustellen.
    • Es wird erwähnt, dass sich die meisten Demoscene-Arbeiten auf die 3D-Beschleunigung der GPU stützen, Demos im Stil von 2D-Animationen jedoch selten und in sehr kleinen Größen fast nicht vorhanden sind.
    • Es wird die Frage aufgeworfen, ob 3D-Animation leichter sei als 2D.
    • Ergänzend wird erwähnt, dass "mouton" auf Französisch "Schaf" bedeutet und sich davon "mutton" ableitet.
  • Erinnerung an das Spiel .kkrieger:

    • Obwohl die Technik anders ist, erinnert es an das auf 96k komprimierte 3D-FPS-Spiel .kkrieger.
    • .kkrieger wird als interessantes Werk bezeichnet.
  • Empfehlung zu Cosmos Laundromat:

    • Es wird der Film Cosmos Laundromat der Blender Foundation empfohlen, der zwar größer als 8 kB ist, aber ein unerwartet düsterer Animationsfilm über Schafe.
    • Es wird angemerkt, dass solche Filme für Tech-Demos ungewöhnlich düstere Themen haben.
  • Positive Reaktion auf den Film:

    • Er wird als interessantes und überraschendes Werk mit einem unvorhersehbaren Ende bewertet.
  • Lob für die Kreativität:

    • Es wird Bewunderung dafür ausgedrückt, innerhalb der Einschränkungen eine kreative und unterhaltsame Geschichte geschaffen zu haben.
    • Außerdem besteht Interesse an mehr technischen Details und daran, wie Bytes eingespart wurden.
  • Erinnerung an Razor 1911:

    • Die Worte "Razor 1911" lösen pure Nostalgie aus.
  • Informationen zu Demoscene-Kategorien:

    • 8KB wird als eine der Demoscene-Kategorien genannt, und Pouet wird als guter Index empfohlen.