2003/03/09(日) [n年前の日記]
#3 [digital] αチャンネル付連番png変換
手持ちのツールのみで透過光らしき表現を得ようとして悩む。
作業の流れとしては、
実現方法はいくつか思いつく。検討、あるいは実際に試してみた。
FLASH4の半透明処理において、Photoshop等に見られる「乗算」「スクリーン」等多数の合成モードをサポートしていない点も透過光的表現に関しては致命的。あくまで想像だが、透過光表現の合成時に最低限求められるのは、「ドットのRGB値を加算し、255をオーバーしたら255にする」といった合成処理…おそらくPhotoshopでいう「スクリーン」に相当する合成処理ではないだろうか。(「スクリーン」が実際にそういう処理かどうかは知らない。) しかし、FLASH4の半透明処理はそういった合成方法ではない。ベースとなるRGB値と重ねるRGB値の割合を調整して半透明を実現しているように見受けられる。となると、色味が濁る部分・グレー色が画面に出てしまい、結果としては汚い画像しか得られないのではないか。もっとも、フィルタ処理を適用したαチャンネル付連番pngを得る事は、透過光表現に限らず、FLASH4上での表現力は増すはずではある。
ImageMagicKのcompositeを利用してオプション「-compose Plus」を付加して実験したところ、ベースとなるpngに対し、透過光的表現を付加した別のpngを「スクリーン」的に合成することが可能であった。つまり、FLASH4で実現できない多様な合成モードについては、素材毎に連番png出力し、compositeを利用することで、どうにか解消できる可能性があるように思える。ただ、compositeはコマンドラインから利用するツールであり、なおかつ複数ファイルをワイルドカード等で一気に与える事はできない。かといって一々各ファイルの合成指示をキーボードから打っていくのは非効率。BATファイル、Perl、WSH等スクリプトを作成して自動化を図らない限り、それら合成作業は現実的ではない。また、αチャンネルを利用した合成が可能であるか現時点では把握できていない。もし出来ないとすれば万能とまでは言えず、場合によっては使える、程度の扱いが望ましい。
ImageMagicKのmogrifyを利用してαチャンネル付連番pngに対しぼかし処理を試してみたところ、αチャンネル情報は破棄されずに維持されていた。つまり、ImagicMagicKのユーティリティ群に用意されたフィルタ機能で済む処理内容であれば、PhotoshopやGimpを介さず、ImageMagicKのみの利用で作業は完了する。しかし、ImageMagicKが内包するフィルタ数は多くはない。よって、おそらく目的を果たせない場面が多々あるだろうと予想する。(それでもフリーで利用できるこの手のツールにしてはフィルタ数は多いほうなのだろう。) また、αチャンネルについてもフィルタ処理が適用されていたかまでは確認できず、フィルタ処理により得られる品質についても確認できていない。検証が必要。
Gimpの連番png保存についてネットで情報を探してみたが、各レイヤーを連番png保存できるスクリプトが公開されていた。これが利用できれば問題解決である。しかし残念ながら、導入して実行してみるも、保存されたpngはαチャンネル情報を残してはいるが、なぜか多数のノイズが載っていて使いものにならない。また、動作させる度に、違う色・違う場所にノイズが出る。原因を考える。
また、Windows版はGtk実装状態の関係上タブレット利用も制限されている。Script-fuの件と言い、タブレットの件と言い、Windows上で無理にGimpを使うのではなく、メインPCにLinuxもインストールして、そちらで各種作業を実験してみた方が良いのかもしれない。Linuxであれば、Win版は開発中止になったVideomaidも開発続行しているし、FilmGimp(CinePaint)という動画に特化したらしきGimpも存在する。また、Gimp自身でavi保存が可能であるかもしれない。(GimpのマニュアルにはaviのRead/Writeが可能と書かれているが、今現在利用している日本語Win版Gimpにおいてはavi保存の仕方が未だにわからない。もしかするとWin版はavi保存について未サポートなのかもしれない。) などを考慮すると、フリーソフトを用いたavi編集作業においては、Linux導入によりメリットが得られる可能性は高いかもしれない。
(2003/03/16追記:
ゴミが出る原因が判った。やはり初期化していない事が原因らしい。
(gimp-drawable-fill tmp-layer TRANS-IMAGE-FILL)
を、
(gimp-image-add-layer tmp-img tmp-layer 0)
の直前に入れたところゴミが出なくなった。
(gimp-selection-all tmp-img)
(gimp-edit-clear tmp-layer)
(gimp-selection-none tmp-img)
も試してみたが、こちらは症状変わらず。)
AfterEffectsがあればこんな苦労はしなくて済むのだろう。所有していないし触った事もないので実態は知らないが、おそらく一瞬で同様の作業は終わり、表現出来る事も多いに違いない。しかし、Standard版でも10万円というのはやはり高すぎる。手が出せない。PhotoshopやPremiereのようにLEやElementsが発売されないものだろうか。もっとも、発売されても今の自分には購入できないのだが。
色々試してはいるものの、やはり現状では、「PCを利用した個人によるアニメ制作=金持ち、あるいは犯罪者しか実行に移せない」状態であるように思う。自分も、PhotoshopやFLASH4を所有していたから実験してみようという気持ちになったが、もし所有してなければ到底手を出そうという気持ちにすらならなかっただろう。8mmカメラをPCで自動制御してた頃に比べれば状況は良くなったのだろうが、もう少しなんとかならないものだろうか。アニメ制作の垣根が低くなり、それら作業に触れる人が増えれば、才能を持った人間が登場する可能性も今以上に期待できるのではないか。
もっとも企業からみれば、それらソフトの価格は得られる機能に対し比較的安価に設定しているつもりであろうし、普及といってもソフトの性質上、爆発的な利用者数増加は期待できないであろうから、専門家用のソフトとして個人から見れば高値になるのは致し方ないのかもしれない。
むしろ個人的には、AfterEffectsよりFLASHの価格設定のほうが疑問だ。Macromediaは「FLASH classic」的ラインナップ=機能制限を加えた廉価版を市場に投入してもいい時期だと思う。FLASHはアマチュアの動画制作作業を根底から変える可能性がある。小学生にすら気軽に動画を作れてしまうツールが普及する事は、映像文化をも変えてしまう可能性を秘めているようにも思える。それら変化が価格という要因によって阻害されているなら惜しいことだと思うのだが。
作業の流れとしては、
- FLASH4で透過光用マスクの動画を作成。αチャンネル付連番pngで書き出し。
- Photoshop、あるいは、Gimp for Win32で連番pngに対しフィルタ処理適用。αチャンネル情報を持たせたまま連番pngで保存。
- FLASH4でαチャンネル付連番pngを読み込み。フレームに配置。
実現方法はいくつか思いつく。検討、あるいは実際に試してみた。
- Photoshopのアクションを利用する。 → ループ実行毎に変化するフィルタパラメータを与える方法がわからず。実験するまでもなく挫折。
- Gimpであれば、連番ファイルを動画フレームとして扱い、各フレームを1ファイル中の複数レイヤーへ配置、更に全レイヤーに対しフィルタパラメータを変化させつつ適用可能。それら機能を利用する。 → 結果を連番xcf(.xcf=Gimpの画像ファイルフォーマット)で保存することは可能だが、連番png保存は出来なかった。
- Gimpで保存した連番xcfを、別の変換ツールでαチャンネル付連番pngとして保存。 → ImageMagicKを導入し試してみるも、αチャンネル情報消失。xcf→psd変換してみるもPhotoshop 5.0では読めないpsdが出力された。Windowsにおいては、xcfが変換可能なツールの存在を期待できない点も痛い。CGの世界では、xcfはある種存在しないものとして扱われている。ImageMagicKですらReadのみ対応・Write非対応であることからも扱われ方が判る。
- Gimpで、複数レイヤーを持ったpsdとして保存し、「ぜんまいはうす」が公開している「psdを読み込んで各レイヤーをavi出力するツール」でαチャンネル付aviとして出力。 → 案の定、αチャンネル付aviとしては出力できず。αチャンネル情報は失われる。αチャンネル付aviとして出力できれば、もしかするとFLASH4で読み込み可能かもしれないし、そうではなくてもαチャンネル付avi→αチャンネル付連番pngとして保存できるツールが存在するかもしれないと思ったが。
FLASH4の半透明処理において、Photoshop等に見られる「乗算」「スクリーン」等多数の合成モードをサポートしていない点も透過光的表現に関しては致命的。あくまで想像だが、透過光表現の合成時に最低限求められるのは、「ドットのRGB値を加算し、255をオーバーしたら255にする」といった合成処理…おそらくPhotoshopでいう「スクリーン」に相当する合成処理ではないだろうか。(「スクリーン」が実際にそういう処理かどうかは知らない。) しかし、FLASH4の半透明処理はそういった合成方法ではない。ベースとなるRGB値と重ねるRGB値の割合を調整して半透明を実現しているように見受けられる。となると、色味が濁る部分・グレー色が画面に出てしまい、結果としては汚い画像しか得られないのではないか。もっとも、フィルタ処理を適用したαチャンネル付連番pngを得る事は、透過光表現に限らず、FLASH4上での表現力は増すはずではある。
ImageMagicKのcompositeを利用してオプション「-compose Plus」を付加して実験したところ、ベースとなるpngに対し、透過光的表現を付加した別のpngを「スクリーン」的に合成することが可能であった。つまり、FLASH4で実現できない多様な合成モードについては、素材毎に連番png出力し、compositeを利用することで、どうにか解消できる可能性があるように思える。ただ、compositeはコマンドラインから利用するツールであり、なおかつ複数ファイルをワイルドカード等で一気に与える事はできない。かといって一々各ファイルの合成指示をキーボードから打っていくのは非効率。BATファイル、Perl、WSH等スクリプトを作成して自動化を図らない限り、それら合成作業は現実的ではない。また、αチャンネルを利用した合成が可能であるか現時点では把握できていない。もし出来ないとすれば万能とまでは言えず、場合によっては使える、程度の扱いが望ましい。
ImageMagicKのmogrifyを利用してαチャンネル付連番pngに対しぼかし処理を試してみたところ、αチャンネル情報は破棄されずに維持されていた。つまり、ImagicMagicKのユーティリティ群に用意されたフィルタ機能で済む処理内容であれば、PhotoshopやGimpを介さず、ImageMagicKのみの利用で作業は完了する。しかし、ImageMagicKが内包するフィルタ数は多くはない。よって、おそらく目的を果たせない場面が多々あるだろうと予想する。(それでもフリーで利用できるこの手のツールにしてはフィルタ数は多いほうなのだろう。) また、αチャンネルについてもフィルタ処理が適用されていたかまでは確認できず、フィルタ処理により得られる品質についても確認できていない。検証が必要。
Gimpの連番png保存についてネットで情報を探してみたが、各レイヤーを連番png保存できるスクリプトが公開されていた。これが利用できれば問題解決である。しかし残念ながら、導入して実行してみるも、保存されたpngはαチャンネル情報を残してはいるが、なぜか多数のノイズが載っていて使いものにならない。また、動作させる度に、違う色・違う場所にノイズが出る。原因を考える。
- メモリ異常? → Memtest86v3.0でチェックするも問題は無かった。
- Gimp動作時に共に動いている常駐アプリの仕業? → それらを停止してみるも症状変わらず。
- ビデオカード(G400)の問題? → G400のバスマスタ転送等、関連性がありそうな設定をoffにしてみるも変化無し。
- テンポラリ画像・テンポラリレイヤーを生成する段階で内容の初期化を行って無い故にゴミが残ったまま処理が行われる。
- レイヤーをコピー・貼り付けする段階で不確定なドット情報がなぜか付加されてしまう。
- レイヤーのαチャンネル関係処理で1,2のような不具合がある。もしくはαチャンネルについては別種の処理が必要となる。
また、Windows版はGtk実装状態の関係上タブレット利用も制限されている。Script-fuの件と言い、タブレットの件と言い、Windows上で無理にGimpを使うのではなく、メインPCにLinuxもインストールして、そちらで各種作業を実験してみた方が良いのかもしれない。Linuxであれば、Win版は開発中止になったVideomaidも開発続行しているし、FilmGimp(CinePaint)という動画に特化したらしきGimpも存在する。また、Gimp自身でavi保存が可能であるかもしれない。(GimpのマニュアルにはaviのRead/Writeが可能と書かれているが、今現在利用している日本語Win版Gimpにおいてはavi保存の仕方が未だにわからない。もしかするとWin版はavi保存について未サポートなのかもしれない。) などを考慮すると、フリーソフトを用いたavi編集作業においては、Linux導入によりメリットが得られる可能性は高いかもしれない。
(2003/03/16追記:
ゴミが出る原因が判った。やはり初期化していない事が原因らしい。
(gimp-drawable-fill tmp-layer TRANS-IMAGE-FILL)
を、
(gimp-image-add-layer tmp-img tmp-layer 0)
の直前に入れたところゴミが出なくなった。
(gimp-selection-all tmp-img)
(gimp-edit-clear tmp-layer)
(gimp-selection-none tmp-img)
も試してみたが、こちらは症状変わらず。)
AfterEffectsがあればこんな苦労はしなくて済むのだろう。所有していないし触った事もないので実態は知らないが、おそらく一瞬で同様の作業は終わり、表現出来る事も多いに違いない。しかし、Standard版でも10万円というのはやはり高すぎる。手が出せない。PhotoshopやPremiereのようにLEやElementsが発売されないものだろうか。もっとも、発売されても今の自分には購入できないのだが。
色々試してはいるものの、やはり現状では、「PCを利用した個人によるアニメ制作=金持ち、あるいは犯罪者しか実行に移せない」状態であるように思う。自分も、PhotoshopやFLASH4を所有していたから実験してみようという気持ちになったが、もし所有してなければ到底手を出そうという気持ちにすらならなかっただろう。8mmカメラをPCで自動制御してた頃に比べれば状況は良くなったのだろうが、もう少しなんとかならないものだろうか。アニメ制作の垣根が低くなり、それら作業に触れる人が増えれば、才能を持った人間が登場する可能性も今以上に期待できるのではないか。
もっとも企業からみれば、それらソフトの価格は得られる機能に対し比較的安価に設定しているつもりであろうし、普及といってもソフトの性質上、爆発的な利用者数増加は期待できないであろうから、専門家用のソフトとして個人から見れば高値になるのは致し方ないのかもしれない。
むしろ個人的には、AfterEffectsよりFLASHの価格設定のほうが疑問だ。Macromediaは「FLASH classic」的ラインナップ=機能制限を加えた廉価版を市場に投入してもいい時期だと思う。FLASHはアマチュアの動画制作作業を根底から変える可能性がある。小学生にすら気軽に動画を作れてしまうツールが普及する事は、映像文化をも変えてしまう可能性を秘めているようにも思える。それら変化が価格という要因によって阻害されているなら惜しいことだと思うのだが。
[ ツッコむ ]
以上です。