レンダリング時間の短縮Tips

今回はレンダリング時間の短縮方法について書いてみようと思います.レンダリング時間はアーティストにとって思いのほか時間のかかるもので,予想以上に長くなるとスケジュール全体に影響が出てしまうことになりかねません.Cinema 4Dの標準,フィジカルレンダラを使われている方も沢山いらっしゃると思いますので,今回は標準レンダラとフィジカルレンダラを使って静止画を主に作成されている方向けの内容でレンダリング時間の短縮Tipsを紹介していきます.

レンダリング時間は基本的に品質を上げれば長くなるので,短くしたい場合は品質とのトレードオフになってきます.しかし品質といっても慣れないうちはどこをどう調整すればそれが出来るのかが分かりにくいですよね.レンダリングに関する知識が少しあると,どこの計算に時間がかかるのかが分かってくるので,調整箇所もおのずと見えてきます.

1.マテリアル設定を見直す

不要な反射を設定していないか

鏡面反射はレンダリング負荷が大きくなります.絵の中で重要な要素となる箇所は反射設定しておいた方がリアルになりますが,あまり気にならない箇所や物に対しては反射をオフにしてデフォルトスペキュラのみで対応する方法もあります.例えば,Visualize付属のコンテンツライブラリの1Pソファ,シンプルな形状で扱いやすいですが落とし穴も潜んでます.生地のマテリアルの反射チャンネルを見ると,反射レイヤがPhongとなっています.これは鏡面反射計算をおこないます.さらにボケた反射設定になっている,このソファをシーン内の大部分を埋めるように配置すると鏡面反射の計算量が多くなり,レンダリング時間が長くなります.

1280*720で52分は遅いですね.

生地感など確かにリアルですが,用途によってはそこまでのリアルさが不要なこともあるはずです.このような場合は反射をスペキュラに変更してみましょう.スペキュラは鏡面反射ではないので,計算が早くなります.

ソファの生地の反射タイプを「スペキュラ ブリン(レガシー)」に変更してみます.あとこのソファにはステッチもしっかり作り込んでありました.ステッチは…マテリアルとは関係ないですが今回は不要だと判断して削除します.意外とこの効果は大きいです.

ステッチは削除するか非レンダリングに変更

スペキュラにしたことで先ほどより生地感はややなくなりましたが,15分になりました.ちなみにステッチがある場合は35分でした.小さいことですが結構大きな差がでます.

大幅に短縮できました

GGX or Beackmann

いろいろなプリセットマテリアルを見ていくと反射レイヤのタイプが「GGX」になっているものもあります.GGXは非常にリアルな反射の計算をしてくれますが,計算負荷は高いので,やはりそこまでリアルに計算しなくても良い場合はより早い「Beckmann」にしておくのも手です.

反射がリアルなGGX
リアルさでは若干劣るが早いBeckmann

アセットのマテリアルは一通り目を通して確認

購入したアセットなどはすでにマテリアル設定まで済んでいるものもありますね.すぐに使えてとても便利ですが,アセットモデルのマテリアルは時に重たい設定になっていることがあります.不必要に重たいマテリアルは簡素化しておきます.

例: 車のボディーマテリアル

ボディーはコーティングやフレーク塗装まで設定してあるもの,拡散反射レイヤを使用しているものもあるのですが,添景素材に使うならそこまでのものは不要ではないでしょうか.また,反射タイプもGGXになっていて,不要な場合はBeckmannに変更します.添景の質感にそこまでこだわる必要が無い場合は,極力シンプルな設定に変更していきましょう.

例: PBRマテリアル

プリセットマテリアルを使う場合にも注意が必要です.コンクリートやアスファルトなどは使いまわしがしやすく便利ですが,プリセットマテリアルの中にはPBRマテリアルのものも含まれています.例えばアスファルトマテリアルの一つは反射チャンネルがランバート拡散反射レイヤとBeckmannタイプの反射レイヤの構成になっていて,PBRマテリアルの構造になっています.この組み合わせはリアルですがレンダリング時間がかかるので,デフォルトスペキュラに置き換えると早くなります.アスファルトは外構の面積が大きいので,簡略化することでレンダリング時間を稼げます.またはこのようなプリセットを使用しない事を心がけます.

アスファルトを反射で計算している
カラーチャンネルを使う
カラーチャンネル+Bacmann反射レイヤのみ
PBRマテリアル構造:拡散反射レイヤと鏡面反射レイヤ

PBRマテリアルは少し時間がかかります.色味もカラーチャンネルと違いますね.これはPBRマテリアルが色も反射で表現しているためです.PBRマテリアルは後述するグローバルイルミネーションの計算においても,カラーチャンネルが無いため不都合がでるのでよく理解した上で使ってください.

例: 樹木の葉の鏡面反射

遠景のものならスペキュラで十分なので,鏡面反射レイヤはオフにしてスペキュラレイヤに置き換えます.

例: ボケた反射,屈折も必要な箇所に留める

ボケた反射やボケた屈折も遅くなります.どうしても必要な部分だけに使用するようにすればレンダリング時間の短縮につながります.

これら一つ一つは小さな効果ですが,レンダリング時間短縮のためにはこれらを積み重ねていくことも大事です.特にレンダリング領域の大部分を占めるようなものに複雑なマテリアルを適用しているとそれだけで一気にレンダリング時間が増加してしまいます.一度修正したマテリアルは使いまわしできるよう,コンテンツブラウザにプリセットに登録しておきましょう.

2. 影の描画を軽くする

影もレンダリング時間に影響してきます.影のタイプは「ソフトシャドウ」→「ハードシャドウ」→「エリアシャドウ」の順に計算負荷が高くなります.エリアシャドウはボケた影も描画できるので品質は高い反面,他の影より計算時間がかかります.ハードシャドウは影の位置は正確ですが,シャープな影しか描画できません.ソフトシャドウは計算は早く,影もボケますが,正確性は低くメモリ消費が多くなります.影は絵の要素としてとても重要ですが,ライトが増えていくとレンダリング負荷も大きくなるので,必要に応じて調整していきましょう.

エリアシャドウの品質を下げる

「標準レンダラ」の場合

各ライトオブジェクトの〈影〉タブを開き,〈計算精度〉,〈最小サンプル数〉,〈最大サンプル数〉で調整できます.通常〈最小サンプル数〉と〈最大サンプル数〉だけ調整すれば問題はありません.レンダリング時間を短縮したい場合は精度を下げる必要があるため,両者の数値を下げて2,8や4,64といった数値に調整します.精度を下げるとノイズが増えるので,下げすぎに注意します.

標準レンダラ エリアシャドウ1
標準レンダラ エリアシャドウ2

「フィジカルレンダラ」の場合

影の品質はレンダリング設定からシーン全体にかけて変更します.〈フィジカル〉にある〈影の分割数〉を下げます.デフォルトは2ですが,このシーンでは2以下の時にレンダリング時間がほとんど変わらなかったので,4と2で比較しています.

フィジカルレンダラ エリアシャドウ1
フィジカルレンダラ エリアシャドウ2

ソフトシャドウを使う

またはソフトシャドウを使う方法もありますが,メインの照明などに使うと影の正確性がなくなり絵的におかしな状態になる可能性があるので,十分確認してください.シャドウマップの品質は〈影〉タブの解像度を大きくします.デフォルトは250*250ですが,低いので背景に縞模様が発生しています.解消させるためには解像度を高くします.ただし,その分メモリを使うのでライトの数が多い場合は注意が必要です.

ソフトシャドウ1

3. オブジェクトの簡略化

ソファでステッチを削除したように,必要以上のディテールがある場合は削除するかレンダリングしない設定にしても良いでしょう.車なども台数が多い場合はオブジェクト内部の不要なパーツは削除したり,サブディビジョンサーフェイスが細かすぎる場合も適切な分割数に調整すると良いです.

4. レンダリング設定について

最も練習が必要なパートになると思います.まずレンダリング設定ですが,すべてのシーンで有効な設定はありません.シーンごとに適した設定をするように心がけていきましょう.慣れないうちは極力簡単なシーンで練習することをオススメします.また,本記事では建築静止画用途のため,グローバルイルミネーション(以下GI)を使用することを前提とし,そのモードはイラディアンスキャッシュ使用に限定した内容となります.

グローバルイルミネーション設定

拡散反射回数

GIを使う場合,セカンダリを設定すると拡散光のバウンス回数を設定できます.QMCとイラディアンスキャッシュでは最大8回,ライトマップは最大128回まで設定できますが,最大値が必要になるケースは皆無といっても良いでしょう.イラディアンスキャッシュの場合.適切な数値は2~4回ですが,回数が増えるとレンダリング時間も増えていくので注意が必要です.

屋内…2~4回

拡散反射回数をあげると光の反射回数が増えるため,暗い箇所が明るくなりリアルになります.拡散反射回数が増えるとレンダリング時間は徐々に長くなります.屋内でも3か4あれば十分だと言えますが,スピード重視なら2回にして画像処理ソフトで明るさを補正する方法をとっても良いかもしれません.

拡散反射回数の違い

屋外…2回

屋外はほとんどの場合で2で十分です.なぜなら屋外の場合,多くの反射光が空へ抜けていくためです.スピード重視の場合は,セカンダリを「なし」にして1回で終了させても良いかもしれません.

カスタムサンプル数とレコード密度

イラディアンスキャッシュの品質を決めるうえでサンプル数とレコード密度は重要なパラメータです.

イラディアンスキャッシュの仕組み

イラディアンスキャッシュというのは,オブジェクトの表面にシェーディングポイント(白い斑点)を作成し,各シェーディングポイントに照明による明るさを記録していく手法です.シェーディングポイント同士の間の明るさは補間されて描画されます.つまり照明計算を間引いて計算しているわけです.

シェーディングポイントの密度や間隔を調整するのが〈レコード密度〉で,各シェーディングポイントに記録する明るさの精度を〈サンプル数〉で決定しています.この両者のバランスが重要になってきます.どちらかが高すぎても,低すぎてもアーティファクト(モヤモヤしたノイズ)が発生するので,バランスよく調整しなくてはいけません.

シェーディングポイント

サンプルのカスタム設定のコツ

カスタム設定をする場合は「カスタムサンプル数」にして〈サンプル〉の左にある小さな三角マークを開くと自分で数値を指定できます.イラディアンスキャッシュでは64からはじめても良いでしょう.サンプル数が低すぎると各部にモヤモヤのノイズが現れます.これをアーティファクトといいます.モヤモヤが目立つ場合は64,128,256,512,1024などとあげていきますが(上げるときは倍くらいにしないと効果が分かりにくい),レンダリング時間はどんどん長くなるので注意してください.また,サンプルは後述のレコード密度とも密接に関係しているため,サンプル数とレコード密度はセットで調整した方が良いでしょう.

レコード密度のカスタム設定のコツ

レコード密度はパラメータが多いので戸惑うはずです.〈密度〉を上げるとシェーディングポイントの密度が増加するので,上げすぎるとレンダリング時間に影響がでます.慣れないうちは〈最小間隔〉と〈最大間隔〉を片方ずつ調整してみると良いでしょう.64,32,16,8と小さくしていくとシェーディングポイントの配置が変化します.

〈最小間隔〉はシーンの重要な箇所の間隔で,角や光が強く当たる場所の密度を調整できます.〈最大間隔〉はあまり重要でない平面や照明の変化がゆるやかな場所の密度を調整します.

設定の一例

拡散反射回数…3
サンプル数…64
レコード密度…20%
最小間隔…32%
最大間隔…32%

これは…さすがに汚すぎですね…

直接光が当たりにくい画像左上の入角あたりには計算誤差が多く,アーティファクトが目立つようですね. サンプル数が低すぎました.

サンプル数だけを512まで上げてみると

サンプル数512でなんとか見れそうだが,レンダリング時間が増えすぎた

まぁまぁ綺麗になってきましたが,反動でレンダリング時間が約5倍になってしまいました.目標はこの品質で時間を半分まで短縮したいと思います.レコード密度はこのままでもなんとかなりそうです.

レンダリング設定でサンプル数を上げると,シーン全体のサンプル数が上がることになります.そこでレンダリング設定のサンプルは「128」に押さえておきます.レコード密度もさっきと同じ状態です.このシーンでは壁と天井だけアーティファクトが多いので,この部分だけサンプル数をあげる設定にしましょう.壁と天井のオブジェクトにコンポジットタグを適用します (グループ化している時は親でも可)

コンポジットタグを選択し,〈GI設定〉にある,〈ストカスティックサンプルの倍率〉と〈レコード密度の比率〉を上げることで,タグが付いているオブジェクトだけ計算精度を上げることができます.シーン全体を上げるよりは効率がよくなります.壁と天井は〈ストカスティックサンプルの倍率〉を最大値の「1000%」に設定しています.(しつこく言いますが適切な値はシーンにより異なります)

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

通常この2つのパラメータはセットで上げた方が良いですが,やはりシーンによっては異なります.今回はサンプル数だけあげています.レコード密度の比率もあげると,サンプルが不足してアーティファクトが逆に目立ってしまいます.数値が決め打ちできないので,シンプルな形状で良いのでパラメータを変えつつどのような結果になるかを沢山テストしてみてください.

家具の精度は逆に下げてみる

家具にも〈コンポジットタグ〉を設定して,こちらは逆に〈ストカスティックサンプルの倍率〉と〈レコード密度の比率〉を「50%」まで下げてみます.(多少アーティファクトが出てもテクスチャや色が濃いので目立たないと判断したため)

結果

4分10秒になりました.パット見て分かるほど品質は落ちていませんが,レンダリング時間は50%以上はカットできました.

見た目は同じで50%以上早くなった

サンプル数をあげるとレンダリング時間も増加するので上げすぎに注意してください.イラディアンスキャッシュではアーティファクトのモヤモヤを完全に消そうとするとレンダリング時間がどんどん長くなるので,アーティファクトが気にならないレベルをテストレンダリングしながら見極めてください.

アンチエイリアス

「標準レンダラ」と「フィジカルレンダラ」で設定箇所が変わります.

「標準レンダラ」の場合

〈アンチエイリアス〉項目から「ベスト」を選択します.「標準レンダラ」の場合は柄の細かいテクスチャや細かくタイリングしたテクスチャがあるとモアレが発生する傾向があります.この場合は,〈最小レベル〉と〈最大レベル〉を調整しますが,上げるとレンダリング時間は大幅に長くなります.

「フィジカルレンダラ」の場合

フィジカルにした場合フィジカル項目のサンプリング品質を「低」にします.品質が許せば,「サンプリング分割数」を「1~1.5」「シェーディング分割数(最高)」…「1~2」などと下げてみても良いでしょう.

しきい値

〈レンダリング設定〉の〈オプション〉内にあるパラメータで,デフォルトでは「0.1%」になっています.ライトからでた光の明るさは反射や屈折を繰り返していくうちに弱くなっていきますが,元の明るさから0.1%に達したら計算を打ち切るというものです.しかし0.1%になるまえに,〈光の計算回数〉,〈鏡面反射の計算回数〉の上限に到達して打ち切られることがほとんどです.そこで,〈しきい値〉を「1%」にしておけば,計算回数に達するまえに明るさが1%になった時点で計算を打ち切ることができるようになります.〈しきい値〉が高ければ計算は早く終了することになりますが,10%や20%といった数値では早く終了しすぎて色がいきなり真っ黒になる境界線が出てしまうことになります.このような問題が出にくく,かつレンダリング時間を短縮する効果が期待できる数値が0.5%~1%程度といえます.反射は屈折が多いシーンではこれだけで1.5~2倍くらい早くなることもあります.

5. その他

3D植栽の配置

植栽の3Dオブジェクトは形状が複雑なので計算負荷が高くなります.植栽がビジュアルとしてさほど重要でない場合は,次の方法で表現するのが一般的です.

Photoshopによる合成

もっとも手軽で頻繁に使われる方法です.後から合成した方が配置や色味の変更が容易です.

アルファで切り抜いた一枚板のオブジェクトで表現する

一枚板を使用するのでレンダリングがとても早くなりますが,一枚の板という性質上,影が正確ではないなどの問題が発生します.プリセットのVisualiseには3D ObjectにPlants\Cutoutでいくつか入っています.

3D植栽を使用したい場合

リアルですが,レンダリング時間がかります.葉や枝のオブジェクトが込み合っているので,GI計算が長くなります.植栽にコンポジットタグを適用して,タグのGI設定を開き,「ストカスティックサンプルの倍率」「レコード密度の比率」を低い数値にしておくとGI計算が早くなります.その分アーティファクトは出ますが,植栽の場合はあまり分かりません.ただし,この方法はアニメーションには不向きです.スピード重視の場合は合成かカットアウトオブジェクトを使う方法が良いでしょう.

注意すべき点

レンダリング速度を上げたい場合,次の項目を行いますが,いずれも絵の品質に関係しているものなのでオフにする場合は品質とのトレードオフとなります.オフにするとそれだけ絵のクオリティも下がっていくので,あくまで絵の中でそれほど重要でない箇所に限定してオフにするように工夫します.

ぼけた反射をオフにする
ぼけた反射の精度を低くする
反射自体をオフにする
計算が早いスペキュラで代用する
ライトの影を描画させないようにする
屈折を使わない
内部拡散反射シェーダを使わない
光を透過させない(半透明カーテンなど)
レンダリング設定を可能な限り低くする
・イラディアンスキャッシュの精度
・アンチエイリアス(サンプリング品質)の精度
部分的にレンダリング設定を低くする
下げたいオブジェクト(親でも可)にコンポジットタグを適用してGI設定を下げる

以上,かけあしでレンダリング時間の短縮Tipsを紹介しました.レンダリング時間が長くなる原因を突き止め,修正するために何を変更すれば良いかは慣れないとはなかなか捉えにくいと思いますので,参考にしてもらえれば幸いです.