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件のコメント
Hacker Newsの意見
原作者の意見:
Sloot Digital Coding Systemへの言及:
デモシーン動画についての意見:
デモシーン技術についての分析:
.kkriegerゲームについての回想:
Cosmos Laundromatの推薦:
映画に対する好意的な反応:
創造性への称賛:
Razor 1911への思い出:
デモシーンのカテゴリについての情報: