フリーウェアでシミュレーション結果アニメーションを作る

gnuplot + perl + imagemagick 編

<< Prev - Index - Next >>

2. GIFアニメーションを作る

■ あとは、imagemagick 内にある、convert というコマンドで、アニメーションgifを作ってみましょう。

convert は、ある画像ファイルを別フォーマットの画像ファイルにするコマンドで、通常は、

convert image01.png image01.jpg image01.png という画像から、image01.jpg を作る

というように使います。convertは、複数の画像をまとめることができて、出力先のファイルがgifの場合には、gifアニメーションを作成します。

$ cd GIFSEQUENCE
$ convert -delay 10 -loop 0 sequence???.gif gifanim.gif

■ オプションの -delay は、再生の待ち時間(1/100秒単位) の設定で、-loop は連続再生する場合の回数になります。このオプションをつけて再生回数を0にすると、無限ループになります。

■ 以上の手続きで作った 10ステップ分の gif animation です。


■ ラベルの追加やキーの表示の設定、y-z面の図にするなどの設定は gnuplot 上で行えます。
また、図の余計な部分のトリミングなどは、convertのオプション設定を使って実行できます。
詳細は、それぞれの解説文書はウェブ上に数多くあるので、それらを参考にしてください。


3. AVIやMPEGを作る
■ AVIやMPEGを作るには、有償ソフトを使ったほうが相性問題が発生しにくいので何かと良いのですが、フリーウェアオンリーでも何とかなります。
例として Windows/Linux 両方使えるということで avidemuxを使ってAVIやMPGを作ります。
Windows機であれば、Virtual Dubの方が便利かも知れません。

■avidemuxは、 aptの使えるLinuxであれば、apt-get install avidemux 等のコマンドでインストールできます。Windows版であれば、インストーラか実行ファイルをダウンロードで入手します。

■ まず gnuplotを使ってシミュレーション結果を連番画像ファイルにします。
avidemuxの特性として、GIF連番ファイルは読み込めないようですので(2.4.3時点)。連番PNGにします。

■出力設定のset term 部分を書換えます。(当然出力ファイルの拡張子も変更します)

set term png truecolor size 640,480
出力方法を24-bit pngに設定し、サイズを640x480にする。


AVIやMPG等は、映像の横のサイズが8の倍数や16の倍数でなければならないことが多いので、320x240や640x480など良く使われる画像サイズに設定するのが無難です。
また、Indexカラーの画像も読み込めないことが多いので truecolor(RGB24bit) に設定しておきます。

■ 連番ファイルの先頭を開いて、MPGやAVIで出力すれば映像ファイルが作れます。
ただし、フォーマット(.mpgとか.aviとか)とコーデックの組み合わせは手動できちんとあわせる必要があるようで、再生できない組み合わせなどいろいろあるようなのが残念なところです。

例).mpg(映像のみ) を DVDフォーマット(正確にはmpeg2?)で保存

(ただし、ver 2.4.3 の時点で、秒間30フレーム(29.97?)限定になっているようなので、一度aviに変換してWindowsでmpgにしたほうがいいかも…)
例).avi を Huffyuvコーデックで保存

Huffyuvの導入してあれば、Linux/Windowsどちらでも扱えます。

無圧縮aviであれば互換性の問題が無いので、Video設定の「Copy」を選び映像をそのまま出力すればよさそうなのですが、これは違うようです。
(例えばpng連番をaviにする時には、無圧縮のaviを作るのではなく png のフォーマットの連なりとして出力するようです)

一応 Huffyuv 等のWindows機にも導入できる定番のコーデックなどを使うのがよさそうです。
■ Virtual Dubの場合は圧縮設定でコーデックを選択して「名前をつけて保存」で.aviを出力できます。

■Virtual Dubはmpg出力はできないので、mpgにするには他のソフトを使います。


■TMPEGEnc(Free版)はWindows環境で定番のmpeg変換フリーソフトです。

TMPEGEnc は連番画像では bmp, tga, ppm, jpgファイルが読めるようです。
mpgを作るには一旦aviを介すか、これらのフォーマットで出力しておくことになります。
(gnuplotはどうもbmp, tga は出力設定に無いようなので、jpgで出力するしかなさそうです)



■ VirtualDubも、TMPEGEnc も LINUX 上でも WINE を介して一部機能が動作するようです。

Linuxで動かすには、コーデックの互換に難があるので機能はかなり限定されますが、自分が試したところ単に導入して何もいじらない状態で 非破壊aviの作成や、jpeg 連番画像から .mpg への変換は機能しました。


謝辞:データのサンプルは、北海道大学低温科学研究所(2008年時点)の和田浩二さんに提供いただきました。
<< Prev - Index - Next >>