Tips

実験と検証 / Try & Memo編

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

まえがき

ライトも決まった、構図もバッチリ。さあ最終レンダリング。と、そこでおもむろにレンダリングメニューからレンダリングオプションを選び、自動設定の画質をファイナルへ、いやどうせなら一番右端へ……と、ちょっと待って下さい。悪いこと言わないのでちょっと思いとどまって下さい。

図1
図1:後悔先に立たず

ファイナルのセッティングは確かに高画質ですが、その分半端じゃなく時間がかかります。一度やってみればわかりますが、そりゃとんでもないものです。自分は一度しか使ったことがありません。そして一度で懲りました。

そもそも、ファイナルの設定って、本当に必要なものなのでしょうか? レイトレーシングやらピクセルサンプルなど様々な設定がありますが、レンダリングしたいシーンによっては、実はぜんぜん必要ないパラメータも結構あるのです。

というわけで、効率的なレンダリングの為、ちょっくら確認してみましょう。ちなみに、この説明はFireFlyレンダリングのものです。

自動設定と手動設定の項目

自動設定でのパラメータは以下の通りです。

表1:自動設定の項目と設定値
設定項目 最低 ドラフト デフォルト ファイナル 最高
最小シェーディングレート 4 2 1.25 0.5 0.1
影を投影 OFF OFF ON ON ON
ピクセルサンプル 1 2 3 3 6
レイトレーシング OFF OFF OFF ON ON
レイトレースバウンズ 0 0 0 4 6
テクスチャフィルタリング OFF OFF OFF ON ON
最大テクスチャサイズ 512 768 1280 3584 4096

これに対して手動設定は

表2:手動設定の項目と設定値
設定項目 範囲
影を投影 ON/OFF
テクスチャフィルタリング ON/OFF
レイトレーシング ON/OFF
レイトレースバウンズ 0〜12
最小シェーディングレート 20.00〜0.00
ピクセルサンプル 1〜36
最大テクスチャサイズ 512〜4096
バケツの最大サイズ (初期値)64
最小置換バウンド (初期値)0

となっています。ちなみに、手動設定の「自動的に取得」ボタンをクリックすると、現在の自動設定の値が入力されます。

それぞれのパラメータの意味を確認してみましょう。

設定項目

影を投影

影を計算するかをON/OFFで切り替えます。OFFにした場合影は計算されず、どんなオブジェクトも影を落とさなくなります。ONにした場合は、ライトの特性パレットで指定した手法(レイトレースorシャドウマップ)で影を計算します。また、ONにしていても、特性パレットでライトの影をオフにしていたり、「影を落とす」のチェックを外したオブジェクトは影を落としません。

テクスチャフィルタリング

テクスチャが細かかったり、遠景で使用されるために小さい範囲に模様が集中したときなど、モアレが発生することがあります。テクスチャフィルタリングをONにすると、フィルタをかけて自然にぼかすことができます。ただし、この機能はメモリをけっこう消費します。

レイトレース

レンダリングにレイトレースを使用するかどうかをON/OFFで切り替えます。OFFの場合はスキャンラインのみとなり、レイトレースを使用する機能は無効になります。

レイトレースバウンズ

レイトレース使用時、視点から出発した光が何回バウンド(=反射・屈折)するかを指定します。合わせ鏡など、何度も反射するようなオブジェクトの場合、この値が低いと途中で計算が止まってしまいます。単位は回です。

最小シェーディングレート

FireFlyレンダリングでは、レンダリング時にオブジェクトをマイクロポリゴンと呼ばれる小さなポリゴンに分割しますが、その分割サイズを指定します。最小シェーディングレートが1の時、マイクロポリゴンはレンダリングイメージの1ピクセル相当に分割されます。4なら4ピクセル相当、0.2なら1/5ピクセル相当です。この値はオブジェクトごとに特性パレットで指定することもでき、その場合より大きい値の方が優先されます。単位は約ピクセル(なんだそりゃ)?

ピクセルサンプル

あるピクセルのレンダリング結果を求める際、周囲何ピクセルまで計算に入れるかを指定します。アンチエイリアスや被写界深度などに影響します。ピクセンサンプルが3の時、そのピクセルを中心とした3×3(=9)ピクセルを計算します。1とした場合はアンチエイリアスされません。単位はピクセル平方。

最大テクスチャサイズ

テクスチャを貼ったオブジェクトをレンダリングする際、メモリにロードされるテクスチャのサイズを制限します。最大テクスチャサイズを1024に設定した場合、4000×3000ピクセルのテクスチャなら1024×768に縮小された状態でレンダリングされ、その分消費メモリとレンダリング時間を節約します。単位はピクセル平方。

最大バケツサイズ

バケットサイズとも。一度にレンダリングするブロックの大きさを表します。デフォルトでは64になっているので、レンダリングすると左上から64×64ピクセルずつ表示されていきます。デフォルト値は環境設定で変更できます。値を上げれば一度にレンダリングできる範囲が大きくなりますが、その分メモリ消費が激しくなります。メモリ不足でレンダリング出来ない時など、この値を小さくすれば消費メモリを落とすことができるかも。

最小置換バウンド

置換マッピング(いわゆるディスプレイスメントマッピング)を使用する際、マッピングで生成した凹凸がレンダリングの最大バケツサイズ(一度にレンダリングする範囲)を越えて隣のブロックに跨がると、亀裂を生じることがあり、その問題を回避するためにあらかじめ見込んでおくオブジェクトのサイズ(らしい)。通常はPoserは自動的に最適値を割り出しますが、マテリアルツリーが複雑になると計算できない場合もあるので、その時は手動でここの値を変更するのだとか。

レイトレースが必要な時

いろいろありましたが、一つずつ確認していきましょう。

まず最初に考慮するのが、レイトレースを使用するか否か?だと思います(スキャンラインとレイトレースのレンダリング方式の違いについてはいずれまた後日)。レイトレースが必要なシーンを考えます。

逆に言うと、これらに該当しない場合は、どんなに高品質なイメージに仕上げたくとも、レイトレースを使用する必要はないということになります。レイトレースを使用するとスキャンラインのみの場合に比べてどうしても時間がかかってしまいますので、仕上がりが同じなら時間を節約した方がよいでしょう。

図2
図2:レンダリング方式によるシャドウマップの違い
(あるようには見えない)

微妙に誤解されやすいのが影の違いです。ライトの影を生成するには「影の奥行きマップ(いわゆるシャドウマップ)」と「レイトレース影」の二種類があり、ライトごとに特性パレットで指定することができます。従って、レンダリングにレイトレースを使用していても、このライトの設定がシャドウマップを使用していた場合、影はレイトレースシャドウではなくシャドウマップで描画されます。この時、レイトレース使用の有無がシャドウマップの品質に影響することはありません。

また、レイトレース影を選択した場合、レイトレースを有効にしてレンダリングしなけれは影はまったく描画されません。

レイトレースバウンズ

シーンの中に鏡のようなものがあって、どうしてもレイトレースでレンダリングしなくてはならない。では次に問題になるのがレイトレースバウンズ(反射の回数)です。

図3
図3:合わせ鏡

そのシーンで、光が何度反射(or透過)すれば良いかを考えましょう。鏡に映っているのが普通の人物なら、反射回数は1回で充分です。が、映っているのが別の鏡だったりしたら、映り込むはずの反射の回数を指定しなければ鏡の中が真っ黒になってしまいます。ぴかぴかに磨かれた床の上に新車が乗ってたりしたら、そりゃもう大変です。

反射を設定するオブジェクトが小さかったり、服のような複雑な形状の場合は、レイトレースによる正確な反射ではなく反射マッピングの使用も検討しましょう。使用するマップにもよりますが、より効果的に写り込みをコントロールできます。

図4
図4:コップの屈折

屈折の場合も同様に、何度屈折が起これば充分かを考えましょう。ボールのような形状なら2回あれば充分ですね。また、グラスなど複雑な屈折を必要とする形状の場合でも、3度も屈折すれば充分だと思います(あくまでも個人的にですが)。Poserでは、透過と屈折は全くの別物として扱われます。レイトレースバウンズが1となっていても、透明度が設定されていれば光は何度でも通過してしまいます。不思議ですねー。

レイトレース影や環境閉塞を使用する場合はどうでしょうか。これらを使用しているときにレイトレースが必要なのは、描画に光線の計算が必要だからです。レイトレース影の場合、視点から出発した光線は何か(地面など)に当たると、その地点からライトまでの間に障害物があるかどうかを調べます。障害物(たとえば人物など)がある場合、その地点は影になるということです。

環境閉塞の場合、視点から出発した光線は何かに当たると、その近辺が障害物などでふさがれているかどうかを調べます。一定の範囲に障害物がある(つまり狭い空間である)場合、その周辺をうっすらと暗く塗りつぶします。

つまり、これらの計算には障害物に当たるまでしか必要ではないのです。

レイトレースバウンズに高い数値を設定していても、オブジェクトに反射や屈折が設定されていない場合、光線はそこで止まりそれ以上の計算を行いません。が、例えばもしシーン内に屈折が設定されたコップなどがあったりしたら、レンダリングはそのコップのために思いっきり時間を使ってしまいます。なるべく必要最低限の回数だけ指定するようにしましょう。

影を投影

これは作風によるので人それぞれだと思います。が、正確な(と言い切るには語弊が有りますが、Poserは特に……)影が計算でき、誤魔化しもできるのがCGの利点だと思いますので、特に理由がなく自然な雰囲気を求めるなら、影はつけた方がよいと思います。ライティングが苦手な方は特に。リアルな割に突拍子もない嘘をつけるのが3DCGですから。

もちろん、シャドウマップにしろレイトレースシャドウにしろ、影の計算は時間がかかりますので、ライティングも決めていない時やテストレンダリングの時はさっぱりOFFでよいでしょう。

最小シェーディングレート

前述の通り、シェーディングレートはオブジェクトをマイクロポリゴンに分割する比率です。この値を0.01とかに設定しようものなら、1ピクセル計算するのに100枚ものポリゴンを計算しなくてはなりません。程々に設定しましょう。と、ここで重要になるのは、オブジェクトごとの最小シェーディングレートの設定と、テクスチャのサイズです。

最小シェーディングレートはレンダリングの設定項目ですが、オブジェクトごとに設定することもできます。特性パレットでシェーディングレートを確認すると、大抵のものは0.20となっていると思います。この値は、大きいものの方が優先されます。つまり、レンダリングオプションで0.01と設定しても、オブジェクトの設定が0.20なら、0.20までしか分割されません。逆にレンダリングオプションが1.00なら、分割サイズは1.00になります。

図5
図5:シェーディングレートの効果
0.2(左)と4.0(右)

過去の配布物やPoser以外からオブジェクトを読み込んだ場合、オブジェクトのシェーディングレートは0.20となります。おそらくこの値がPoserデフォルトなのでしょう。ちなみに、デフォルト値は環境設定で変更することができます。

もう一つ重要なのが、テクスチャのサイズです。Poserでは1ピクセルにつき、シェーディングレートによって分割したマイクロポリゴンを合わせて色を決定しますが、この時、テクスチャもマイクロポリゴン1枚につき1つの色を割り当てられてしまうようです。つまり、どんなに高解像度のテクスチャを貼っても、シェーディングレートが大きければそれだけ「大雑把」にしかレンダリングされないのです。これは例えば高解像度テクスチャの髪を小さめにレンダリングした時に顕著で、シェーディングレートの値が大きいとまだらになってしまいます。テクスチャフィルタリングをONにすると若干低減できますが、できるなら1ピクセルよりも小さい値を設定したいところです。

図6
図6:シェーディングレート4.0 テクスチャフィルタリング有り(左)とテクスチャサイズ512(右)

レンダリングイメージの1ピクセルよりテクスチャの1ピクセルの方が大きくなるような、低解像度テクスチャの場合はまだらは目立たくなります。マシンパワーなどの関係でシェーディングレートを小さくしたりテクスチャフィルタリングをONにするのが難しい場合は、思い切ってテクスチャサイズを小さくしてしまうとよいでしょう。

テクスチャフィルタリング

図7
図7:フィルタリングONとOFF

貼り付けるテクスチャのタイプにもよりますが、普段はOFFにしておきましょう。で、モアレが発生していて気になる場合などにONにします。ただしテクスチャフィルタリングをONにすると、メモリリソースを消費しますので、メモリ不足などになる場合は、モアレの発生するオブジェクト周辺だけONでレンダリングして、後からPhotoShopなどの画像処理ソフトで合成するのも一つの手です。

最大テクスチャサイズ

高解像度のリアル系テクスチャを貼った顔をアップでレンダリングするときなどは、できればそのテクスチャサイズ以上に設定したいところです。が、ロングショットなどレンダリングされるサイズが小さい場合、またレンダリング画像をポストワークでぼかしたり加工する場合など、かなり無駄になりますのでその時はさっぱり制限してしまいましょう。また、この設定は全てのオブジェクトに適用されてしまいますので、一番高解像度が求められるオブジェクトのテクスチャサイズに合わせるようにしましょう。

ちなみに、いつも低解像度でしかレンダリングしないなら、もとのテクスチャのサイズを画像処理ソフトで小さくしてしまうのも有効です。レンダリングオプションでサイズを制限するよりも、メモリの消費は少ないようです。

ピクセルサンプリング

被写界深度を使用しない場合、ピクセルサンプリングが関わるのは主にアンチエイリアスの品質です。が、2ピクセルも3ピクセルも離れたピクセルの値がアンチエイリアスに影響することは普通ありません。なので、通常はそのピクセル周辺の8ピクセル、つまり3×3のサイズで充分ということになります。

被写界深度を使用する場合、ボケ具合によっては2ピクセルも3ピクセルも離れたピクセル、あるいはもっと離れた場所のピクセルの値がレンダリング品質に直接影響します。その場合、ここまでぼけていると思われる範囲までピクセルサンプリングの値を増やします。ただし、レンダリング時間は指数関数的に増大します。周辺の色を拾うだけならレンダリングサイズ+ピクセルサンプリングのサイズだけフチを余分に計算すれば良いようなものですが、Poserはピクセルごとに計算をやり直すようなので、単純計算でピクセルサンプリング1に比べて2なら2×2で4倍、3なら9倍、16なら256倍の時間がかかってしまいます。

(上記の数字はあくまで単純計算した場合です。実際には他の要因もありますので、結果は異なるものと思われます。)

実験?

「Poserで遊んでみよう!」で使用したファイルを、手動設定と自動設定でレンダリングしてみました。

表3:レンダリングオプションと仕上がりの比較
設定項目 手動設定 ファイナル設定 最高設定
最小
シェーディングレート
0.5 0.5 0.1
影を投影 ON ON ON
ピクセルサンプル 3 3 6
レイトレーシング OFF ON ON
レイトレース
バウンズ
0 4 6
テクスチャ
フィルタリング
OFF ON ON
最大テクスチャ
サイズ
4096 3584 4096
レンダリング
所要時間
1分33秒 4分15秒 9分46秒
イメージ(一部) 手動設定イメージ ファイナル設定イメージ 最高設定イメージ

時間短縮と比較の為、被写界深度と肌に設定していた環境閉塞は削除しています。

レンダリングするシーンにもよると思いますが、かかった時間の割に品質的にはあんまり変わらないような気がしますけど、どうでしょう?

もちろん、高い設定にして時間をかければ品質が上がることに違いはないと思いますが、できることなら設定も自分でコントロールして、本当に必要な時間だけをつぎ込むようにしたいですね。その分、余った時間を試行錯誤に費やすこともできるわけですから。

というわけで、自分のよく使う設定などを下記にまとめました。何かの参考になれば幸いです。

表4:自分的よく使う設定
設定項目 シーン確認用 普通の仕上げ 環境閉塞を
使用する場合
被写界深度を
使用する場合
最小シェーディング
レート
1〜2 0.2〜0.5 0.2 0.2
影を投影 OFF ON ON ON
ピクセルサンプル 1 3 3 15
レイトレーシング OFF OFF ON ON
レイトレースバウンズ 0 0 2 2
テクスチャ
フィルタリング
OFF OFF OFF OFF
最大テクスチャ
サイズ
1024 4096 4096 4096
コメント ほんとにバランス確認用 テクスチャサイズが大きいのは、調べるのが面倒なので。 他の場合もそうだが、仕上がり次第でテクスチャフィルタリングをONにする。 泣くほど時間がかかるので、レンダを始めたら数時間は放置決定。

▲ Tipsタイトルに戻る
◆ ホームに戻る