R14 照明基礎

レベル/ 対象者:基礎/CINEMA 4Dを少し使えて、GIの設定に困っている人
対象ソフトウエア、プラグイン:CINEMA 4D R14 Broadcast以上

わかる機能だけで作る。わからない機能はいじらない。

冨士 俊雄/ gtofuji@gmail.com
章番号 題名 内容、及び関連する章やサンプルファイル 作成日/注記
046 2_GIの詳細_2 しきい値、ぼけた鏡面反射、QMC、最小サンプル数、最大サンプル数、アンチエイリアス、ジオメトリ、ベスト、コンポジットタグ、AAの精度を指定、フィジカルレンダラー、サチュレーション、GIエリア、間接照明、エリア、GIエリアライト、GIエリアを個別サンプリング、全ピクセルでサンプリング、GIの精度、GIアニメーションの設定> 2013.2.5
Previous Top Next

Step 1

しきい値

 それでは、次に建物の内観に移ります。サンプル046aを開いてレンダリングしてください。046aは、前の章の045eと基本的に同じです。

図046-1

 

 レンダリング時間は「17秒」でした。同じレンダリング設定で同じシーンをレンダリングしても、カメラの位置によってレンダリング時間は3倍も変わるのです。これは、建物の内部に入ったことによって光が何度も反射され、計算量が増えているからです。GIのサンプルポイントを計算するためのストカスティックサンプルも増えていますし、サンプルポイント自体の数も増えています。また、空の部分が減ったことでレイトレーシングの計算も増えています。


 それでは、次に壁や床の白いマテリアルに「ぼけた鏡面反射」を適用してみましょう。現実には、壁や天井の全面に鏡面反射を適用するケースは稀ですが、床はほとんどのケースで鏡面反射させます。また、壁の一部がガラスになっているケースもよくあります。

図046-2

 

 レンダリング時間は「83秒」でした。ぼけた鏡面反射は、エリアシャドウ等とともにリアルな絵を作るために欠かせない重要な機能ですが、同時に非常に重い機能でもあります。実際、GIの計算よりもぼけた鏡面反射やエリアシャドウの計算の方が重くなる場合がよくあります。

 GIの計算は、最適化すればかなり速くなりますが、ぼけた鏡面反射はあまり変わりません。理由は、(IRモードの)GIが解像度を下げたりピクセルを飛ばしながら計算するのに対して、ぼけた鏡面反射やエリアシャドウは全てのピクセルをまじめに計算するからです。

 ただし、GIと違って絵が破綻したり極端に遅くなることがないので、設定は楽です。同様にQMCモードのGIも全てのピクセルを計算するので、遅い代わりに絵が破綻しません。

 ぼけた鏡面反射は、二つのパラメータで最適化します。

図046-3

 

 まず、マテリアルの鏡面反射チャンネルの「最小サンプル数」と「最大サンプル数」の値を小さくします。「サンプル数」というのはシーンを調べるために飛ばす光の「本数」だと考えてください。

 デフォルトは、「100%の鏡面反射に100%のライト」といったコントラストの高いシーンを想定しているので、高めの値になっています。つまり、このシーンのように暗い照明と弱い鏡面反射の場合は下げても問題ありません。サンプル数を下げることで、レンダリング時間は「55秒」になりました。

 

 次に、レンダリング設定の「オプション -> しきい値」の値を「0.1%」から「1%」に上げます。「しきい値」というのは、「この値より光が弱くなったらそこで計算を打ち切る」という値です。この値を「0」にすると、打ち切りは発生せず、下にある「光の計算回数」、「鏡面反射の計算回数」、「影の計算回数」にしたがって、全ての光が計算されます。

 この値はデフォルトで「0.1%」になっていますが、やはり細かすぎです。私の経験によれば、ほとんどのシーンは「1%」で十分ですし、鏡面反射が目立つシーンでも「0.5%」で十分です。この値を「1%」にすると、レンダリング時間は「38秒」と当初の半分以下に短縮されます(サンプル046b)。

 

 

Step 2

アンチエイリアス

 次にアンチエイリアスに関して説明します。

 実は、046bのシーンには透明なオブジェクトが少ないので、アンチエイリアスは「ジオメトリ」で十分です。「ジオメトリ」というのは、「オブジェクトのエッジ(ジオメトリ)に16*16のアンチエイリアスを適用し、その他には適用しない」というモードです。

 しかし、ガラス越しに室内を見るような位置にカメラを移動すると、エッジがギザギザになります。これは、ジオメトリモードが、透明なオブジェクトの先や、鏡面反射して見えるエッジを「ジオメトリと見なさない」ためで、特に細い目地などでちらつきが目立ちます。

図046-4

 

 そこで、アンチエイリアスのモードを「ベスト」に変えてレンダリングしてみます。ベストにすると、全てのピクセルにアンチアイリアスが適用されます。

 分割数をデフォルトの「1*1」と「4*4」にした場合、レンダリング時間は「32秒」から「44秒」と少し長くなりますが、エッジはそれなりにきれいになります。実際、アニメーションの仕事では「ベストの1、4」より高いアンチエイリアスを使うことはまずありません。より軽い「ベストの1、2」を使うこともよくあります。

 ここで「1*1」と「4*4」は「最小レベル」と「最大レベル」です。そして、隣り合ったピクセルの値の差が「AAのしきい値」より大きい場合は、ピクセルが「最大レベル」で分割され、小さい場合は「最小レベル」で分割されます。

 

 次に、「ベストの2、8」にした場合、レンダリング時間はいきなり「173秒」になります。画質はかなりよくなりますが、現実的とは言えないレンダリング時間です。品質を「ベストの2、4」にしてもレンダリング時間は「153秒」とほとんど変わりません。

 標準レンダラーのアンチエイリアスの最大の問題点がここにあります。例えば、分割数「1」よりきれいにしたいが、分割数「2」だと遅いので、分割数を「1.5」にしたい、と思ってもそれはできません。つまり「中間がない」のです。

 


 このような場合、唯一の対策法はコンポジットタグを使って「オブジェクト単位でアンチエイリアスの精度を変える」ことです。

図046-5

 

 レンダリング時間が「145秒」に短縮されました。この絵ではガラスの部分が大きいのであまり短縮できていませんが、ガラスの部分が少ない絵では、この方法で画質を落とさずにレンダリング時間を数分の一に短縮できます。

 コンポジットタグを使ってアンチエイリアスの精度を変える場合、まず該当するオブジェクトにコンポジットタグを適用します。そして、「AAの精度を指定」オプションをチェックし、「AAの最小最大サンプル数」を指定します。次に、レンダリング設定に戻って「アンチエイリアス -> 最小最大レベル」を指定します。

 このようにすると、コンポジットタグが適用されたオブジェクトはコンポジットタグの値で、それ以外の全てのオブジェクトは、レンダリング設定の値でレンダリングされるようになります(サンプル046c)。

 
 この絵をレンダリングすると、私が041章で書いた「複雑なレイトレーシングを組み合わせてシーンを作っていくと、いつの間にかGIを使うのと変らない計算時間がかかるようになる」という言葉の意味がよく分かると思います。046-5の絵では、プレパス計算に「7秒」しかかかっていませんから、実にGIの20倍以上の時間をレイトレーシングの計算に費やしていることになります(厳密には、GIのサンプルポイントを補間する作業が、レイトレーシングの計算に混ざっています)。

 

 

Step 3

フィジカルレンダラー

 アンチエイリアスを高速化するもう一つの方法は「フィジカルレンダラー」を使うことです。もちろんフィジカルレンダラーはアンチエイリアスを高速化するために開発されたものではありませんが、私の場合はアンチエイリアスが決め手になってフィジカルレンダラーを使っています。

 ただし、アンチエイリアスが難しくないシーン、具体的にいうとガラスが少ないシーンでは、標準レンダラーの方が高速で、画質も優れています。

 それでは、フィジカルレンダラーを使ってレンダリングしてみましょう。

図046-6

 

 レンダリング時間は「53秒」でした。フィジカルレンダラーを使うと、ジオメトリに相当する部分は少し荒くなりますが、ベストに相当する部分の画質はかなりよくなります。レンダリング速度は、標準レンダラーのジオメトリよりは遅いですが、ベストよりは速いといった感じです。

 そして、フィジカルレンダラーの最大の利点は、「中間がある」ということです。フィジカルレンダラーはピクセルに関係なくサンプリングするので、「1ピクセルあたり1.5個サンプリング」といった設定が可能です。つまり、「ちょっと上げる」とか「ちょっと下げる」という操作が可能なわけです。


 ただし、フィジカルレンダラーには欠点もあります。まず、サンプル数をシーン全体に対してしか指定できません。つまり、これまでライトやマテリアル単位で細かくサンプル数を指定していた、エリアシャドウやぼけた鏡面反射といった機能を個別に調整できないのです。同様に、コンポジットタグを使ってアンチエイリアスの精度を個別に変えることもできません。

 まあ「簡単」といえば簡単なんですけどね(サンプル046d)。

 フィジカルレンダラーのサンプル数は、レンダリング設定の「フィジカル -> サンプリング品質」で指定します。それではサンプリング品質を変えてレンダリングしてみましょう。

図046-7

 

 レンダリング時間は「216秒」でした。たしかに画質はよくなっていますが、それ以上に時間がかかっています。とても実用的とはいえません。

 というわけで、フィジカルレンダラーを使う場合はサンプリング品質「低」を基本にするといいでしょう。必要に応じてそこから少しだけ値を上げるか、もしくは解像度自体を上げてレンダリングし、後で縮小すると効率よくきれいな絵を作れます。

 

 

Step 4

サチュレーション

 次に室内に戻ります。そして、壁や天井を鏡面反射無しのマテリアルに戻し、床の色をオレンジに変えてみましょう。

図046-8

 

 床のオレンジが部屋全体に盛大に「色映り」しています。これは決して間違いではないのですが、絵的にはよくありません。理由は、このような環境に置かれると、人間の目は自動的にオレンジを弱めて見るようにできているからです。

 もちろんレンダリング後に色補正をかけてもいいのですが、そのままだと、床のオレンジまで補正されてしまいます。そこでGIの機能を使って、床のオレンジはそのままに壁の色移りだけを弱くしてみましょう。

図046-9

 

 オレンジのマテリアルの「GIと照明モデル -> GIを生成」の右にある「サチュレーション(彩度)」を下げると、オレンジのマテリアルが生成する間接光の強度はそのままで、彩度だけを下げることができます。これは、物理的には不正な操作ですが、絵作りの機能としては非常に有用です(サンプル046e)。

 

 

Step 5

GIエリア

 次に、夜景に移ります。サンプル046fを開いてレンダリングしてください。

図046-10

 

 このシーンを夜景にするには、次の二つの操作が必要です。

1. 背景を暗くする。

2. 建物にライトを付ける。

図046-11

 

 背景は、空オブジェクトに適用したマテリアルを複製し、色を暗くして差し替えます。暗いので、GI用とレンダリング用は分けませんでした。

 ライトは、今回は「間接照明」にしました。理由は、間接照明の設定が一番難しいからです。間接照明をきれいにレンダリングできるようになれば、その他の照明も全てきれいに表現できるはずです。

 一般的に間接照明は、GIと発光するマテリアルを使って表現します。もちろんライトオブジェクトを使って間接照明を表現することもできますが、間接照明に使われる蛍光灯やテープ状のLEDを表現するにはライトの「放射タイプ」を「エリア」にする必要があります。

 「エリア(ライト)」というのは、実は多数の点光源やスポットライトを並べたもので、設定が難しくレンダリングも決して速くありません。このような場合は、ライトオブジェクトではなく発光するマテリアルを使った方が、作るのもレンダリングするのも楽だと思います。


 ただし、043章で説明した通り、発光するマテリアルを使うとGIの計算が難しくなり、明るさにムラが出ます。そしてこのムラはアニメーションを作った時に致命的なちらつきとなります。そこで、マテリアルの中の「GIと照明モデル -> GIエリアライト」オプションをチェックし、この発光するオブジェクトを注目するようにレンダラーに命令します。

 さらに、ここではレンダリング設定の「グローバルイルミネーション -> サンプリング -> GIエリアを個別サンプリング」の中にある「全ピクセルでサンプリング」オプションをチェックしてみましょう。

図046-12

 

 このオプションを使うと、レンダリング時間が延びますが十分にシャープな影を描かせることができます(サンプル046g)。

 

 

Step 6

GIの精度

 前のステップで説明したGIエリアは非常に強力な機能ですが、欠点もあります。

1. 「直接見える」部分(つまり一次光)にしか働かない。

2. 結構重い。

 つまり、そもそも「直接見えない」ことを良しとする間接照明には向かない機能なのです。
この点についてもう少し調べてみましょう。

 サンプル046gで室内に戻ってレンダリングしてみます。

図046-13

 

 レンダリング時間は「132秒」でした。画質はいいものの、レンダリングはかなり重くなっています。これは「カスタムサンプル数を使う」オプションを選択し、適切な「サンプル数」を指定することで多少改善できます。

図046-14

 

 影が少し荒くなりましたが、レンダリング時間を「80秒」に短縮できました。

 

 

Previous Top Next