Processingで作ったデジタルアートを動画として書き出す方法

Processingで作成したデジタルアートはいろんな用途で利用することができますが、映像を制作するときは動画ファイルとして生成する必要があります。
ここではProcessingを動画ファイルとして生成して取り扱う方法をご紹介します。
流れとしては、saveFrame関数を使ってコマ分の静止画を生成していきます。
そして、生成した静止画を動画に変換していきます。
ここでは、Processingで作ったビジュアルアートを動画として書き出す方法をご紹介します。
Processingを動画として書き出す
まずはサンプルプログラムから見ていきましょう。
今回のサンプルは簡単に、3Dで立方体のオブジェクトを回転しながら大きくなったり小さくなったりするものを用意しました。
静止画を生成
draw関数の最後にsaveFrame関数を使って静止画を生成します。
saveFrame関数の引数には、フレームを保存するフォルダ名と「####」で連番を、最後にtifまたはpngの拡張子でファイル名設定します。
#の数は連番の桁数になります。
float rotX, rotY, rotZ;
float eSize = 350;
int scaling = 1;
void setup(){
size(1920, 1080, P3D);
smooth();
frameRate(30);
}
void draw(){
background(220);
pushMatrix();
translate(width/2, height/2);
fill(255, 102, 102);
rotX += 0.005;
rotY += 0.006;
rotZ += 0.007;
rotateX(rotX);
rotateY(rotY);
rotateZ(rotZ);
eSize += 0.4 * scaling;
box(eSize);
popMatrix();
if ((eSize > 550) || (eSize < 220)) {
scaling = -scaling;
}
saveFrame("frames/####.tif");
if (frameCount >= 1800) { // 1800コマアニメーションした時
exit();
}
}
必ずしもexit関数で終わらせる必要はなく、あるコマ数まで静止画を生成する方法をとってもいいです。
if (frameCount <= 1800) {
saveFrame("frames/####.tif");
}
こちらのほうが動画として生成する範囲をコントロールできそうです。
実際に生成した静止画がframesフォルダ内に格納されているのが確認できます。

frameCount関数を利用したif文では、実行してからのフレームカウントを1800としてコマ分の静止画を生成するようにしています。
テレビの場合は1秒間に30fpsですので、このあとの動画に変換する設定でも30fpsとして生成するので、1分の動画のフレーム数を生成することになります。
ちなみにアニメは1秒間に24fpsとなります。
静止画を動画に変換する
ここからは、Processingに付属しているツールを使って静止画を動画に変換します。
「Tools(ツール)」から「Movie Maker(ムービーメーカー)」を選択します。

Movie Makerの設定画面が表示されます。
Drag a folder with image files into the field below: という項目に、静止画があるフォルダのパスを指定します。「Choose(選択)」ボタンからコンピュータ内の先程生成した静止画の入っているframesフォルダを選択します。
動画の幅と高さ、フレームレートなどを変更したい場合は、「Same size as originals」のチェックを外して調整してください。
今回のサンプルは、YouTubeなど様々なプラットフォームでアップロードして活用できる解像度として、現在業界基準(1080の解像度[フル HD])の1920×1080で作ってあるのでそのまま変更せず、フレームレートもテレビと同じ映像の30fpsでいくのでチェックを入れています。
Compressionの項目は「MPEG-4」として、MP4ファイルを生成できるようにしておきます。
設定ができましたら、「Create movie(動画を作成)」を選択します。

ファイル名を決めて保存先を指定しましたら、「Save」ボタンを選択して動画ファイルの生成となります。

Processing3系を利用されている場合、動画の書き出しを実行すると、MOV形式の動画ファイルが生成されます。
MOV形式の動画ファイルは、Windowsのメディアプレーヤーでは再生ができないので、変換ツールなどを利用してMOVファイルを、様々なデバイスで再生できるMP4形式の動画ファイルに変換する必要があります。これはMacでも別の用途で利用してく場合でも同じです。
動画ファイルの変換について、
Windowsでは、デフォルトで搭載されている動画エディター(Windows 11ではClipchamp)で動画ファイルを開いて、エクスポートのボタンからmp4形式で書き出します。
macOSでは、iMovieが無料で利用できますので、iMovieで動画ファイルを開いて、そのまま書き出し作業をしてもらえばmp4形式で書き出せます。
また、Adobe製品のPremiere Proでも動画ファイルを開いて書き出し作業を行えばOKです。
音響データを追加する
Processingを動画として書き出す際に、音楽などの音を映像に追加することができます。
Drag a sound file into the field の項目に、「Choose(選択)」ボタンからコンピュータ内の音響データファイルを選択してパスを指定すれば、動画の生成時に音響データを追加できます。

音響データのサイズ(長さ)は、映像の長さに合わせておくといいでしょう。
さいごに
実際に出来上がったのがこちら。
Processingで映像を作る時や、また面白い作品や芸術的なアートが作れてシェアしたいときにでも動画ファイルとして共有してみてください。