2021/08/28(土) [n年前の日記]
#1 [povray] POV-Rayで背景を透明にする方法が分からない
せっかくだから POV-Ray 3.7 を使って、STG(シューティングゲーム)の雑魚敵として使えそうな画像素材を作ってみようと思い立ったのだけど。
形状自体はそれっぽいモノができたけれど…。
![ufo_sample_bgoff.png](img/_2021/20210828_povray_ufo/ufo_sample_bgoff.png)
見た目をそれらしくするために、ボディに背景の映り込みが欲しい。
試しに背景 (GALAXY.INC)を表示してみたけれど、ここで悩んでしまった。
![ufo_sample_bgon.png](img/_2021/20210828_povray_ufo/ufo_sample_bgon.png)
背景が映り込むと、それだけでも結構イイ感じになる。ただ、画像素材として利用するなら、背景部分が透明になっているほうが ―― アルファチャンネルを持っているレンダリング画像のほうがありがたい。
でも、POV-Ray で、オブジェクトの表面に対して背景の映り込みは許可しつつ、しかし背景は非表示にした状態でレンダリング、などという器用な設定はできるのだろうか?
ググってみても、それらしい情報に遭遇しない。どうやら機能として持ってない気がする…。仮にそうだとしても、それはまあ、当たり前なのかもしれない。
例えば動画相当を作成する場合などは、アレコレ部分的にレンダリングしておいて、最終的に別のツールで合成して仕上げたりできれば、レンダリングの計算時間を短縮することができたりして便利だったりするのだけど…。POV-Ray は、あくまで一枚の静止画としてのCG画像を得るために作られたレンダラーであろうから、「背景まで含めてレンダリングするのは当たり前じゃい」「POV-Rayというレンダラーで全てを完結させるのじゃよ」みたいな考えがあってもおかしくないよなと…。
形状自体はそれっぽいモノができたけれど…。
![ufo_sample_bgoff.png](img/_2021/20210828_povray_ufo/ufo_sample_bgoff.png)
見た目をそれらしくするために、ボディに背景の映り込みが欲しい。
試しに背景 (GALAXY.INC)を表示してみたけれど、ここで悩んでしまった。
![ufo_sample_bgon.png](img/_2021/20210828_povray_ufo/ufo_sample_bgon.png)
背景が映り込むと、それだけでも結構イイ感じになる。ただ、画像素材として利用するなら、背景部分が透明になっているほうが ―― アルファチャンネルを持っているレンダリング画像のほうがありがたい。
でも、POV-Ray で、オブジェクトの表面に対して背景の映り込みは許可しつつ、しかし背景は非表示にした状態でレンダリング、などという器用な設定はできるのだろうか?
ググってみても、それらしい情報に遭遇しない。どうやら機能として持ってない気がする…。仮にそうだとしても、それはまあ、当たり前なのかもしれない。
例えば動画相当を作成する場合などは、アレコレ部分的にレンダリングしておいて、最終的に別のツールで合成して仕上げたりできれば、レンダリングの計算時間を短縮することができたりして便利だったりするのだけど…。POV-Ray は、あくまで一枚の静止画としてのCG画像を得るために作られたレンダラーであろうから、「背景まで含めてレンダリングするのは当たり前じゃい」「POV-Rayというレンダラーで全てを完結させるのじゃよ」みたいな考えがあってもおかしくないよなと…。
◎ 対策を考える。 :
背景を透明にしてアルファチャンネル付き画像を得るためには、コマンドラインオプションで +UA をつければよい、という情報を見かけた。POV-Ray 3.7 エディタの場合、ツールバーの下のあたりに、レンダリング時のコマンドラインオプションを指定する入力欄があるので、そこに「+UA」と打ち込んでから「Run」すればいい。
![commandlineoption_ss01.png](img/_2021/20210828_povray_ufo/commandlineoption_ss01.png)
![ufo_sample_alpha.png](img/_2021/20210828_povray_ufo/ufo_sample_alpha.png)
たしかに背景が指定されてない場合は、背景が透明/アルファチャンネル付き画像としてレンダリングできた。
ただ、残念ながら、背景を指定してしまうと、背景は透明にならず、アルファチャンネル付き画像も得られない…。
でもまあ、背景を指定しなければアルファチャンネルが得られるなら…。その画像のアルファチャンネルを、別の画像編集ソフトを利用して、背景を表示した画像に適用してやることはできるよなと…。実際、GIMP 2.10.22 で試したら、フツーにできた。
![ufo_sample_bgon_edit.png](img/_2021/20210828_povray_ufo/ufo_sample_bgon_edit.png)
しかし、静止画だけならそうやって凌ぐこともできるだろうけど、動画用に何十枚もレンダリングするとなると、これはちょっと面倒臭い。
背景付きの画像を何十枚もレンダリングして、更に加えて、アルファチャンネル付き画像を何十枚もレンダリング…。単純計算で、トータルの計算時間は2倍になるわな…。
そして、アルファチャンネルだけ抜き出して別画像に適用、なんてことを、何十枚もの画像に対して、画像編集ソフトを使って、手作業で一々やってられない。どう考えても自動化が必要。さて、どうしよう。
「お〜い!磯野〜! blender使おうぜ!」
誰だよ。…まあ、たしかにblenderなら、背景にHDRIを指定してGI? IBL? まで使った上で背景はレンダリングしない設定にしちゃえばすんなり目的が果たせるので、POV-Rayなんか窓から投げ捨てられそうだけど。blenderは動画作成まで念頭に置いて作られてる3DCG統合ソフトだから、さすがにそのあたり抜かりないというか…。
![commandlineoption_ss01.png](img/_2021/20210828_povray_ufo/commandlineoption_ss01.png)
![ufo_sample_alpha.png](img/_2021/20210828_povray_ufo/ufo_sample_alpha.png)
たしかに背景が指定されてない場合は、背景が透明/アルファチャンネル付き画像としてレンダリングできた。
ただ、残念ながら、背景を指定してしまうと、背景は透明にならず、アルファチャンネル付き画像も得られない…。
でもまあ、背景を指定しなければアルファチャンネルが得られるなら…。その画像のアルファチャンネルを、別の画像編集ソフトを利用して、背景を表示した画像に適用してやることはできるよなと…。実際、GIMP 2.10.22 で試したら、フツーにできた。
![ufo_sample_bgon_edit.png](img/_2021/20210828_povray_ufo/ufo_sample_bgon_edit.png)
しかし、静止画だけならそうやって凌ぐこともできるだろうけど、動画用に何十枚もレンダリングするとなると、これはちょっと面倒臭い。
背景付きの画像を何十枚もレンダリングして、更に加えて、アルファチャンネル付き画像を何十枚もレンダリング…。単純計算で、トータルの計算時間は2倍になるわな…。
そして、アルファチャンネルだけ抜き出して別画像に適用、なんてことを、何十枚もの画像に対して、画像編集ソフトを使って、手作業で一々やってられない。どう考えても自動化が必要。さて、どうしよう。
「お〜い!磯野〜! blender使おうぜ!」
誰だよ。…まあ、たしかにblenderなら、背景にHDRIを指定してGI? IBL? まで使った上で背景はレンダリングしない設定にしちゃえばすんなり目的が果たせるので、POV-Rayなんか窓から投げ捨てられそうだけど。blenderは動画作成まで念頭に置いて作られてる3DCG統合ソフトだから、さすがにそのあたり抜かりないというか…。
[ ツッコむ ]
以上です。