前回は水面やプールのマテリアルを作成しました.今回はライティングを行っていきます.ライティング自体は非常にシンプルに「空」と「無限遠ライト」の2灯のみで行います.一見簡単そうですが,今回はコースティクスと言う光の屈折現象から起こる集光模様について解説するので少し難しい内容を含みます.
このコースティクスと言うのは初心者にとっては少し厄介な機能で,屈折物が多いシーンをレンダリングする際にトラブルになる可能性があったり,その原因がわからず解消ができない!というケースがよくあります.今回はライティングの設定よりはコースティクスに関係する機能に焦点を当てて解説しますが,少々難しい内容ですから,何度も反復したり,さらにドキュメントを読んだりして理解を深めるようにすると良いでしょう.
それでは最初に空による照明を作ります.前回,前々回の作って覚えるシリーズをこなされた方ならすでに手順は把握していることでしょうが,今回も順を追って解説していきます.
空によるライティング
「空」アイコンをクリックしてシーンに空オブジェクトを追加します.「アセットブラウザ」を開いて「HDRI」で検索し,適当な空用マテリアルをシーンに追加して空に割り当てます.晴れ空のものが良いでしょう.
このままでは空は照明として機能しませんので,「レンダリング設定」(Ctrl + B)を開き,「特殊効果」から「グローバルイルミネーション」を追加します.これで空はライトとして機能するようになります.
グローバルイルミネーションの計算をテスト用に低品質に変更しておきます.グローバルイルミネーションの「一般」タブを開き,
「プライマリの方式」…「イラディアンスキャッシュ」
「セカンダリの方式」…「なし」
「サンプル」…「カスタムサンプル数」
「サンプル数」…「64」
「イラディアンスキャッシュ」タブを開き,
「レコード密度」…「プレビュー」
「スクリーンスケール」…「オフ」
としておきます.品質は低いですが,計算が速いのでテスト用にはこれくらいで十分です.
レンダリングしてみましょう.これでいきなり問題が発生します.極端に明るい箇所がちらほらあります.結論から言うとこれはコースティクスによるものですので,これをなんとかしないと綺麗な絵にはなりません.
コースティクスについて
コースティクスというのは光が水面のような屈折物を透過したりした際に発生する「屈折コースティクス」と,反射した際に発生する「反射コースティクス」があります.さらにその光が空間を通過する際に見ることができる「ボリュームコースティクス」というものもあります.水中に見えているのは「屈折コースティクス」によるものです.
通常,コースティクスはほとんど気にしないのですが,このチュートリアルのように屈折を多く占めるようなシーンでは問題になってきます.モヤモヤになる原因はGI設定が低いからですが,だからと言ってGI精度をあげてもそこまで綺麗にならず,上げすぎると簡単なシーンにも関わらずレンダリング時間が伸びる一方です.
以下の例は簡単な屈折コースティクスの例ですが,計算精度をあげないと綺麗なコースティクスを得るのは難しいです.左側の画像はGI設定はデフォルトで25秒でレンダリングは終わりますが,コースティクスはややムラがあり,ディテールもぼやけています.右側の画像はGI設定をかなり上げたのでチューブの下あたりはよりディテールのあるコースティクスになった反面,レンダリング時間は4分と,実に8倍以上の時間がかかりました.
このシンプルなシーンでこれだけ時間がかかったのですから,水面を屈折してより複雑なコースティクスを綺麗に描画するには...と思うとこれは時間をかければできるが,現実的ではないと言えると思います.ではどうするかというと,GIで計算するコースティクスは「オフ」にします.「レンダリング設定」の「グローバルイルミネーション」の「オプション」を開き,
「屈折コースティクス」…「オフ」
にします.GIによる屈折コースティクスはデフォルトでオンになっています.通常はほとんど気にしなくても良いですが,こういったシーンではオフにするのも手段のひとつです.ただ,オフにすると当然ながら屈折コースティクスがなくなるので不自然な見た目になってしまいますから,気にならないレベルならオンのままでもよいでしょう.特に今回のプールではオフの方が良さそうです.
さて,これで屈折コースティクスがなくなってしまいました.実は今オフにしたコースティクスはCinema 4Dの「GIコースティクス」と呼ばれるGI計算によって描画されるコースティクスです.もう一つ,「フォトンコースティクス」という別のコースティクス描画機能があるので,水面からの屈折コースティクスは後者の「フォトンコースティクス」で描画していきます.
GIコースティクスはGIをオンにするだけで屈折コースティクス(反射コースティクスデフォルトでオフになっている)を描画してくれるので楽なのですが,今回のようなシーンでは邪魔になってしまうこともあります.本当に必要なコースティクスであれば品質をあげてレンダリングするしかないですが,あまり重要でない,または品質をあげても良くならないような場合は思い切ってオフにしても良いでしょう.特にアニメーションではコースティクスがフレーム単位で計算結果が変わりチラつきの原因となります.
とはいえ,今回は水面の屈折コースティクスがないと絵としてはかなり物足りないので,「フォトンコースティクス」を使って追加していきます.
フォトンコースティクスの原理
フォトンコースティクスを使うためにはいくつかの手順を行う必要があり,少々手間がかかります.原理は光源からフォトン(光子)を放出させます.フォトンは光源から飛んでいきサーフェイスにぶつかります.もし屈折や鏡面反射の場合はフォトンはさらに進みますが,フォトンエネルギーが低くなった所で計算を打ち切ります.屈折や反射を経たフォトンは同じ個所に集中することがあり,そこが明るくなる,つまり集光模様として現れてきます.
これからCinema 4Dのフォトンコースティクスを使いますが,実のところCinema 4Dのフォトン計算はそこまで性能がよくない(と思っています…)ため,あまり複雑なシーンではそもそも使わないことの方が圧倒的に多いですので,ここからはあまり実戦的ではないのですが,サードパーティレンダラではコースティクスの機能が強力なレンダラもいくつかありますし,基本となる知識はほとんど同じですので全く役に立たない,ということもないかなと思います.
これをレンダリング手法のひとつでフォトンマッピングと呼びます.興味がある方は検索してみるとよいでしょう.
ライティング
フォトンを放出するためにはライトオブジェクトが必要です.GIコースティクスではないため,空や発光マテリアルのライトにはフォトン設定がありません.フォトンコースティクスを使う場合は必ずライトオブジェクトを使用することになります.
シーンに「無限遠ライト」を作成します.
無限遠ライトのパラメータを調整します.
座標
「P.X」…「600㎝」
「P.Y」…「800㎝」
「P.Z」…「0cm」
「R.H」…「90°」
「R.P」…「-50°」
「R.Z」…「0°」
一般
「影のタイプ」…「エリア」
にします.
無限遠ライトは基本的に位置は関係なく,向きだけが重要と「作って覚えるシリーズ 基礎チュートリアル」で書きましたが,フォトンを放射する場合はどこからフォトンを放射するのかを決める必要があるため,位置を斜め上にしています.
エディタ上で影を描画したい場合はエディタメニューの「オプション」→「影」をオンにします.
コースティクスを設定する
無限遠ライトの「コースティクス」タブを開き,
「サーフェイスコースティクス」…「オン」
「エネルギー」…「500%」
「フォトン数」…「3000000」
に設定します.エネルギーはフォトンの明るさを意味しています.コースティクスをより明るくしたい場合はもっと上げても良いでしょう.フォトン数は多ければコースティクスのディテールも出やすいですが,メモリを沢山使うので通常は100万程度を目安にしてみてください.今回はシーンがシンプルなので贅沢に300万にしています.これで無限遠ライトからフォトンが放出されるようになりました.しかしこのままレンダリングしてもフォトンコースティクスは描画されません.
レンダリング設定に「コースティクス」を追加する
フォトンコースティクスを描画するためには,「レンダリング設定」を開き,「特殊効果」から「コースティクス」を追加する必要があります.
これで準備ができました.レンダリングを開始すると,最初にフォトンの放射と計算が始まります.それが終わったら記録したフォトンを利用してピクセルを描画していきます.次のような画像になればきちんとフォトンの放射とコースティクス描画がされています.コースティクスが一部分しか描画されていないのは,無限遠ライトのサイズが小さいためです.今回は最終的に浮き輪周辺しか写さないのでこのままで問題ないですが,より広範囲にフォトンを放射する必要がある場合は,スケールツールで無限遠ライトのサイズを大きくます.しかしサイズを大きくするとより多くのフォトンを放射する必要がでてくるため,フォトンの設定も変更しなければなりません.この辺りの知識がフォトンコースティクスを使う際の難しさとも言えます.
マテリアルにもコースティクスの設定がある
ここまでの設定でもなかなか難解ですが,マテリアルにもコースティクスの生成・または受けるという設定があります.それはマテリアルの「GI設定」の中にあります.例えばプールの底面にはコースティクスを描画したくない場合は「コースティクスを受ける」を「オフ」にしたり,水面マテリアルの「コースティクスを生成」を「オフ」にすれば水面からのコースティクスはなくなります.
「半径」と「サンプル」も少し触れておきます.「半径」は記録されたフォトンから隣接するフォトンを探索する半径です.半径を大きくするとフォトンが少なくても比較的なめらかなコースティクスが描画できますが,レンダリング時間が長くなります.逆に小さくするとシャープなコースティクスを描画できますが,フォトンが少ないと小さな粒のような描画になってしまいます.
「サンプル数」は半径内にあるフォトンから明るさの平均を求める際に何個のフォトンを使用するかを決めます.「200」であれば,あるフォトンの半径内に500個フォトンがあったとしても200個しか使いません.サンプル数を上げるとコースティクスのムラが少なくなりますが,レンダリング時間が伸びます.さらに大きくしすぎるとコースティクス自体がボケてディテールがなくなっていきます.
フォトンコースティクスはこれらの各パラメータを調整しながら求めるクオリティにする必要があるため,フォトンマッピングの基本的な仕組みの理解に加えてCinema 4Dでの設定手順がやや難解である点で少し難しい機能だと思います.反対にGIコースティクスはこういった手順が不要なのである意味設定は簡単と言えますが,今回のようにGIコースティクスが邪魔になることもあり,そういった問題に直面した時の対処法を知っておくのは大事ではないかなと思っています.
今回はここまでです.
次回はいよいよ仕上げの最終回です. 作って覚える シミュレーション機能で浮き輪づくり 6