2014/02/05(水) [n年前の日記]
#2 [cg_tools] GIMP 2.6 + GAPで火の玉のループアニメを作ろうとして四苦八苦
GAP(Gimp Animation Package)の使い方を完全に忘れてる…。とりあえず、Windows7 + GIMP 2.6 + GAP で作業。
火の玉画像は、 _Prominence で作成。連番pngで書き出した。このままではループアニメになってないので、ループアニメにするために、何か手を加えないといけない。
GIMP上での、ショートカットキーの割り当て方は以下の通り。
火の玉画像は、 _Prominence で作成。連番pngで書き出した。このままではループアニメになってないので、ループアニメにするために、何か手を加えないといけない。
◎ GAPで連番pngを扱う前準備について。 :
GIMP + GAPを使って、連番pngを、連番xcfにして保存する手順をメモ。もっと簡単な手順があるかもしれないけど、今現在分かってるやり方は、このくらい。
- ファイル → 開く → 連番pngの一番最初の画像を開く。
- ファイル → レイヤーとして開く → 残りの連番png画像を全て開く。各連番pngが、レイヤーになっている画像ができる。(膨大なレイヤー数になる…)
- frame.xcf として保存。
- Video → Split Image to Frames を選ぶ。連番xcfとして、frame_*.xcf が保存できる。保存先フォルダは、先ほど frame.xcf を保存した場所が勝手に設定されてしまう模様。
- frame_*.xcf ができたら、frame.xcf は閉じていい。後は、frame_*.xcf に対して作業をしていく。
◎ 頻繁に使うコマンドについて。 :
- Video → Go To → Next Frame で、次のフレームに移動できる。(frame_000001.xcf を開いていたら、frame_000002.xcf が開かれる)
- Video → Go To → Previous Frame で、前のフレームに移動できる。(frame_000002.xcf を開いていたら、frame_000001.xcf が開かれる)
GIMP上での、ショートカットキーの割り当て方は以下の通り。
- 編集 → 環境設定 → ユーザーインターフェイス → 「動的なキーボードショートカットを使用」「終了時にキーボードショートカットを保存」にチェックを入れておく。各メニューを表示、かつ、項目にマウスカーソルを合わせた状態でキーを押すと、その項目に対して、そのキーが、ショートカットキーとして割り当てられるようになる。
- あるいは、編集 → キーボードショートカット、でも割り当てができる。検索欄に、目的の機能に関係ありそうな単語を打ち込めば、リストの絞り込みをしてくれる。ただ、時々、似たような名前の関係ない機能に間違って割り当ててしまうことがあったので、個人的にはこっちはあまり使ってなかったり。
◎ ちと上手く行かない点が。 :
前後のフレームに移動しながら、レイヤーを追加したり、編集等をして。最後に動画なり、連番画像として保存したいわけだけど。ここが上手く行かない…。各フレーム ―― frame_*.xcf が複数レイヤーを持っている状態で、フレーム→レイヤー変換をしたら、GIMPが固まってしまった。
一応、Video → Frames Flatten を選べば、全フレームに対して、全レイヤーを画像統合してくれる。この状態なら ―― 各フレームが、レイヤーを1つしか含まない状態なら、Video → Frames to Image で、フレーム→レイヤー変換ができるのだけど。
しかし、Frames Flatten を選んだ時点で、各フレームのアルファチャンネルが無くなってしまって、背景色でベタ塗りされた状態になってしまう。ゲーム用の画像を作りたい場合、コレはちょっと困るわけで。
仕方ないので、複数レイヤーがあるフレームは、手作業で「可視レイヤーの統合」をしていったけど…。どう考えてもこのあたり、自動化できそうな気がする。
ちなみに、GIMPを使って、全レイヤーを連番画像として保存するには、 _continuous-save が使える、はず。ありがたや。
_Layer Export GIMP Script - Uzebox で、sg-save-all-layers.scm なるスクリプトも紹介されてた。英語圏ではこっちのほうが知られてるっぽい? スクリプト名が分かりやすいのかしら…。
一応、Video → Frames Flatten を選べば、全フレームに対して、全レイヤーを画像統合してくれる。この状態なら ―― 各フレームが、レイヤーを1つしか含まない状態なら、Video → Frames to Image で、フレーム→レイヤー変換ができるのだけど。
しかし、Frames Flatten を選んだ時点で、各フレームのアルファチャンネルが無くなってしまって、背景色でベタ塗りされた状態になってしまう。ゲーム用の画像を作りたい場合、コレはちょっと困るわけで。
仕方ないので、複数レイヤーがあるフレームは、手作業で「可視レイヤーの統合」をしていったけど…。どう考えてもこのあたり、自動化できそうな気がする。
ちなみに、GIMPを使って、全レイヤーを連番画像として保存するには、 _continuous-save が使える、はず。ありがたや。
_Layer Export GIMP Script - Uzebox で、sg-save-all-layers.scm なるスクリプトも紹介されてた。英語圏ではこっちのほうが知られてるっぽい? スクリプト名が分かりやすいのかしら…。
◎ GAPの他の操作についてメモ。 :
昔は、GAPのメニューを日本語にしてくれるファイルがあったような記憶もあるのだけど…。
ちなみに、GAPのコマンドはUndoがほとんど効かない・元に戻すことができないので、何かクリティカルな変更をする場合は、frame_*.xcf をバックアップしてから行うべし。
もしかして、Frames Modify 使って、可視レイヤー統合もできるのかな? 試してみたら、できたっぽい。Function → Merge Layers → どれかしらを選んで、Layer Selection は All visible を選択。
Frames Convert を使えば、フレームを連番pngで保存できる。拡張子に「.png」を入力して、Flatten のチェックを外せば、アルファチャンネルを残したまま連番pngになった。ただし、各フレームが複数レイヤーを含んでいると、1枚保存するたびに「可視レイヤー統合するか、画像統合するか?」と尋ねてくるので鬱陶しい、というか面倒臭い。100フレームあったら、100回尋ねてくる予感。
メニュー項目(Video → xxxx) | 処理内容 |
---|---|
Split Image to Frames | 一つの画像(多数のレイヤーを含む)を、多数のフレーム(frame_*.xcf)にする。 |
Frames to Image | 多数のフレーム(frame_*.xcf)を、一つの画像(多数のレイヤーを含む)にする。 |
VCR Navigator | 動画テスト再生。開いたウインドウの下のほうにある再生ボタンをクリックすれば再生確認ができる。ただし、デフォルトではサムネイル画像を使って再生するので画像が荒い。チェックボックスにチェックを入れれば、フルサイズ画像で再生もできるけど、めっちゃ重い。 |
Delete Frames | 現在開いているフレームから、指定フレームまで、フレームを削除する。 |
Duplicate Frames | フレームを増やす・複製する。何も描いてないフレームを用意してから、そのフレームを複製すれば、好きなだけフレームが作れる。 |
Frames Layer Delete | 指定範囲のフレームに対して、特定レイヤーだけを削除する。 |
Frames Flatten | 指定範囲のフレームに対して「画像統合」をする。アルファチャンネルが無くなって、透明部分は背景色になる。 |
Frames Modify | 指定範囲のフレームに対して、レイヤーマスクをつけたり、選択範囲をアレしたり…色々できるっぽい。Functionボタンをクリックして処理を選べる。 |
Frames Convert | フレーム(連番xcf)を、別フォーマットの連番画像で保存。 |
Split Video into Frames | 動画ファイル(.mpg等)を読み込み。 |
もしかして、Frames Modify 使って、可視レイヤー統合もできるのかな? 試してみたら、できたっぽい。Function → Merge Layers → どれかしらを選んで、Layer Selection は All visible を選択。
Frames Convert を使えば、フレームを連番pngで保存できる。拡張子に「.png」を入力して、Flatten のチェックを外せば、アルファチャンネルを残したまま連番pngになった。ただし、各フレームが複数レイヤーを含んでいると、1枚保存するたびに「可視レイヤー統合するか、画像統合するか?」と尋ねてくるので鬱陶しい、というか面倒臭い。100フレームあったら、100回尋ねてくる予感。
◎ GAPで動画ファイルの読み込み。 :
_How to use Gimp Gap (Gimp Animation Package) - YouTube
を眺めると、動画ファイルをいきなり読み込んで、GIFアニメに変換するところまで、GIMP + GAPだけで実現できているらしい。Video → Split Video into Frames → Extract Videorange を選ぶ模様。
試してみたら、巨大なファイルサイズのaviは無理だったけど(動画の解析ができない)、数MBのaviなら、たしかに読み込めた。
まあ、動画からGIFアニメに変換したいなら、専用ソフト使ったほうが速いでしょうけど。それでも一応、GIMP + GAP で、動画をいきなり読むことも(状況によっては)可能と分かったから良し。
試してみたら、巨大なファイルサイズのaviは無理だったけど(動画の解析ができない)、数MBのaviなら、たしかに読み込めた。
まあ、動画からGIFアニメに変換したいなら、専用ソフト使ったほうが速いでしょうけど。それでも一応、GIMP + GAP で、動画をいきなり読むことも(状況によっては)可能と分かったから良し。
◎ 簡単なデータで試したらGIMPがフリーズしなかった。 :
Frames to Image のオプション指定を変えたら GIMPが固まらずに済むのかな、と気になったので、簡単なデータを作って試してみたのだけど。複数のレイヤーがあっても、固まらずに処理が終わった。どうやら、必ず固まるというわけではなくて、固まる場合と固まらない場合・何か不具合が起きる条件があるらしい。
[ ツッコむ ]
以上です。