Stay Homeでも花火大会をしたい
中々外に出れない今日この頃、せめて5歳の娘に家でささやかな花火大会をしてやりたいなと思っています。家にプロジェクタがあるので、家で壁とか大きめのスクリーンに花火を映して、花火気分を味わいたいなと思い、少しプログラミング組んでみることにしました。
プログラミングで花火の打ち上げ制御とか、最適な火薬の混合率の調合とかを期待した人はごめんなさい!
Processingで花火をプログラミング
最初は慣れているPythonで作るか、Touch DesignerでVJっぽくしようかなと思ったのですが、映像と音を手軽に扱えることと、プログラミングに慣れていない人にも手軽に扱えることからProcessingで作ってみました。
リポジトリは以下です。
使い方
あらかじめProcessing 3をインストールして、以下のライブラリをインポートしておいてください。
- minim(オーディオライブラリ)
- PostFx(ビジュアライゼーション)
MacやLinuxでコマンドに慣れている人なら以下コマンド実行して、Processing3で開いて実行すれば動きます。
$ git clone https://github.com/karaage0703/p5_firework && cd p5_firework
$ curl -o firework_sound.mp3 https://taira-komori.jpn.org/sound/event01/fireworks2.mp3
よくわからない人は、以下のコードをコピペしてp5_firework.pde
というファイルで保存して、同じディレクトリにfirework_sound.mp3
という花火の音声ファイルを用意してください。
私はこちらのサイトの花火大会1の音声を使用しました。音声ファイルは、適当な短さに加工して使っています。
コードを実行して、キーボードの1〜3を押すと、数字に応じて大きさの異なる花火が、冒頭のGIF動画のように打ち上がります。
コードに関して
以下のコードを参考にしています。というかほぼそのままです。
Mod: Coding Challenge #27: Fireworks!(2D+3D)
Fireworks Coding Challenge #27
クラスうまく使って花火実現しているのですね。もし自分で書くともっとベタな書き方しそうです。
変えたところは以下くらいです。
- 数字キーを押すと花火が打ち上がるようにした
- 数字キーに応じて花火のサイズが変わる
- 花火が打ち上がって行くとき、徐々に色がかすれて行くようにした
- その他、好みで無駄に修正(元の方が良かったかも…)
改善したい項目
以下を改善したいなと思っています。
- 花火の音をライセンスフリーなものに変更(自分で作る?)
- 花火をもっとリアルにしたい
- 色々な形の花火のパターンが増やしたい
- マルチプラットフォーム(Win/Mac)にバイナリを配布(プログラム詳しく無い人でも簡単に使えるように)
改善1(2020/08/14)
@tomo_makes さんのPRにより、花火がグッとリアルになりました!
まだまだPR募集中です!
改善2(2020/08/15)
さらに改善しそう!
続 #Processing でおうち花火大会。少し現実に近づいた。レンダリングをP2Dに、ポストエフェクトにPostFX(Bloomフィルタ)。
— tomo-makes@図解速習DEEP LEARNING (@tomo_makes) August 14, 2020
Firework, Particle, BallShellというクラス構成だけど、色んな花火の動きバリエーションをどこにどう実装するか、と普段と違う脳みそで考えるので楽しい。 #dailycoding pic.twitter.com/ms1sbGE7wz
改善3(2020/08/20)
どんどん改善し続けています!
#お家花火大会 #dailycoding 楽しくなってしばらく書いていましたが、 @karaage0703 さんのアイコンが夜空に輝くところまできて一区切り。
— tomo-makes@図解速習DEEP LEARNING (@tomo_makes) August 19, 2020
最初考えたものはほぼ実装でき、後はリファクタ。#processing のOOP練習になり、アニメーション一般をどんな文法、気持ちで扱いたくなるか理解が深まった。 pic.twitter.com/RVA1R23X4w
まとめ
Processingで家で花火大会をするべくコーディングしてみました。最低限のものは出来たのですが、娘をよろこばせるために更に改善したいところなのですが、衝撃な事実に気づいてしまいました。自分のコーディング能力が低い!
特にクラス使ったコーディングとか、あんまり出来ないのですよね。というわけで、Qiitaのプログラム詳しい人になんとかしてもらえないかなと思い、公開してみました。気の向いた方は是非改善のPRください。ちなみに花火大会は、来週の週末くらいを予定しています。GitHubにPRをいただけたら嬉しく思います。
良いものができたら、多くの人に家で花火大会を楽しんで貰えたら幸いです。
実際にお家で花火大会を実施した様子
作成したコードで、自宅で花火大会を実施してみた様子をブログに書きました。
プログラミングとプロジェクタを使って娘のためにお家花火大会を開催してみた
変更履歴
- 2020/08/30 ブログへのリンク追加