Blender ウォッチング

「Blender 3.2」の集光模様が美しくリアルにパワーアップ!

「シャドウコースティクス」機能で透明素材で屈折した光を物理ベースで演算

 本連載では、無料の高機能3Dモデリングツール「Blender」の使い方や関連情報を幅広くお伝えします。

 6月8日(GMT)、「Blender 3.2」が公式リリースされました。いつものように、このリリースにも興味深い機能があります。

 今回はBlenderのレンダラーの1つである、「Cycles」用に追加された「シャドウコースティクス」機能とその利用方法についてご紹介します。

シャドウコースティクスの使用例

シャドウコースティクス

 シャドウコースティクスとは、Cyclesレンダーの弱点の1つである「コースティクス」(集光模様)を補強する機能です。

 MNEE(Manifold Next Event Estimation:多様体次事象推定)と呼ばれる技術を使用し、 「直接光源」 により 「屈折」 する素材を透過し、その影内に現れるコースティクスを、従来よりもクッキリ綺麗に生成できます。

使用方法

 「影を投影するオブジェクト」(ガラスなど)、「影を受信するオブジェクト」(床など)、「ライト」の3つのオブジェクトを設定します。

GPU設定(オプション)

 もしGPUによるレンダリングを使用したい場合は、あらかじめ「プリファレンス」にて設定が必要です。

 [編集]メニューから[プリファレンス...]を選び、[システム]タブの[Cyclesレンダーデバイス]から利用可能なGPUデバイスを選択し、左下の[≡]ボタンから展開されるメニューで[プリファレンスを保存]をクリックしてください。

[編集]メニュー(①)から[プリファレンス...](②)を選び、[システム]タブ(③)の[Cyclesレンダーデバイス](④)から利用可能なGPUデバイスを選択し、左下の[≡]ボタンから展開される[プリファレンスを保存](⑤)をクリック

レンダー設定

  1. [レンダープロパティ]-[レンダー]を「Cycles」に切り替えます。
  2. [デバイス]を「CPU」または「GPU演算」に設定します。v3.2の時点では、MacOSの「Metal」では利用できません。
「プロパティエディター」の[レンダープロパティ]-[レンダー]を「Cycles」に切り替え、[デバイス]を「CPU」または「GPU演算」に設定

屈折するオブジェクトへの設定

 まずは屈折するマテリアルが設定された「オブジェクト」に設定します(マテリアルではないことに注意してください)。

  1. コースティクスを発生させたい「屈折」するオブジェクトを選択します(①)。
  2. [オブジェクトプロパティ](②)-[シェーディング](③)-[コースティクス](④)の、[シャドウコースティクスを投影](⑤)をONにします。
オブジェクトを選択(①)し、[オブジェクトプロパティ](②)-[シェーディング](③)-[コースティクス](④)の[シャドウコースティクスを投影](⑤)をON

影を受けるオブジェクトへの設定

 次は影を受ける「オブジェクト」への設定です。

  1. 影を受けるオブジェクト(机など)を選択(①)します。
  2. [オブジェクトプロパティ](②)-[シェーディング](③)-[コースティクス](④)-[シャドウコースティクスを受信](⑤)をONにします。

 「受信」のみをONにしてください。間違えて両方ONにすると機能しなくなります。

影を受けるオブジェクトを選択(①)後、屈折するオブジェクトと同様(②③④)に[シャドウコースティクスを受信](⑤)のみをONに

ライトオブジェクトへの設定

 最後に「ライトオブジェクト」へ設定します。これだけは別のプロパティになります。

  1. 「ライト」(①)オブジェクトを選択します。
  2. [オブジェクトデータプロパティ](②)-[ライト](③)-[シャドウコースティクス](④)をONにします。

 機能自体を全体的にON/OFFするプロパティはv3.2の時点では未実装ですので、実質このプロパティで制御することになります。

ライトを選択(①)し、[オブジェクトデータプロパティ](②)-[ライト](③)から[シャドウコースティクス](④)をON

 レンダリングします。[デバイス]に[GPU演算]を選択した場合、初回はGPUへの準備処理が入りますので少し時間がかかります。

実際の比較

 では実際に比較していきましょう。下のリストがテスト環境です。

  • バージョン:blender-3.2.0RC版(blender-3.2.0-candidate+v32.34f94a02f370-windows.amd64-release)
  • CPU:i7-2600
  • GPU:RTX2060 12GB
  • OS:Windows 10 Pro
  • 画像サイズ:1,000×1,000ピクセル
  • サンプル数:4,096(デフォルト)

 まずは従来のレンダリング画像から。ただし「シャドウコースティクス」で自動的に無効になる「光沢フィルター」オプション([レンダープロパティ]-[ライトパス]-[コースティクス])を「0.0」にしています。

 レンダリング時間は53秒。2つのグラスの影は全く透過していません。

従来のレンダリング画像。2つのグラスの影が透過していない

 次はシャドウコースティクス設定を有効にしてレンダリングしてみます。

 レンダリング時間は2分32秒。時間は大幅に増えましたが、結果は全く違います。2つのグラスが透過しており、手前の球のコースティクスも大きくなっています。

シャドウコースティクス有効、上と比べ大きく異なる結果に

制約

 最初に太字のカギ括弧で説明した単語がそのまま制限事項となります。つまり、

  • (ワールドによる周囲からの光を含む)「間接光源」によるコースティクス
  • 「反射」により発生するコースティクス

には使用できません。

他にも、以下のような制約があります。

  • 光の反射回数(バウンス)が4回まで。屈折が重なると正常にレンダリングされません。
  • 屈折側の「バンプ」や「ノーマルマップ」などの、法線で凹凸を表現する機能には対応していません。
  • 分布モデルは「GGX」もしくは「ベックマン」のみ。
屈折が重なり、透過しなくなった例

 今後のバージョンで制約が減り、他のコースティクスにも拡張される可能性があります。最適化が進み、計算時間も短縮されるかもしれません。

終わりに

 今回はBlender 3.2で追加された新しいコースティクス機能にしぼり、ご紹介しました。まだ問題はいくつかあるものの、可能性を広げてくれる新技術はワクワクしますね。
 ではまた。