3 ポイント 投稿者 GN⁺ 2024-01-25 | 1件のコメント | WhatsAppで共有

8kBでアニメーション映画を作る方法

  • 2022年11月、8キロバイト以内でリアルタイムアニメーションを作る挑戦を始めた。
  • 目標は、高品質なグラフィックス、アニメーション、演出、カメラワーク、そして音楽を含めることだった。
  • 2023年4月、数か月にわたる作業の末に「The Sheep and the Flower」を完成させて公開した。

概要

  • 成果物はWindowsの実行ファイルで、すべての視覚要素はGPU上でリアルタイム計算されるGLSLシェーダーを使用している。
  • レンダリングにはレイマーチング手法を使い、シェーダーはShader Minifierツールで縮小した。
  • 音楽はOpenMPTと4klangシンセサイザーを使って作曲され、楽器は手続き的に記述され、音符リストは圧縮されている。
  • コードはC++で書かれ、Leviathanフレームワークを使ってコンパイラフラグと初期化を開始した。
  • 最終出力はCrinklerを使って圧縮された。

創作の始まり

  • 元同僚がずっと前に作った「Capoda」という動画を共有してくれたことに触発され、このプロジェクトを始めた。
  • このプロジェクトは、8kBに適したストーリーを持つサイズコーディングの好例になり得る。
  • 64kBを目標にしていたときとは異なる、新しい挑戦に興味を引かれた。

2つの三角形で世界をレンダリングする

  • 画面全体を覆う長方形(2つの三角形)を描き、GLSL言語で書かれたGPUプログラム(シェーダー)を実行して、各ピクセルと各フレームごとに色を計算する。
  • シーンを符号付き距離場として表現し、レイマーチングを使って距離場をピクセルへ変換する。

演出

  • 限られたキャラクターとアニメーションでストーリーを伝え、感情を表現する方法について考えた。
  • ストーリーに不要な要素は除き、ディテールや演出、編集、音楽との同期に集中した。
  • カメラワークとストーリーテリングの技法を使って感情を伝える。

開発プロセス

  • ソースコードには多くのハードコードされた定数が含まれており、それぞれの定数は何度もの反復を経て決められた。
  • 迅速なフィードバックループのため、シェーダーを使ってランタイム時に再コンパイルした。
  • アニメーションとカメラ制御の作業に役立つプレーヤーが必要だった。

音楽

  • ストーリーに合った音楽には、さまざまなパートと特定のタイミングでの転換が必要だった。
  • 4klangシンセサイザーを使って作曲し、データを圧縮して容量を節約した。

アニメーション & 同期

  • デモ内のすべての要素はフレームごとに再評価され、約25個の手動カメラショットで構成されている。
  • 各ショットを作る際に、カメラの各パラメータが時間に応じてどう変化するかを記述した。

テクスチャ & マテリアル

  • 従来のレンダラーとは異なり、3Dテクスチャをリアルタイムに計算して使用する。
  • 交通標識のようなテクスチャは、複数の関数を組み合わせて生成される。

  • 開発初期の目は生気がなく無生物のようだったが、ストーリーテリングの道具として重要だった。
  • 目に反射する光を追加して、生き生きとした印象を与えた。

ポストプロセス

  • 最終的なビジュアルの仕上げとストーリーの雰囲気作りのために、カラー補正、ガンマ補正、ビネット、FXAAフィルターなどを使用した。

圧縮

  • データを保存する代わりに、コードを使ってデータを生成する方式を採用した。
  • Crinkler圧縮ツールを使って、実行ファイルを自己展開可能にした。

最小化

  • シェーダーのソースコードをできるだけ小さくするために、Shader Minifierツールを使用した。
  • シェーダーコードを最小化して圧縮するため、新機能をShader Minifierに追加した。

羊と花のあいだの戦争

  • 羊と花のあいだの戦争が重要ではないと思うだろうか? 『星の王子さま』で言及されたこのテーマは、物語の重要な一部だ。

結論

  • このようなデモを作るために必要な高度な技術と、既存の研究の上に成り立っている。
  • 新しい機能が、ほかの人たちがより良いデモを作る助けになればと願っている。
  • 8kBカテゴリは4kBよりも多くの可能性を提供しており、人気が高まることを期待している。

GN⁺の意見

  • このプロジェクトは、技術的限界を乗り越え、創造性を発揮して驚くべき成果物を生み出した例だ。
  • 8kBという極端に制限された空間の中で完成したアニメーションは、プログラミング、アルゴリズム最適化、そして芸術的表現の結びつきを示している。
  • Shader Minifierのようなツールの開発とCrinkler圧縮ツールの利用は、ソフトウェアエンジニアリングとデータ圧縮分野における革新的なアプローチを際立たせている。

1件のコメント

 
GN⁺ 2024-01-25
Hacker Newsの意見
  • 原作者の意見:

    • 原作映画の制作者として、元の作品がMB単位のBlender、SVG、オーディオファイルで構成されていたのに対し、リメイクが8kBに収められているのは印象的だと述べている。
    • クリエイティブ・コモンズ・ライセンスが有効に活用された例として、原作のハリネズミのキャラクターとメロディーが使われていたらよかったのに、との希望を示している。
  • Sloot Digital Coding Systemへの言及:

    • 「Sloot lives!!!」という言葉で、Sloot Digital Coding Systemへの参照をしている。
  • デモシーン動画についての意見:

    • デモシーン動画は面白く、もっと多くの人に見られるべきなのに十分な注目を集めていないと指摘している。
    • Retro Game Mechanicsのようなチャンネルがデモシーンをうまく説明してくれることを望んでいる。
  • デモシーン技術についての分析:

    • デモシーン作品をたくさん見て研究すると、羊の脚を円錐形で表現するような幾何学的単純化が可能なやり方を理解できるようになるとしている。
    • ほとんどのデモシーン作品はGPUの3Dアクセラレーション機能に依存しているが、2Dアニメーション風のデモは珍しく、小さなサイズではほとんど存在しないと述べている。
    • 3Dアニメーションのほうが2Dより簡単なのか、という疑問を投げかけている。
    • 「mouton」はフランス語で「羊」を意味し、そこから「mutton」が派生したことを補足している。
  • .kkriegerゲームについての回想:

    • 技術的な面は異なるものの、96kサイズに圧縮された3D FPSゲーム .kkrieger を思い出すとしている。
    • .kkrieger は興味深い作品だったと評している。
  • Cosmos Laundromatの推薦:

    • 8kBよりは大きいが、羊に関する予想外にダークなアニメーション映画として、Blender Foundationの Cosmos Laundromat を勧めている。
    • 技術デモとしては珍しく、ダークなテーマの映画を作る傾向があるとも述べている。
  • 映画に対する好意的な反応:

    • 予測不能な結末を持つ映画として、興味深く驚きのある作品だと評価している。
  • 創造性への称賛:

    • 制約の中で創造的で面白いストーリーを作ったことに感嘆している。
    • 技術的な詳細や、バイト数を減らすための方法についてもっと知りたがっている。
  • Razor 1911への思い出:

    • 「Razor 1911」という言葉に、純粋なノスタルジーを感じている。
  • デモシーンのカテゴリについての情報:

    • 8KBはデモシーンのカテゴリの1つであり、Pouetに良いインデックスがあると紹介している。