この文書の現在のバージョンと選択したバージョンの差分を表示します。
Next revision | Previous revision Last revision Both sides next revision | ||
movie [2009/09/15 21:08] 130.54.130.245 作成 |
movie [2009/09/16 08:13] 10.249.202.212 |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
====== dataファイルによる動画の作成 ====== | ====== dataファイルによる動画の作成 ====== | ||
dataファイルをguplotで可視化し,gif形式で保存して,最後にそれらを連結させて動画をつくる. | dataファイルをguplotで可視化し,gif形式で保存して,最後にそれらを連結させて動画をつくる. | ||
- | ===== シェルスクリプト ===== | + | 必ずdataファイルは連番(output01.dat,output02.dat,....)とすること。([[http://basewall.kuciv.kyoto-u.ac.jp/dokuwiki/doku.php?id=fortran#%E9%80%A3%E7%95%AA%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B|連番のファイル名をつける。]]) |
+ | |||
+ | |||
+ | ===== シェル ===== | ||
+ | シェルスクリプトを適当なファイル"hoge.sh"に保存し,dataファイルと同じディレクトリに置く. | ||
+ | あとは、ターミナルでシェルを実行する。 | ||
+ | <code> | ||
+ | $ sh hoge.sh | ||
+ | </code> | ||
+ | ==== シェルスクリプト ==== | ||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
ライン 20: | ライン 30: | ||
set terminal gif | set terminal gif | ||
set output "gif/${newname}.gif" | set output "gif/${newname}.gif" | ||
- | set xrange[$minl:$maxl] | + | set xrange[$minx:$maxx] |
# set xlabel "location from upstream [km]" | # set xlabel "location from upstream [km]" | ||
set yrange[$miny:$maxy] | set yrange[$miny:$maxy] | ||
ライン 40: | ライン 50: | ||
</code> | </code> | ||
与えられた引数の数だけ処理の繰り返しを行いたい場合はfor文を使用する。for文はinの後に続く引数を変数に代入しながら doとdoneの間に記述されたコマンドを繰り返し実行する。そしてinの後の引数がなくなり次第ループから抜ける。 | 与えられた引数の数だけ処理の繰り返しを行いたい場合はfor文を使用する。for文はinの後に続く引数を変数に代入しながら doとdoneの間に記述されたコマンドを繰り返し実行する。そしてinの後の引数がなくなり次第ループから抜ける。 | ||
- | <code bash> | + | <code bash> |
for filename in output*.dat | for filename in output*.dat | ||
do | do | ||
... | ... | ||
done | done | ||
- | </code> | + | </code> |
変数の一部を削りたい場合,以下のパターンマッチを用いる. | 変数の一部を削りたい場合,以下のパターンマッチを用いる. | ||
<code bash> | <code bash> | ||
ライン 54: | ライン 64: | ||
</code> | </code> | ||
一番上の例では変数"filename"から"output"と".dat"を削っている. | 一番上の例では変数"filename"から"output"と".dat"を削っている. | ||
+ | |||
<code bash> | <code bash> | ||
## output11.dat -> 11 ##### | ## output11.dat -> 11 ##### | ||
ライン 59: | ライン 70: | ||
newname=${newname%.dat} | newname=${newname%.dat} | ||
</code> | </code> | ||
+ | |||
以下のように囲むことによって,シェルの中でgnuplotを動かせる.末尾のGNUは必ず行頭に置かなければならない. | 以下のように囲むことによって,シェルの中でgnuplotを動かせる.末尾のGNUは必ず行頭に置かなければならない. | ||
+ | |||
<code bash> | <code bash> | ||
gnuplot <<GNU | gnuplot <<GNU | ||
ライン 66: | ライン 79: | ||
</code> | </code> | ||
また,動画をつくる際,グラフの範囲を指定して置く. | また,動画をつくる際,グラフの範囲を指定して置く. | ||
+ | |||
===== convertコマンドのオプション ===== | ===== convertコマンドのオプション ===== | ||
"-delay"オプションは次の絵を表示するための待ち時間で、単位は1/100秒。アニメーションをループさせたい場合は "-loop 回数" をconvertの引数に指定する。繰り返しの場合は回数を0とする. | "-delay"オプションは次の絵を表示するための待ち時間で、単位は1/100秒。アニメーションをループさせたい場合は "-loop 回数" をconvertの引数に指定する。繰り返しの場合は回数を0とする. | ||
ライン 71: | ライン 85: | ||
# make movefile #### | # make movefile #### | ||
convert -delay 10 -loop 0 gif/*.gif movie.gif | convert -delay 10 -loop 0 gif/*.gif movie.gif | ||
+ | </code> | ||
+ | ===== gifsicle ===== | ||
+ | gifファイルからgifアニメを作成 | ||
+ | 使い方はこんな感じ.convertと似てる. | ||
+ | <code bash> | ||
+ | gifsicle --delay 50 --loopcount 100 hoge*gif > anime.gif | ||
</code> | </code> | ||
+ | ===== gifview ===== | ||
+ | gifアニメを見るにはgifview.gifsicleをインストールする必要あり. | ||
+ | <code bash> | ||
+ | gifview -a anim.gif | ||
+ | </code> |