2021/08/24(火) [n年前の日記]
#1 [blender][povray] blenderからPOV-Rayを呼んでレンダリングできるか試してみた
POV-Ray関係の情報を調べていたら、対応3DCGソフトとして blender の名前が挙がっている場面を何度か目にしたわけで。一体どれほど対応しているものなのか気になったので、そのあたりを少し調べてみた。
環境は、Windows10 x64 21H1 + blender 2.93.2 x64 LTS / 2.79b。POV-Ray 3.7。
環境は、Windows10 x64 21H1 + blender 2.93.2 x64 LTS / 2.79b。POV-Ray 3.7。
◎ blender 2.93.2 x64 LTS の場合。 :
blender 2.93.2 の場合は、標準で POV-Ray用のアドオンが含まれているらしい。まずはアドオンを有効にする。
アドオンの検索欄で「pers」と打ち込めば、「Render: Persistence of Vision」というアドオンがリストアップされる。「Persistence of Vision」って何? 略すると「POV」になる。POV-Ray は、「Persistence of Vision Raytracer」の略なのだな…。さておき、これが POV-Ray用のアドオンなので、チェックを入れて有効にする。
このアドオンが有効になっていれば、blender のレンダラー、Eevee や Cycles と並んで、Persistence Of Vision も選べるようになるので、切り替える。
そのままだと、POV-Ray でレンダリングした後、.povファイルは削除されてしまうし、どこに .pov を作られたのかも分からないままなので…。.pov は消さないように、更に、.pov は .blendファイルがある場所に作るように指定する。
POV-Ray用アドオンが有効になっていて、かつ、レンダラーとして Persistence Of Vision が選ばれている状態なら、シーンに追加できるオブジェクト種類の中に、POV-Ray専用のプリミティブが追加された状態になる。
ここで選んで追加できるオブジェクトはPOV-Ray専用なので、例えば blenderの通常時の編集作業 ―― TABキーを叩いて編集モードに入って頂点位置を変更、といったことはできない。球(Sphere)は、あくまで球。
F12キーを叩けば、POV-Ray でレンダリングされて、レンダリング結果の画像が Blenderレンダーウインドウ内に表示される。
.blendファイルが置いてある場所に、.pov も残っているので、コピーして、テキストファイルとして開いて、編集して、各値を調整していくことができるはず。
アドオンの検索欄で「pers」と打ち込めば、「Render: Persistence of Vision」というアドオンがリストアップされる。「Persistence of Vision」って何? 略すると「POV」になる。POV-Ray は、「Persistence of Vision Raytracer」の略なのだな…。さておき、これが POV-Ray用のアドオンなので、チェックを入れて有効にする。
- Binary Location に、POV-Ray の実行ファイルの場所を指定。Windowsの場合は、pvenegine64.exe や pvengine.exe になるのだと思う。
- Includes Location に、POV-Ray の includes フォルダの場所を指定。Windowsの場合は、(ドキュメントフォルダ)\POV-Ray\v3.7\include\ になると思う。
- レンダリング終了時やエラー時にサウンドファイルを鳴らしたいなら、各 .wav ファイルの場所も指定して、その下の「Use Sound」をクリックして有効にする。
このアドオンが有効になっていれば、blender のレンダラー、Eevee や Cycles と並んで、Persistence Of Vision も選べるようになるので、切り替える。
そのままだと、POV-Ray でレンダリングした後、.povファイルは削除されてしまうし、どこに .pov を作られたのかも分からないままなので…。.pov は消さないように、更に、.pov は .blendファイルがある場所に作るように指定する。
- Auto Start のアイコンをクリックしてOFFにすると、設定できる項目が増える。(グレーアウトが外れる)
- Delete files のチェックを外して、レンダリングが終わっても .pov を削除しないようにする。
- もし、起動した POV-Ray editor を表示したままにしたいなら、POV Editor にチェックを入れる。今回はチェックを入れなかった。
- 名前には .pov ファイル名を指定するけれど、空欄にしておけば、.blend ファイルと同じ名前になる。(例: hoge.blend を開いているなら、hoge.pov で保存される。)
- Path to files には、.povファイルを保存したいフォルダを指定。「//」を指定しておけば、.blend があるフォルダに .pov も保存される。
POV-Ray用アドオンが有効になっていて、かつ、レンダラーとして Persistence Of Vision が選ばれている状態なら、シーンに追加できるオブジェクト種類の中に、POV-Ray専用のプリミティブが追加された状態になる。
ここで選んで追加できるオブジェクトはPOV-Ray専用なので、例えば blenderの通常時の編集作業 ―― TABキーを叩いて編集モードに入って頂点位置を変更、といったことはできない。球(Sphere)は、あくまで球。
F12キーを叩けば、POV-Ray でレンダリングされて、レンダリング結果の画像が Blenderレンダーウインドウ内に表示される。
.blendファイルが置いてある場所に、.pov も残っているので、コピーして、テキストファイルとして開いて、編集して、各値を調整していくことができるはず。
◎ blender 2.79b の場合。 :
blender 2.79b も、同様の流れで POV-Ray を利用できる。
違うのは、アドオン名が「Render: POVRAY-3.7」になっていることと、レンダラー名が「POV-Ray 3.7」になっていること。
違うのは、アドオン名が「Render: POVRAY-3.7」になっていることと、レンダラー名が「POV-Ray 3.7」になっていること。
◎ マテリアル設定。 :
マテリアルの設定でかなり悩んだ。blender で通常利用するマテリアルの設定項目が何一つ反映されなくて…。
以下の動画を眺めたら、blender 2.78 + POV-Ray 3.7 の時点ではマテリアルを、というか POV-Ray で言うところの texture を指定できているようで…。しかし、手元の blender 2.79b + POV-Ray 3.7 で似たような作業をしても反映されない。これはおかしい。
_Blender 2.78 + POV-Ray 3.7 - YouTube
色々試しているうちに分かってきた。
画像を見れば分かるだろうか…。Cube は色が反映されてるけど、PovBox には色が反映されてない。
前述の動画内で利用してるオブジェクトも、おそらく、POV-Ray のプリミティブの PovBox ではなくて、blender の標準的なオブジェクトの Cube だったのだろう…。だから、色の指定がちゃんと反映されてたのだろうなと…。
更に、出力された .pov を眺めて、これまた首を捻ってしまった。POV-Ray の解説ページによると、例えば色を指定する際は、object { } の中で texture だの pigment だのを記述するわけだけど。出力された .pov の object { } 内には、それらしい記述が一切無い。ところが、それらの記述がないのに、レンダリング結果には、ちゃんと色がついている…。何故。どうして。
_povray_test2_blender_object_only.pov
これはもしかすると、.pov フォーマットにおける暗黙のルール、みたいなものを利用しているのでは…? 例えば、宣言名が「MAT_hoge」の場合は、暗黙で「hoge」のマテリアル指定として扱われる、とかそういうルールが実はあったりするのでは…? でも、ググってみてもそれらしいルールが見つからない…。
さておき。POV-Ray用のシーンを blender で作成する際、マテリアル設定だか texture設定については、テキストを直接書いて指定する方法があるようで。前述の動画でやっているのがソレだけど。
まず、テキストビューで POV-Ray用の texture指定を直接書いてしまって…。
blender 2.79b なら、プロパティ → POV-Ray → Source to render で「両方」を選択。これで、記述したテキストが、出力される .pov内にも含まれるようになる。
その上で、オブジェクトのマテリアル設定の Custom POV Code に、先ほどテキストで記述した際の設定名を追記する。
こういう指定方法なら、POV-Ray の持ってる機能を全て利用できるのだろうなと…。たぶん。
ただ、それでも、POV-Ray用プリミティブを blender上で追加した際のマテリアル設定の仕方が分からないわけで…。そして、.pov の中でそれらしい記述が無いのに色指定等が反映されるのが謎なわけで…。
以下の動画を眺めたら、blender 2.78 + POV-Ray 3.7 の時点ではマテリアルを、というか POV-Ray で言うところの texture を指定できているようで…。しかし、手元の blender 2.79b + POV-Ray 3.7 で似たような作業をしても反映されない。これはおかしい。
_Blender 2.78 + POV-Ray 3.7 - YouTube
色々試しているうちに分かってきた。
- blenderの標準的なオブジェクト(cube等)なら、通常のマテリアル指定(ディフューズ色の指定等)が POV-Ray にも反映される。
- POV-Ray のプリミティブは、マテリアル指定が反映されない。Custom POV Code の指定すら反映されない。
画像を見れば分かるだろうか…。Cube は色が反映されてるけど、PovBox には色が反映されてない。
前述の動画内で利用してるオブジェクトも、おそらく、POV-Ray のプリミティブの PovBox ではなくて、blender の標準的なオブジェクトの Cube だったのだろう…。だから、色の指定がちゃんと反映されてたのだろうなと…。
更に、出力された .pov を眺めて、これまた首を捻ってしまった。POV-Ray の解説ページによると、例えば色を指定する際は、object { } の中で texture だの pigment だのを記述するわけだけど。出力された .pov の object { } 内には、それらしい記述が一切無い。ところが、それらの記述がないのに、レンダリング結果には、ちゃんと色がついている…。何故。どうして。
_povray_test2_blender_object_only.pov
これはもしかすると、.pov フォーマットにおける暗黙のルール、みたいなものを利用しているのでは…? 例えば、宣言名が「MAT_hoge」の場合は、暗黙で「hoge」のマテリアル指定として扱われる、とかそういうルールが実はあったりするのでは…? でも、ググってみてもそれらしいルールが見つからない…。
さておき。POV-Ray用のシーンを blender で作成する際、マテリアル設定だか texture設定については、テキストを直接書いて指定する方法があるようで。前述の動画でやっているのがソレだけど。
まず、テキストビューで POV-Ray用の texture指定を直接書いてしまって…。
blender 2.79b なら、プロパティ → POV-Ray → Source to render で「両方」を選択。これで、記述したテキストが、出力される .pov内にも含まれるようになる。
その上で、オブジェクトのマテリアル設定の Custom POV Code に、先ほどテキストで記述した際の設定名を追記する。
こういう指定方法なら、POV-Ray の持ってる機能を全て利用できるのだろうなと…。たぶん。
ただ、それでも、POV-Ray用プリミティブを blender上で追加した際のマテリアル設定の仕方が分からないわけで…。そして、.pov の中でそれらしい記述が無いのに色指定等が反映されるのが謎なわけで…。
◎ 雑感。 :
「blender が POV-Ray に対応していると言っても、どうせなんでもかんでもポリゴンに変換しちゃうんだろ? そんなの使えねー」と勝手に決めつけて最初から選択肢に入れてなかったのだけど。今回試用してみたら、POV-Ray利用時は専用のオブジェクト(プリミティブ)も利用できると知って、なんだかゴメンナサイと謝りたくなった…。
そういうモードに切り替わるのであれば、blender を使ってプリミティブを配置するのが一番楽なんじゃね? とすら思えてきた。
ただ、マテリアル指定の方法が…そこがどうにも分からない…。
そういうモードに切り替わるのであれば、blender を使ってプリミティブを配置するのが一番楽なんじゃね? とすら思えてきた。
ただ、マテリアル指定の方法が…そこがどうにも分からない…。
◎ 余談。タグをつけることにした。 :
ずっと POV-Ray関係のメモをしているけど、こういうのはタグをつけたほうがいいよな…。ということで、数日前のメモにもタグをつけておいた。
[ ツッコむ ]
以上です。