2014年1月13日月曜日

Cyclesでボリュームマテリアルテスト その3

ボリュームシェーダーのコードが11日に2.69.8公式ツリーにマージされたようだ。レンダリングがかなり軽くなった。いくつか変更点がある。
  • レンダータブのアルゴリズムの選択がなくなりボリュームサンプリングのステップ値と上限の設定が追加された
  • 等方性ボリュームノードはボリューム拡散(Volume Scatter)とボリューム吸収(Volume Absorption)に別れた。引数gの名称は異方性に修正
  • blenderartistスレの11日のDingto氏の書き込みによるとワールドにおけるサーフェスのライトは見えなくなったかまたは無効になった。サンプル画像にあるようなスポットライトの表現はできなくなったので、もし必要なら大きめの立方体などを使ってボリュームを適用してくれとのこと

散光星雲

レンダー所要時間:3時間40分 1000サンプル

ガス部分のマテリアルノード

最初にイメージしていたものにかなり近づいてきた気がする。きれいに透過したい場合はやはりボリュームノードの密度にアルファ値を食わせるのがいいらしい。しかしこれが前回のようなガワだけでなくボリューム内部まで正しく点描されているかどうかは不明だが、カメラを雲に突っ込むようなアニメーションにするのでないかぎり目的は果たせていると思う。

星雲のうち白い部分は本当は黄色にしたかったのだがなぜか緑が混じってしまい、ボロノイテクスチャの拡大縮小値を下げてしのいだ。白い部分は実はボロノイ模様の円と円の隙間の部分になっている。
上のカラーランプはガス全体を左から右にグラデーションをかけているもので、下のカラーランプで色分けをしている。

右下の千切れている部分は単にオブジェクトに潰れたICO球を追加しただけのもの。これをいくつか点在させればひつじ雲のようなものも作れるかもしれない。しかしながら、本来なら密度係数だけで、たとえば立方体オブジェクトの中にいくつもの雲の形を表現できるのがボリュームの機能なのだが、たぶんそれをやるとメモリを大量に消費するかもしれない。
その2で紹介したWoodcockの論文には、ボリュームを仮想パーティクルのように扱う手法を提唱していたので、オブジェクト内部の任意の座標に置かれた点の集まりをいかに軽量に扱えるかでアルゴリズムの良否がわかれるところだろう。

追記:スレでボリュームの密度にアルファ値を食わせるのは正しい使い方なのかと質問してみたのだが、特に指摘されなかったのでレンダー結果よければすべて良し的な。実際どういう使い方ができるかというのを検証するスレなので問題はないらしい。