2014/02/05(水) [n年前の日記]
#3 [cg_tools][unity][dxruby] ループする火の玉画像を作成
GIMP + GAP でどうにかできないかとアレコレ試してたけど。結局、ImageMagick でなんとかしてしまったり。
案としては、ループしてない連番画像のうち、最後の数フレームを、最初の数フレームに、割合を変えながら合成したら、ループしてるように見えないかなと。
とりあえず、ループしてない元画像はこんな感じ。20フレーム。
最後のフレームから最初のフレームに変わる際に、「ガクッ」となってる。
これを、最後の4フレーム分だけ、最初の4フレームに合成して、16フレームにした。結果はこんな感じ。
違いが分かる…かなあ…。どうなんだろう。それなりに改善できたように思っているのだけど。
合成には、以下のようなbatファイルを書いた。実験用なので、べた書きだけど。
_comp.bat
最初は、合成する際の2つの画像を、合成する際の割合? アルファ値?を、20:80 とか 40:60 等にして試したのだけど。それだと、合成してるフレームだけ、全体的に半透明になってしまって、よろしくなくて。なので、片方を下地画像として、その上にもう片方の画像をうっすら載せていく、てな感じの合成をしてみたところ、合成してるフレームも不透明度が維持できたように見えた。ただ、元々半透明だったところが濃くなったりもして、完璧な結果が得られたわけでもなく。
ImageMagick (composite) に与えるパラメータについては、 _Compose -- IM v6 Examples - Dissolve One Image Over Another を参考にした。もしかして、dissolve じゃなくて、blend を与えたほうがいいのだろうか。
案としては、ループしてない連番画像のうち、最後の数フレームを、最初の数フレームに、割合を変えながら合成したら、ループしてるように見えないかなと。
とりあえず、ループしてない元画像はこんな感じ。20フレーム。
これを、最後の4フレーム分だけ、最初の4フレームに合成して、16フレームにした。結果はこんな感じ。
合成には、以下のようなbatファイルを書いた。実験用なので、べた書きだけど。
_comp.bat
@echo off rem ImageMagickを使って、ループしてない連番画像をループアニメにしてみる rem ImageMagickのフォルダパスを指定 set IMPATH=C:\Prog\ImageMagick-6.8.7-Q16 rem 元画像フォルダ set SRC=src rem 出力フォルダ set DST=dst rem 連番画像の終わりの方を、最初のほうに合成する @echo on %IMPATH%\composite -dissolve 30 %SRC%\0001.png %SRC%\0017.png -alpha Set %DST%\0001.png %IMPATH%\composite -dissolve 60 %SRC%\0002.png %SRC%\0018.png -alpha Set %DST%\0002.png %IMPATH%\composite -dissolve 60 %SRC%\0019.png %SRC%\0003.png -alpha Set %DST%\0003.png %IMPATH%\composite -dissolve 30 %SRC%\0020.png %SRC%\0004.png -alpha Set %DST%\0004.png @echo off copy /Y %SRC%\0005.png %DST% copy /Y %SRC%\0006.png %DST% copy /Y %SRC%\0007.png %DST% copy /Y %SRC%\0008.png %DST% copy /Y %SRC%\0009.png %DST% copy /Y %SRC%\0010.png %DST% copy /Y %SRC%\0011.png %DST% copy /Y %SRC%\0012.png %DST% copy /Y %SRC%\0013.png %DST% copy /Y %SRC%\0014.png %DST% copy /Y %SRC%\0015.png %DST% copy /Y %SRC%\0016.png %DST% :ENDsrc\ 以下に元画像20フレーム分の連番画像を入れといて、dst\ 以下に出力する、みたいな。
最初は、合成する際の2つの画像を、合成する際の割合? アルファ値?を、20:80 とか 40:60 等にして試したのだけど。それだと、合成してるフレームだけ、全体的に半透明になってしまって、よろしくなくて。なので、片方を下地画像として、その上にもう片方の画像をうっすら載せていく、てな感じの合成をしてみたところ、合成してるフレームも不透明度が維持できたように見えた。ただ、元々半透明だったところが濃くなったりもして、完璧な結果が得られたわけでもなく。
ImageMagick (composite) に与えるパラメータについては、 _Compose -- IM v6 Examples - Dissolve One Image Over Another を参考にした。もしかして、dissolve じゃなくて、blend を与えたほうがいいのだろうか。
◎ 成果物を置いときます。 :
[ ツッコむ ]
以上です。