R14 照明基礎

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

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

冨士 俊雄/ gtofuji@gmail.com
章番号 題名 内容、及び関連する章やサンプルファイル 作成日/注記
048 4_GIのアニメーション

フルアニメーション、ちらつき(フリッカー)、IR(静止画)、カメラアニメーション、IR(カメラアニメーション)、キャッシュファイル、自動読み込み、固定、プレパスのみ、GIの計算結果(イラディアンスキャッシュ)、全ピクセルでサンプル、GIアニメーションの設定

2013.1.16

Previous Top Next

 

Step 1

フルアニメーション

 GIにおいて「フルアニメーション」というのは、オブジェクトやライトやマテリアルが変化するアニメーションを意味します。

 オブジェクトやライトが変化するというのは、つまり「フレームごとに照明が変化する」ということです。したがって、フレームごとにGIの計算をやり直す必要があり、その誤差が不快な「ちらつき(フリッカー)」となって現れます。

 このちらつきを抑えるために、GIでフルアニメーションをレンダリングする場合は、静止画をレンダリングする場合に比べてGIの計算精度をかなり上げる必要があります。その結果、一枚当たりのレンダリング時間は10倍ぐらいになります。

 しかし、注意するのはその点だけです。フルアニメーションだからとか、NETだからといって何か特別な指定をする必要はありません。フルアニメーションといっても、それは単に「IR(静止画)」モードでレンダリングした絵を並べただけのものです。047章のステップ7でレンダリングしたムービーも、フルアニメーションです。

 

 

Step 2

カメラアニメーション

 GIにおいて「カメラアニメーション」というのは、オブジェクトやライト、マテリアルが変化しないアニメーションを意味します。つまり、変化できるのはカメラだけです。

 カメラアニメーションのいいところは「照明が変化しない」ことです。つまり、一つの「GIの計算結果」を全てのフレームで再利用できるのです。これには二つの大きな利点があります。

a1. GIの計算結果を再利用できるので、レンダリング時間が数分の一になる。

a2. GIの計算結果を再利用できるので、ちらつきが発生しない。

 このような理由から、特に建築や内装の仕事ではカメラアニメーションがよく使われます。これらの仕事では、非常に複雑なオブジェクトとマテリアルを扱うので、GIのフルアニメーションをレンダリングするのが困難だからです。


 ただし、一つ問題があります。「GIの計算結果を再利用する」というのは、つまり「前のフレームの計算結果を読み込んで、現在のフレームの計算結果を追加して保存する」ということです。したがって、順番に関係なく複数のフレームを同時に計算していくNETでは、原理的に無理なのです。

 というわけで、NETを使う場合でも「GIの計算結果を再利用する」という作業は1台のコンピュータで実行する必要があります。そして、それを自動的にやってくれるのが「IR(カメラアニメーション)」モードです。


 「IR(カメラアニメーション)」モードを指定してNETを実行すると、NET Serverはまず全てのNET Clientに対して「全てのフレームに対するGIの計算」を命令します。通常のNETでは、フレーム単位で作業を分割してNET Clientごとに違う作業を割り当てますから、これは特殊な命令です。

 そして、一番速いNET ClientがGIの計算を全て終了すると、それをNET Serverに送ります。すると、他のNET ClientはGIの計算を中止し、NET ServerからGIの計算結果をもらって最終レンダリングを始めます。ここから先は通常のネットワークレンダリングになりますが、そこまでに遅いNET Clientが計算したGIの結果は全て捨てられ、無駄になります。


 その結果、次のような問題が発生します。

b1. GIの計算を分割できず、NETのパワーを生かせない。

b2. したがってGIの計算に長い時間(数時間から数日)がかかり、しかもその間絵が出てこないのでシーンの間違いに気がつくのが遅れる。

 特に、b2.の問題は非常に深刻です。「IR(カメラアニメーション)」モードを使う場合は、テストレンダリングをくり返して間違いのない完璧なシーンファイルをNETに送るようにして下さい。

 

 というわけでGIのカメラアニメーションを実行するには次の三つの方法が考えられます。状況に応じて適切な方法を選んで下さい。

c1. 速いコンピュータ1台と遅いコンピュータ2台、というような小さなNET環境の場合は、NETを使わず速いコンピュータ1台で全てレンダリングする。

 レンダリング時間は長くなりますが、計算の進行状況が画面に表示され、NETを他の作業に使えるという利点があります。

c2. 普通に「IR(カメラアニメーション)」モードでNETを使う。

 c1.よりレンダリング時間が短くなりますが、計算の進行状況がわからないので非常に不安になります。また、NETのパワーが無駄になるとか、シーンの間違いに気がつくのが遅れるという欠点もあります。

c3. 特殊な設定にして「「IR(静止画)」モードでNETを使う。

 c2.よりさらにレンダリング時間が短くなり、しかもNETをスタートした後すぐに絵が出てくるのでシーンに間違いがあってももすぐに気がつきます。また、NETのパワーも全て生かされます。

 この特殊な使い方について次のステップで説明します。

 

 

Step 3

特殊なカメラアニメーション

 CINEMA 4Dは、GIの計算をする時に次の三つの方法のいずれかを使います。

1. 新規にGIの計算をする。

2. 既にあるGIの計算結果を読み込み、足りない部分についてだけ新規にGIの計算をする

3. 既にあるGIの計算結果を読み込み、そのまま使う。つまり新規にGIの計算をしない。

 どの方法を使うかは、レンダリング設定の「グローバルイルミネーション -> キャッシュファイル」ページで指定します。デフォルトでは、「1. 新規にGIの計算をする」ようになっています。フルアニメーションの場合は、フレーム毎に新規にGIの計算をする必要があります。

図048-1

 

 ここで、「自動読み込み」オプションをチェックすると「2. 足りない部分についてだけ新規にGIの計算をする」ようになります。もしGIの計算結果が存在しない場合は、「全ての部分が足りない」と判断され、全ての部分に対して新規にGIが計算されます。

 さらに、「固定」オプションをチェックすると、「3. 新規にGIの計算をしない」ようになります。もしGIの計算結果が存在しない場合は、GIのない絵が出てきます。


 2.と3.の機能は、昔コンピュータの速度が遅かった頃に、「毎回GIの計算をするのは大変なので、シーンやカメラの変更が小さい場合にGIの計算結果を再利用できないか」と考えて作られたものです。つまり、アニメーションのための機能ではないのですが、「GIの計算を再利用する」というアイディア自体は共通なので、少し工夫することでカメラアニメーションに使えます。

 もしくは、この機能をアニメーション向けに自動化したものが「IR(カメラアニメーション)」モードだと言えます。そして今から説明するのは、「IR(静止画)」モードを使って、これをマニュアルで実行する方法です。


 この方法では、シーンファイルをNETに送る前に「数フレーム」だけGIの計算を行います。前のステップで説明した「IR(カメラアニメーション)」モードでは「全てのフレーム」の計算を行うので、この点だけが違っています。

 それでは、「数フレーム」というのは具体的にどれだけなのか、と言うと、そのアニメーション全体を見渡せる数フレームです。まず、アニメーションの始点と終点は必要ですし、途中で曲がり角があればそこも計算する必要があるでしょう。また、これから説明する回転のアニメーションであれば、前後左右の4フレームを計算する必要があります。

 

Step 4

GIの計算

 

 それでは実際にサンプルを使ってレンダリングしてみます(サンプル048a)。

 まず、GIの計算を再利用することによってどのぐらいレンダリングが速くなるか見て下さい。

図048-2

 

 デフォルトのまま(つまりフルアニメーションモードで)GIを計算すると、フレーム毎に「32秒」かかっています。しかもこの設定ではちらつきが出るので、実際にはこの何倍もの時間をかける必要があります。

 ところが、「自動読み込み」オプションを入れるとGIの計算結果が再利用されるようになり、2枚目以降の計算が「9秒」で終わっています。しかもちらつきは出ません。

 次に、GIの計算を数フレームだけ実行します。

 この作業は少し特殊なので、注意して行って下さい。

図048-3

 

1. まず、とびとびにレンダリングするので、レンダリング設定の「出力 -> フレームレンジ」を「現在のフレーム」に変更します。

2. 次に、画像は必要ないので、「保存 -> 保存」のチェックを外します。

3. 次に、「グローバルイルミネーション -> キャッシュファイル -> プレパスのみ」をチェックします。これによってGIの計算とは関係ない最終レンダリングが省略されます。


 この状態でタイムマーカーを「フレーム0」に移動し、「画像表示にレンダリング」ボタンを押すと、シーンファイルの横に「illum」フォルダができ、その中に「car.gi」というファイルができます。これが「GIの計算結果(イラディアンスキャッシュ)」です。

 次に、タイムマーカーを「フレーム75」に移動すると、自動車が90度回転します。この状態でレンダリングすると、car.giのファイルサイズが「15.5MB」から「22.9MB」に増えます。ファイルが大きくなったのは、足りない部分(見えない部分)について新規にGIの計算が行われ、追加されたからです。

 この操作を180度と270度回転させた状態に対してくり返します。すると、car.giのファイルサイズは「34.5MB」になります。だんだんファイルサイズの増分が減ってきました。これはつまり、「このGIの計算結果はもう十分だ」ということです。

 

 

Step 5

NETの計算

 

 それでは、NETの計算に移ります。

図048-4

 

 まず、前のステップで変更したレンダリング設定を元に戻します。

 次にJobを作成し、シーンファイルとテクスチャファイル、そしてGIの計算結果を入れて下さい。GIの計算結果は、「照明を表現するための特殊なテクスチャ」だと思って構いません。

 次にブラウザを開き、Jobを確認した後実行します。

 するとNETがスタートし、すぐに画像ができてきます。この画像は.b3d形式なので、Photoshop等では開けません。CINEMA 4Dの画像表示ウインドウで確認して下さい。

 レンダリング時間は「32分」。300フレームですから一枚当たり「6秒」でした。

図048-5

 

 

Step 6

その他のサンプル

 

 ステップ4のサンプルでは、レンダリング時間を短くするためにレンダリング設定やマテリアルを省略しています。

1. 影をシャープにするには、レンダリング設定で「グローバルイルミネーション -> サンプリング -> 空/スカイを個別サンプリング -> 全ピクセルでサンプル」オプションをチェックします。

図048-6

 

 サンプル048b

 こうすると、 レンダリング時間は「88分」にのびます。一枚当たり「18秒」です。


2. さらに屈折や鏡面反射するマテリアルを全て表現すると、レンダリング時間は「179分」にのびます。一枚当たり「36秒」です。

図048-7

 

 サンプル048c

 

 

Previous Top Next