Blenderを使ってCGで雲を作ってみる その13

みなさんこんにちは武田です。

今更なのですが、明けましておめでとうございます。
既に、2月に入り、南岸低気圧がやってきて関東でも雪の降るような季節になってきました。

ところで、薄い雲がかかっている場合の、雲の上下関係って、難しいですね。

多分崩れつつある飛行機雲から生まれた濃い雲と、薄い雲が写っています。
これは、飛行機雲が上にあって、その下に薄い雲があって、そこに影が落ちているのでしょうか。
影が上に伸びる、一見不思議な見え方になっていました。
光源はだいぶ逆光寄りな状態なので、奥から本当は手前側に影が落ちているのを、薄い雲がスクリーンの役割を果たして見えているのだと思います。
本当の影は上に落ちないので、濃い雲の方が上にあるんだな、と分かるのですが、影がなければ、どっちが上にあるのかなんて、下から見ているだけでは全然わかりませんね…

さて、前回は粒子のシミュレーションを使って、雲の粒が流れていくような形を作りました。
煙のシミュレーションを使わないのは、空気と完全に一体化して動く煙のシミュレーションでは、速度差があると空気がまきあがってしまって、吹き流されてシュッと流れていくような雲が難しかったからですね。

そのかわり、粒子をうまいこと雲のように表示をしないといけません。

前回は、ジオメトリノードの機能を使って、粒子のあるところにボリュームを作成しました。
それなりに上手くいったのですが、粒子が濃く分布しているところの密度が濃くなってくれません。
逆に粒子がまばらなところを薄く雲が広がったところ…と解釈しないので、粉っぽい雲になってしまいます。

そこで、別のボリューム表示の手段として、シェーダーのPoint Density (点密度) の機能を使ってみます。

粒子シミュレーションで作った点の位置や、メッシュオブジェクトの頂点の位置を使って密度分布を得る、シェーダーの機能です。(Cycles 限定です)
まず、挙動を調べてみるために立方体の頂点を使って密度表示をさせてみました。
立方体のサイズを変更して小さくしていくと、頂点にあるボリュームの球が重なり合っていきます。

重なり合ったところは、その分足しあわされて濃くなっていますね。
(名前からして密度 Density ですからね)

ということは、ちゃんと濃淡も含めて雲の表示ができそうです。
この機能を使って、Cyclesでレンダリングをしてみます。

悪くないですね!

難点があるとすると、点の密度がまばらなところを薄く広がった雲のように表示しようとすると、点1個あたりのサイズを大きくしないといけないところでしょうか。
細かい構造が潰れてしまう可能性もあります

流れるようなすじ雲がひとピースできたので、それを配置してみます。
(1種類だけだと複製が並んでいる感が強いので、ひとまず2パターンだけ雲を作ってみました)

こうしたすじ雲は、単独でぽっかり浮かんでいるよりも、横に並んでいるような配置をよく見かけます。

手でいっぱいコピーを並べても良いのですが、ちょっと大変です。

そこで、ジオメトリノードを使って雲オブジェクトの複製(インスタンス)を並べておくようにしました。

ここで、点密度(Point Density)の座標の取り方は注意です。
そのままだと、幾ら複製しても密度を計算するのに使う座標は原点基準で、全部の雲が重なってしまう…ということになってしまいます。

元々の雲のデータは原点付近に置いて、ワールド座標系を使って評価することにして、それに繋がるソケットにはオブジェクトの座標を使います。
これで、複製を表示するときは、その複製の位置を基準に雲の評価をするので、ちゃんと並べて配置ができるようになりました。

すこしバリエーション不足感があるのですが、空にすじ雲が並んでいる雰囲気が出てきました。

調子に乗って、さらにたくさんの雲を配置してみます…

見た目では、一見いい感じです!

が、じつはこの辺で計算時間と見た目の関係が厳しい感じになってきました。
というのは、Cycles のレイトレーシングの特性上、半透明なものが重なりあっていると、計算量が増えていくのです。
不透明なものであれば、不透明なものの見え方が分かったら「その奥」はもう考慮する必要が無いので、そこで計算打ち切りをしても良く、物が増えてもそこまで計算量は増えません。
ところが、半透明なものは「その奥に何があるか」が重要なので、計算をそこで終えずにさらに別のオブジェクトの情報を調べて行きます。その分、計算時間が伸びていきます。

さらに、これはどこまでもずっと計算を続けるわけには行かないので途中で計算を打ち切るのですが、打ち切りがはやいと、光がそこに当たっているかどうか判定ができないので、不自然な影が落ちたりしてしまいます。
確かに、なんか妙に暗くて影が強く落ちているような場所があって、怪しいですね…

ということで、Point Density での表示、悪くないのですが、雲パーツをたくさん配置したいというような場合にはちょっと苦しそうです。
(ひとパーツが雲一筋だから数が増えるので、複数のすじをまとめて1オブジェクトにすれば、もうちょっとましになるかもしれません)

やはり、できれば濃淡のきちんとついたデータにして、Eevee 上でレンダリングができれば良いのですが…
と、Cycles でも Eevee でも、一長一短、どうしようかというところで次回に続きます。
(次回Blenderの内部だけで全部を処理することを一旦あきらめて、粒子のデータを濃淡の付いた VDB データに変換して使って見ますよ)

コメントを残す

メールアドレスが公開されることはありません。