ノードマテリアルに関する使用上の注意

Cinema 4DもR20からノードマテリアルを搭載しています.便利で強力な機能ですが,初学者にとっては少し混乱を招くことになる点があります. テストでインテリアシーンを作ったので,ノードマテリアルを使うときの注意点を紹介したいと思います.

ノードマテリアルが追加されたことにより,Cinema 4Dでマテリアルを作成する時,標準マテリアルかノードマテリアルを作成するかを選択できるようになりました.(特殊なシェーダは除いています.)

20181222_5

標準マテリアル

標準マテリアルはマテリアルマネージャの

新規標準マテリアル
新規PBRマテリアル

から作成できます.

PBRマテリアルについて

PBRマテリアルは標準マテリアルと同じですが,デフォルトの設定が異なります.〈カラーチェンネル〉がオフになっていて,〈反射チャンネル〉の中に「拡散反射レイヤー」が作成されていますが,これがカラーの代わりになっています.しかしこれはカラーを使わずに「反射する色」で色を計算する仕組みで,現実的な光の振る舞いに近いですが〈カラーチャンネル〉を使う場合と比べて基本的には計算時間が長いというのが現状です.(Cinema 4D標準レンダラ,フィジカルレンダラ使用時)

また,反射色で計算するので,マルチパスで〈マテリアルのカラー〉が出てきませんが,インターフェイスは標準マテリアルと同じなので,〈カラーチャンネル〉をオンにして〈拡散反射レイヤ〉をオフにすることもできます.

ノードマテリアル

新規ノードベースマテリアル
新規Uberマテリアル

ノードベースマテリアルは上記の2種類から作成できます.〈新規ノードベースマテリアル〉は最初から自分でノードを組む必要がありますが,対して〈Uberマテリアル〉はノードが内部に組み込まれた状態で,かつインターフェイスが標準マテリアルのような状態で使いやすい状態のものになっています.

この二つはノードマテリアルです.ノードマテリアルには標準マテリアルと決定的な違いがあり,それは

ノードマテリアルはカラーチャンネルがない

という点です.ノードマテリアルのインターフェイス上では必ず〈拡散反射〉を使うことになります.

デフォルト設定ではノードマテリアルを使用してマルチパスの〈マテリアルのカラー〉は出すことができませんが,〈プロジェクト設定〉にある〈ノードマテリアルでカラーチャンネルを使う〉を「オン」にすることで,〈マテリアルのカラー〉が出力できるようになります.(デフォルトでは「オフ」になっています)

20181222_8

ただし,このオプションをオンにすると,レンダリングを〈カラーチャンネル〉で行うので,レンダリング結果が変わる点も注意しなくてはなりません.

次のシーンでは壁,床,窓枠などをノードマテリアルで作成しています.

〈ノードマテリアルでカラーチャンネルを使う〉が「オフ」の場合

ノードマテリアルは拡散反射色で計算するので,レンダリング時間は長くなります.インテリアのようなシーンをレンダリングするのであれば,ほとんどの場合は「オフ」にしていないといつまでたってもレンダリングが終わらないということになります.グローバルイルミネーション(GI)の計算結果も異なります.Cinema 4D R20では拡散反射をイラディアンスキャッシュで計算する機能がまだありません.次のようなインテリアシーンをテストしました.壁,床,巾木といった箇所はノードマテリアルです.レンダリング時間は50分ほどかかっていますが,イラディアンスキャッシュを使ってもそもそも拡散反射の照度計算をしていないので,アーティファクトがないのが分かります.窓枠や窓枠下の壁など.

これはPBRマテリアルか,ノードマテリアルであればこのようになります.

20181222_3

上: イラディアンスキャッシュ計算中(真っ白ですが)

20181222_1

アーティファクトが無いのが見て取れます.

〈ノードマテリアルでカラーチャンネルを使う〉が「オン」の場合

この場合は,カラーとして計算します.GI計算も行われているので,イラディアンスキャッシュのアーティファクトも確認できます.しかしレンダリング時間は15分ほどで完了します.色味も少し異なります.入角も暗くなっています.両方ともアンビエントオクルージョンを使用していますが,こちらの方がイラディアンスキャッシュの影響もあり,より暗くなっています.

この画像ではアーティファクトを解消するために,イラディアンスキャッシュの設定を調整する必要があることは明白です.

20181222_4

上: イラディアンスキャッシュ計算中

20181222_2

このように,ノードマテリアルを使用する際は,カラーチャンネルとして計算するかどうかを検討した方がよいです.

ただし,これはCinema 4Dの標準レンダラまたはフィジカルレンダラをつかうことが前提です.サードパーティレンダラの場合はそれぞれのレンダリング手法にあった独自マテリアルを使うことになります.

それを踏まえてインテリアシーンを仕上げてみる

テストシーンではノードマテリアルを使うことを前提に作成していきましたが,色々と追加する小物アセットには標準マテリアルのものも多くあります.いくつかはノードで作り変えていますが,さすがに全て作り変えるのは時間がかかってしまいます.それにR20ではまだ標準マテリアルからノードマテリアルとの相互変換機能というのはありません.(今後実装されるとよいのですが)

ということで,ノードマテリアルと標準マテリアルが混在しているわけです.そのため,〈ノードマテリアルでカラーチャンネルを使う〉を「オン」にして,イラディアンスキャッシュの設定もしっかり行わなければいけません.

標準マテリアルとノードマテリアルが混在している場合

次の画像は右側の白い球体のみ標準マテリアル(カラーチャンネル使用)にしています.この球体は間接照明を計算するのでGI計算対象となりますが,ノードマテリアルである壁はGI計算を行うことができません.壁は鏡面(拡散)反射で描画するのみです.これでは,標準マテリアルとノードが混在している場合にライトが最初に壁(ノード)にバウンスして,その光が球体を照らすような表現ができなくなります.

ボックス左側からライトを照らしても,ノードマテリアルである壁は間接照明計算をしないので,白い球体の右半分を間接照明で照らすことができていません.混在しているとこのような問題が発生します.

20181222_6

上: 球体のみ標準マテリアルの場合,ノードマテリアルである壁からの間接照明が表現できません.

20181222_7

上: 〈ノードマテリアルでカラーチャンネルを使用〉を「オン」にすればノードマテリアルの拡散反射はカラーとして扱われます.

反射とカラーではレンダリング時間も大幅に異なります.

標準マテリアルとノードマテリアルが混在していると,カラーチャンネルを使っているその他のアセットがノードマテリアルからの間接照明を受け取ることができなくなります.したがって今作っているシーンでGIを使うなら〈ノードマテリアルでカラーチャンネルを使用〉を「オン」にするしかありません.シーン内がすべてPBRマテリアルまたはノードマテリアルであれば「オフ」のまま試してみたかったところですが…

レンダリング設定

テストシーンは夜のインテリアなので綺麗にしようとすると,かなりのサンプル数とレコード密度が必要になります.サンプル数は〈カスタムサンプル〉にして「1024」にしましたが,テストをすると光が良く当たっていない左上天井と壁回りのアーティファクトがなかなか取れそうにありませんでした.全体のサンプル数を「2048」にしても厳しい印象ですので,全体のサンプル数は「1024」に戻して,天井と壁にコンポジットタグを適用して,タグの設定にある

〈ストカスティックサンプルの倍率〉
〈レコード密度の比率〉

を上げました.これはタグのついているオブジェクトだけイラディアンスキャッシュの計算精度をレンダリング設定の数値から上げる役割がありますが,200,300,400%などして,2倍3倍しないと効果が出にくいです.

しかしそれでも天井のアーティファクトは厳しい結果となりました.やはり暗いシーンは難しいですね.ちなみに左側にあるアルコランプのシェード上部には穴が開いていて光が上方向にも少し抜ける仕組みになっているので,その光が天井を少し照らしています.

20181222_12上: イラディアンスキャッシュ+イラディアンスキャッシュの結果

これからアセットを追加して仕上げていこうかと思います.アーティファクトの解消に関しては,天井と壁だけコンポジットタグの〈強制QMCサンプリング〉を使う方法もありますが,最終的にはプライマリを「QMC」,セカンダリを「イラディアンスキャッシュ」にしようかと思っています.