2017/06/26(月) [n年前の日記]
#1 [blender] blenderのパーティクルで影を落とす方法を試したり
_昨日、
blenderのパーティクル機能のビルボードを使って、木っぽいものを大量発生する手順を試したけど。影を落とせなかったのが気になったので、そのあたりを調べて試してみたり。
ちなみに、Cyclesレンダーじゃなくて、blenderレンダーの話です。blender のバージョンは 2.78。
ちなみに、Cyclesレンダーじゃなくて、blenderレンダーの話です。blender のバージョンは 2.78。
◎ ビルボードの影も落とす。 :
ビルボードの影 ―― というかビルボードに使ってるアルファチャンネル付きテクスチャの影 ―― は落とせないのかもしれぬ、と思い込んでたけど、そうではなかったらしい。「ビルボード側のマテリアル」を弄って試してたから影を落とせなかっただけで、「ビルボードの影を落としたいオブジェクト側のマテリアル」を弄れば、影を落とせる模様。
例えば、地面相当のオブジェクトがあったとしたら…。ビルボードの影は、その地面オブジェクトに落としたいわけだから、地面オブジェクトのマテリアルを設定して、「お前、影をちゃんと受け取れよ?」と指定してやればいい。
具体的には、「影」 → 「半透明影の受信」にチェックをいれてやるだけ。たったこれだけで、ビルボードの影も落ちるようになる。
しかし、これはこれで問題が。
例えば、地面相当のオブジェクトがあったとしたら…。ビルボードの影は、その地面オブジェクトに落としたいわけだから、地面オブジェクトのマテリアルを設定して、「お前、影をちゃんと受け取れよ?」と指定してやればいい。
具体的には、「影」 → 「半透明影の受信」にチェックをいれてやるだけ。たったこれだけで、ビルボードの影も落ちるようになる。
しかし、これはこれで問題が。
◎ ビルボードの影の問題。 :
ビルボードはあくまで1枚のポリゴンでしかないので、光源の位置や方向によっては、影の形がアレなことになる。
そりゃそうだ。板が一枚、そこに立ってるだけだもん。
じゃあ、どうすればいいのか。…策の一つとして、影専用のオブジェクトをパーティクルで別途生成してしまう、てのはどうかなと思いついたり。
例えば、以下のような十字ポリゴンのオブジェクトを作って…。
ビルボードを発生してるパーティクルとは別に、もう一つ、影専用として使うパーティクルを追加する。設定は、ビルボード用パーティクルの設定とほとんど同じだけど、違うのは…。
ところで、このままだと影専用パーティクルの実体(?)までレンダリングされてしまう。今回は、実体を描画する必要が無いわけで。影だけが欲しいわけで。
なので、影専用パーティクルに使うオブジェクトのマテリアル設定で、「影」→「投影のみ」にチェックを入れる。これで実体は描画されず、影だけが描画される状態になる。
更に、ビルボード側の影は、もう要らないわけで。ビルボードに使ってるマテリアルの設定で、「影」→「成型」あたりのチェックを外す。これで影がでなくなるはず。というか、影関係は全部無効にしてもヨサゲ。
これで、ビルボードの影がアレな形ではなくなった。
ていうか、そもそも「ビルボードの影」ではなくて、「ビルボードの影っぽく見える別の物体」がそこに居るわけだけど。
しかし、これもこれで問題が。
そりゃそうだ。板が一枚、そこに立ってるだけだもん。
じゃあ、どうすればいいのか。…策の一つとして、影専用のオブジェクトをパーティクルで別途生成してしまう、てのはどうかなと思いついたり。
例えば、以下のような十字ポリゴンのオブジェクトを作って…。
ビルボードを発生してるパーティクルとは別に、もう一つ、影専用として使うパーティクルを追加する。設定は、ビルボード用パーティクルの設定とほとんど同じだけど、違うのは…。
- 各パーティクルの種類を、「ビルボード」ではなく「オブジェクト」にして、先ほど作った十字ポリゴンオブジェクトを指定する。
- 向きがおかしいので、ちゃんと表示されるように「回転」のあたりを弄ってやる。
ところで、このままだと影専用パーティクルの実体(?)までレンダリングされてしまう。今回は、実体を描画する必要が無いわけで。影だけが欲しいわけで。
なので、影専用パーティクルに使うオブジェクトのマテリアル設定で、「影」→「投影のみ」にチェックを入れる。これで実体は描画されず、影だけが描画される状態になる。
更に、ビルボード側の影は、もう要らないわけで。ビルボードに使ってるマテリアルの設定で、「影」→「成型」あたりのチェックを外す。これで影がでなくなるはず。というか、影関係は全部無効にしてもヨサゲ。
これで、ビルボードの影がアレな形ではなくなった。
ていうか、そもそも「ビルボードの影」ではなくて、「ビルボードの影っぽく見える別の物体」がそこに居るわけだけど。
しかし、これもこれで問題が。
◎ 十字ポリゴンの影の問題。 :
[ ツッコむ ]
#2 [blender] blenderのパーティクルビルボードで何種類か表示したい
blenderのパーティクル機能のビルボードを使いつつ、複数のテクスチャを描画したい。例えば一種類の木のテクスチャだけが表示されているのでは、なんだか見た目が不自然なわけで。何種類か欲しいよなと。
調べてみたら、一応そういう設定もできる模様。ただ、複数のテクスチャ画像を割り当てる感じではなく、1枚のテクスチャ画像に何種類も描いておく、みたいなソレになるようだけど。
例えば、こういう感じのテクスチャ画像を用意しておいて…。
そのまま表示すると、こんな感じになってしまう。
が、パーティクル設定の、「レンダー」→「UVを分割」の値を1より大きくして、「ビルボード分離UV」にUVMapを指定してやれば、1枚のテクスチャ画像を分割してどれかしらを使う、みたいな状態になるようで。
このスクリーンショットでは、ちょっとよく分からんけど…。よーく見ると複数の種類の木が表示されてることが分かるかと。
UV分割に指定する値は…。
一応、実験に使った画像も置いときます。CC0 / Public Domain ってことで。
_trees.png (5.3MB、2048x2048)
調べてみたら、一応そういう設定もできる模様。ただ、複数のテクスチャ画像を割り当てる感じではなく、1枚のテクスチャ画像に何種類も描いておく、みたいなソレになるようだけど。
例えば、こういう感じのテクスチャ画像を用意しておいて…。
そのまま表示すると、こんな感じになってしまう。
が、パーティクル設定の、「レンダー」→「UVを分割」の値を1より大きくして、「ビルボード分離UV」にUVMapを指定してやれば、1枚のテクスチャ画像を分割してどれかしらを使う、みたいな状態になるようで。
このスクリーンショットでは、ちょっとよく分からんけど…。よーく見ると複数の種類の木が表示されてることが分かるかと。
UV分割に指定する値は…。
- 例えばテクスチャ画像に、2x2の状態で画が入ってるなら、UV分割数は2に。
- 5x5の状態で画が入ってるなら、UV分割数は5に。
一応、実験に使った画像も置いときます。CC0 / Public Domain ってことで。
_trees.png (5.3MB、2048x2048)
[ ツッコむ ]
#3 [blender] blenderのCyclesでビルボード
blenderは、2つのレンダリングエンジンを持ってる。
今まで試していた、パーティクルでビルボードを使うソレは、blenderレンダー上であれば利用できるけど…。
Cyclesレンダーを選んだ場合、パーティクルのビルボードは使えない。実装されてないし、実装する予定も無いようで、レンダリングしてみてもそこには何も描画されない。
となると、Cyclesを使いつつ、ビルボードもやってみたい時はどうすればいいのか。
Cycles利用時も、オブジェクトをパーティクルとして発生させることはできるようで。ソレを使えば似たようなことができなくもないらしい。常時カメラのほうを向く、ポリゴン1枚だけのオブジェクトを作って、ソイツを元にしてパーティクルとして発生させてやる、みたいな。
ということで、やってみた。
たしかに、それっぽくなった気がする。
ところで、動画内の影に注目。角度によっては影が消えてるように見えるはず。ビルボードは、所詮1枚のポリゴンをそこに立ててるだけなので、光源とカメラの角度によっては、影がアレなことになってしまうことが、この動画からも分かるかなと。
操作手順は、以下の動画を参考にさせてもらった。ありがたや。
_Blender 3D Quick Hack : Cycles Billboard Particles - YouTube
しかし、これはこれで問題が。
- 昔から持ってる blenderレンダー。レンダリングは速いほうだけど現実世界の見た目とは結構違う画を出してくる。
- 物理ベースレンダリングエンジンの Cyclesレンダー。レンダリングは遅いけど現実世界の見た目に近い画を出してくる。CPUではなくGPUで計算させると数倍速くなる。
今まで試していた、パーティクルでビルボードを使うソレは、blenderレンダー上であれば利用できるけど…。
Cyclesレンダーを選んだ場合、パーティクルのビルボードは使えない。実装されてないし、実装する予定も無いようで、レンダリングしてみてもそこには何も描画されない。
となると、Cyclesを使いつつ、ビルボードもやってみたい時はどうすればいいのか。
Cycles利用時も、オブジェクトをパーティクルとして発生させることはできるようで。ソレを使えば似たようなことができなくもないらしい。常時カメラのほうを向く、ポリゴン1枚だけのオブジェクトを作って、ソイツを元にしてパーティクルとして発生させてやる、みたいな。
ということで、やってみた。
たしかに、それっぽくなった気がする。
ところで、動画内の影に注目。角度によっては影が消えてるように見えるはず。ビルボードは、所詮1枚のポリゴンをそこに立ててるだけなので、光源とカメラの角度によっては、影がアレなことになってしまうことが、この動画からも分かるかなと。
操作手順は、以下の動画を参考にさせてもらった。ありがたや。
_Blender 3D Quick Hack : Cycles Billboard Particles - YouTube
しかし、これはこれで問題が。
◎ ビルボードの向きがなんだか不安。 :
blenderレンダー上で、パーティクルビルボードを使った場合、各パーティクルがそれぞれカメラ位置に向いてくれるのだけど。
Cycles上で、前述のようなことをして、似た状態を作ろうとした場合、各パーティクルは、元になったビルボードと同じ角度になってしまう。 1つだけ妙に大きいヤツが居るけど…コイツが元になったオブジェクト。パーティクル達は、コイツの角度を皆で真似するわけで。
更に、元になったオブジェクトの位置が、カメラに対して頓珍漢なところにあったりすると、パーティクル達がカメラに対して頓珍漢な向きになってしまう。
てなわけで、blenderレンダー上のパーティクル+ビルボードとは、かなり動作が違うというか…。
なので、この方法を使う際の注意点としては、元オブジェクトをカメラに対して適切な位置に置いてやる、等の工夫が必要になりそうな予感。おそらく、元オブジェクトをパーティクル達の中に紛れ込ませる、みたいな感じになるのではないかなあ、と。なんだか忍者アニメ等で見かける分身の術みたいですな。「お前が本体だってばよ!」「なにっ!? 見破られた!?」 みたいな。
それはともかく。Cyclesを選ぶ時点でリアルっぽいレンダリング結果を求めてるはずで、そんな場面でビルボードなんか使うのかな、という気もしてきたり。ビルボードを使おうと思う時点で、リアルっぽさは二の次で、つまりblenderレンダーでも済みそうな場面だったりするのでは…。どうなんだろ。
Cycles上で、前述のようなことをして、似た状態を作ろうとした場合、各パーティクルは、元になったビルボードと同じ角度になってしまう。 1つだけ妙に大きいヤツが居るけど…コイツが元になったオブジェクト。パーティクル達は、コイツの角度を皆で真似するわけで。
更に、元になったオブジェクトの位置が、カメラに対して頓珍漢なところにあったりすると、パーティクル達がカメラに対して頓珍漢な向きになってしまう。
てなわけで、blenderレンダー上のパーティクル+ビルボードとは、かなり動作が違うというか…。
なので、この方法を使う際の注意点としては、元オブジェクトをカメラに対して適切な位置に置いてやる、等の工夫が必要になりそうな予感。おそらく、元オブジェクトをパーティクル達の中に紛れ込ませる、みたいな感じになるのではないかなあ、と。なんだか忍者アニメ等で見かける分身の術みたいですな。「お前が本体だってばよ!」「なにっ!? 見破られた!?」 みたいな。
それはともかく。Cyclesを選ぶ時点でリアルっぽいレンダリング結果を求めてるはずで、そんな場面でビルボードなんか使うのかな、という気もしてきたり。ビルボードを使おうと思う時点で、リアルっぽさは二の次で、つまりblenderレンダーでも済みそうな場面だったりするのでは…。どうなんだろ。
[ ツッコむ ]
以上、1 日分です。