34
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Processingで家で花火大会を実施する方法

firework.gif

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という花火の音声ファイルを用意してください。

p5_firework.pde

 私はこちらのサイトの花火大会1の音声を使用しました。音声ファイルは、適当な短さに加工して使っています。

 コードを実行して、キーボードの1〜3を押すと、数字に応じて大きさの異なる花火が、冒頭のGIF動画のように打ち上がります。

コードに関して

 以下のコードを参考にしています。というかほぼそのままです。

Mod: Coding Challenge #27: Fireworks!(2D+3D)

Fireworks Coding Challenge #27

 クラスうまく使って花火実現しているのですね。もし自分で書くともっとベタな書き方しそうです。

 変えたところは以下くらいです。

  • 数字キーを押すと花火が打ち上がるようにした
  • 数字キーに応じて花火のサイズが変わる
  • 花火が打ち上がって行くとき、徐々に色がかすれて行くようにした
  • その他、好みで無駄に修正(元の方が良かったかも…)

改善したい項目

 以下を改善したいなと思っています。

  • 花火の音をライセンスフリーなものに変更(自分で作る?)
  • 花火をもっとリアルにしたい
  • 色々な形の花火のパターンが増やしたい
  • マルチプラットフォーム(Win/Mac)にバイナリを配布(プログラム詳しく無い人でも簡単に使えるように)

改善1(2020/08/14)

firework_20200814.gif

@tomo_makes さんのPRにより、花火がグッとリアルになりました!

まだまだPR募集中です!

改善2(2020/08/15)

 さらに改善しそう!

改善3(2020/08/20)

 どんどん改善し続けています!

まとめ

 Processingで家で花火大会をするべくコーディングしてみました。最低限のものは出来たのですが、娘をよろこばせるために更に改善したいところなのですが、衝撃な事実に気づいてしまいました。自分のコーディング能力が低い!

 特にクラス使ったコーディングとか、あんまり出来ないのですよね。というわけで、Qiitaのプログラム詳しい人になんとかしてもらえないかなと思い、公開してみました。気の向いた方は是非改善のPRください。ちなみに花火大会は、来週の週末くらいを予定しています。GitHubにPRをいただけたら嬉しく思います。

 良いものができたら、多くの人に家で花火大会を楽しんで貰えたら幸いです。

実際にお家で花火大会を実施した様子

 作成したコードで、自宅で花火大会を実施してみた様子をブログに書きました。

プログラミングとプロジェクタを使って娘のためにお家花火大会を開催してみた

変更履歴

  • 2020/08/30 ブログへのリンク追加
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
34
Help us understand the problem. What are the problem?