R7でGI(グローバルイルミネーション、間接照明を表現する機能)が登場して10年以上経ちました。GIが出た当初はコンピュータが非力で、またGIの機能も十分でなかったため、なかなか仕事で使う機会はありませんでした。現在では設定もレンダリングも簡単になり、私はアニメーションを含めてほとんどの仕事でGIを使っています。言っても世の中全体を見渡せば、まだまだ「GIは難しい」、「GIは遅い」と言っている人がたくさんいます。それにはおそらく二つ原因があります。ソフトが悪い確かに現在でもGIを使えない3DCGソフトがあります。GI機能があっても、とても実用的とはいえないソフトもあります。4DのGI機能はR12以降十分実用的です。安心して使って下さい。ユーザが悪いGIは魔法ではありません。CADソフトから軸もUV座標もないポリゴンの塊を読み込んで、GIをかければすぐにフォトリアルな絵ができる、というような簡単なものではありません。マテリアル、アニメーション」、「モデリング、テクスチャ」、「レンダリング設定、コンポジット設定」などあらゆる段階で従来以上に丁寧な作業が必要になります。フォトリアルな絵は、それらの作業の結果です。この講座では、GIの使い方について、サンプルを使って具体的に説明します。後半では、TeamRenderを使ったGIアニメーションのレンダリングについて説明します。最後に、コンピュータのパワー(計算速度)についてお話ししておきます。「GIが遅いのはコンピュータが遅いから」とか、「GIの計算には速いコンピュータが必要」という人がいます。これは間違いではありませんが、あまり意味がありません。GIの設定が悪ければ、どんなに速いコンピュータを持ってきてもいい絵はできません。重要なのは、コンピュータのパワーではなくGIの設定です。どんなに速いコンピュータを持ってきても、一台でGIのアニメーションをレンダリングするのは無理です。仕事の規模に応じて適切なネットワークレンダリング(NETやTeamRender)を組む必要があります。小さなコンピュータでもたくさん集まれば強力なネットワークレンダリングを構築できます。2オブジェクトバッファそれでは、早速サンプルを開いてレンダリングしてみましょう(サンプル071a)。図071-1レンダリング時間は「21秒」でした。照明基礎」で使ったサンプルファイルを拡張したものです。これをベースにして、照明基礎では説明できなかった細かい設定について、この章と次の章で説明していきます。多くの仕事では後で行う合成の過程で、背景の全て、もしくは一部をマスクする必要があります。昔は「背景を置かずにアルファチャンネルを出す」という簡単な方法でマスクを取り出していました。GIを使う場合、自然な照明や映り込みを表現するために全ての方向に背景(環境)を置く必要があります。そのままではアルファチャンネルを取り出せません。このような場合、コンポジットタグを使えば背景をカメラから不可視にしてアルファチャンネルを取り出すことができます。アルファチャンネルには「一枚しか取り出せない」、「空オブジェクトを抜けない」等の制約があるので、現在ではほとんど使いません。その代わりに「オブジェクトバッファ」という機能を使います。オブジェクトバッファは、「指定したオブジェクトに対してマスクを付ける」という機能で、何枚でも作れます。空オブジェクトに関する制約もありません。指定したオブジェクトが屈折して見える部分にもマスクを付けてくれます(鏡面反射して見える部分には付きません)。それではオブジェクトバッファを指定します。図071-2オブジェクトバッファを指定するには、まずマスクを付けたいオブジェクトに「コンポジット」タグを適用し、マスクのID(番号)を指定します。次に、レンダリング設定でマルチパス機能を選択し、「オブジェクトバッファ」レイヤを追加し、コンポジットタグで指定したIDを入力します。一つのオブジェクトに複数のIDを付けることもできます。複数のマスクを出したい場合は、必要な数だけオブジェクトバッファレイヤを追加します。レンダリングが終わったら、画像表示ウインドウの表示を「レイヤ」に切り替え、表示方法を「シングルパス」に設定します。この状態でRGBやマスクのプレビューをクリックすると、そのチャンネルだけが表示されます。出力」ページにマルチパス画像の「名前」や「フォーマット」を指定する部分が表示されます。3コースティクス次に、コースティクスについて説明します。コースティクスはマイナーな機能で、普通ほとんど気にする必要はありません。このサンプルはコントラストが高いHDR画像を背景に使っているため、建物の周囲のプールの中に「屈折コースティクス」による問題が生じています。修正しなければなりません。図071-3まず屈折コースティクス機能そのものについて説明します。屈折コースティクスを使うと、GIの計算でマテリアルの「屈折」が正しく評価されます。下の図071-4aは屈折コースティクスあり、図071-4bは屈折コースティクスなしの絵です(サンプル071c)。図071-4a図071-4bレンダリング時間は、屈折コースティクスを働かせるだけならほとんど変わりません。したがって、この機能はデフォルトで働くようになっています。きれいな屈折コースティックスを得るには、それなりに設定を上げる必要があります。この場合、屈折コースティックス有りが「168秒」、無しでは「45秒」でした。上のサンプルぐらいならなんとかレンダリングできますが、さらにコントラストの強いシーンでは計算が難しくなり、ノイズやちらつきの原因となります。このような場合、その屈折コースティクスが絵的に必要であれば、設定を上げてレンダリングするしかありません。それほど重要でないのなら、屈折コースティクスを切ってしまうのも一つの手です。それでは、屈折コースティクスを切って絵がどのように変化するか見てみましょう。下の図071-5aは屈折コースティクスあり、図071-5bは屈折コースティクスなしの絵です。図071-5a図071-5b屈折コースティックスを外すと、水がない状態の影ができます。これは不自然ですが、ノイズはなくなります。どちらがいいかは絵を見て判断するしかありません。ちなみに、設定を上げると静止画として使える程度の絵を作ることができます。アニメーションにすると、やはりちらつくだろうと思います。レンダリング時間は「205秒」でした。図071-6コースティクスにはもう一つ「反射コースティクス」という機能があります。これは屈折コースティクスと似た機能で、GIの計算でマテリアルの「鏡面反射」が正しく評価されます。この機能は屈折コースティクスより計算が難しく、ノイズも目立つのでデフォルトでは働かないようになっています。下の図071-7aは反射コースティクスあり、図071-7bは反射コースティクスなしの絵です。図071-7a図071-7b金属の鏡面反射を特に強調したいような場合にのみ、覚悟して使うといいでしょう。レンダリング時間は、反射コースティックス有りが「129秒」、無しが「32秒」でした(サンプル071c2)。次に、空オブジェクトにグラデーションシェーダを適用したシンプルな環境(背景)について説明します。照明基礎」ではIBL(イメージベースドライティング、画像を使った背景)について説明しましたが、リアルな写真よりもシンプルな背景を使った方が判りやすい絵を作れる場合がよくあります。機械やプロダクトの仕事で部品だけの絵やカットモデルを作る場合などです。建築や内装の仕事でも、カットモデルや天井を省略した絵を作る場合、環境はシンプルな方が適しています。その他、シンプルな背景は、GIの設定が簡単でレンダリングも速いので、制作途中のオブジェクトやマテリアルのチェックにもよく使います。それではシンプルな背景を作ってみましょう。図071-8まず新規マテリアルを作成し、発光チャンネルにグラデーションシェーダを追加します。グラデーションの向きを縦に変更し、適当なグラデーションを指定します。これを空オブジェクトに適用すれば、シンプルな背景が完成です。シンプルすぎて立体感や構造がよくわからない絵になってしまいました。そこで、空オブジェクトを回転させ、照明を偏らせます。「床」オブジェクトを追加し、下から来る光を制限します。これで少しよくなりました。床オブジェクトを追加する場合は、空オブジェクトに適用したオブジェクトバッファと同じIDのオブジェクトバッファを適用することを忘れないで下さい。次に、マスクを作っておけば背景の色は後からどうにでも変えられます。背景は白(もしくはある特定の色)と決まっている場合も多いでしょう。そのような場合は、GIの照明に使う背景とレンダリングする背景を分けることによって、背景を合成する手間を省けます。背景の表示を切り分けるには「コンポジット」タグを使います。GIの照明に使う空オブジェクトは、「GIから見える」だけをオンにして他は全て切ります。レンダリングに使う空オブジェクトは、「カメラから見える」と「鏡面反射/屈折から見える」だけをオンにして、他は全て切ります。床オブジェクトは「GIから見える」と「鏡面反射/屈折から見える」だけをオンにして、他は全て切ります(サンプル071d)。背景に極端な色を適用し、オブジェクトの面を強調するような使い方もできます(サンプル071e)。5アンビエントオクルージョンもう一つ、オブジェクトの立体感や構造を強調するための機能として「アンビエントオクルージョン」があります。GIは、間接光を計算してシーン全体を明るくしていくため、ややもすると絵が眠くなりがちです。アンビエントオクルージョン(AO)は、基本的にはGIの機能ではなくマテリアルの性質を変える「シェーダー」ですが、眠くなったGIの絵をシャープにする目的でも使えます。事実上、「GIを使う場合、必ずAOも使う」と考えて差し支えありません。それではAOを追加してみましょう。図071-10オブジェクトの面が内側に折れている部分や目地等が暗い線で強調され、立体感や構造がよりわかりやすくなりました.下の図071-11aはAO有り、図071-11bはAO無しの絵です(サンプル071f)。図071-11a図071-11bAOの基本的な働きは、「周囲を壁に囲まれた、奥まった部分の性質を変える」ことです。普通は、奥まった部分を暗くします。AOはマテリアルとレンダリング設定の二カ所で指定できます。マテリアルに適用したAOは、オブジェクトの色や明るさだけでなく、透明度やバンプ、アルファ等いろいろな性質を変えられます。AOの効果が生じるのはそのマテリアルを適用したオブジェクトだけです。これに対して、レンダリング設定に適用したAOは、オブジェクトの明るさだけを変えます。全てのオブジェクトに対して効果が生じます。AOとGIの計算方法や結果はよく似ていますが、二つの点で異なっています。GIは周囲の照明を調べて計算するが、AOはオブジェクトの形状しか調べない。AOはライトや環境を考慮しないので、GIに比べて計算が簡単できれいです。GIは距離の二乗に反比例して光を減衰させるが、AOはグラデーションを使って自由に減衰を指定できる。絵作りのための機能としてはAOの方が優れています。このような理由から、AOをGIの補助として使うわけです。「奥まった部分」というのは一般的に汚れがたまりやすく、また風化や劣化しにくいため、表に出ている部分に比べてオブジェクトの色自体が暗く、濃くなっているのが普通です。AOは、照明ではなく、この効果を表現するものだと考えるといいでしょう。実際、AOを強くかけると古ぼけた質感になり、AOを弱くすると新品の質感になります。最後に、GIの補助としてAOを使う場合は、忘れずに「透過を考慮」オプションを選択してください。AOは本来奥まった部分、つまり「オブジェクトの形状」を調べて値を変えるシェーダです。照明や光は関係ありません。デフォルトではそのオブジェクトに適用されたマテリアルの透明度やアルファを考慮しないようになっているのです。確かに、現実世界でもガラスの周囲には汚れがたまります。アルファで切り抜いた部分にまで汚れがたまるのは明らかに変です。透過を考慮オプションを使うと、透明な部分やアルファで切り抜かれた部分を「形状」に含めないようになります。下の図071-12aは透過を考慮あり、図071-12bは透過を考慮なしの絵です(サンプル071g)。