シーンのレンダリングには、長時間を要することが少なくありません。しかし、レンダリング時間を短縮する方法がいくつかあります。
Render > Editors > Render Stats の Double Sided を参照してください。
サーフェスは可能な限り片面のみ(Single-sided)とします。
シーン上のすべてのオブジェクトをレイトレーシングするのは、最適な手法とはいえません。たとえば、屈折処理を必要としない透明なオブジェクトをレイトレースするのは時間の浪費となってしまいます。
Render > Editors > Render Stats の Shadows を参照してください。
Area Light(面光源)や Linear Light(線光源)は使用しないようにします。
Render > Globals の Render > Multi-lister
および Raytracing Maximum Limits の Raytrace Parameters を参照してください。
グローバルに(Render Globals ウィンドウの Maximum Reflections、Maximum Refractions、Max Shadows Levels)、またはシェーダで(シェーダの Control ウィンドウの Reflect Limit、Refract Limit、Shadow Limit)、リフレクション(反射)、リフラクション(屈折)、影を落とす回数を最小にします。通常は設定値を 1 にすれば十分です。ミラー効果を狙う場合、リフレクションはほとんどの場合 1 回で十分です。また、影を落とす回数を 1 より大きくしても、多くの場合時間に見合った効果は得られません。リフラクションと一緒に屈折回数を2に上げただけで、レンダリング時間は大幅に長くなります。
Render > Multi-lister の Reflection を参照してください。
できれば、レイトレースの Reflection 機能ではなく Reflection マップを使用します。
大きなフロアと、狭い領域を占める複雑なジオメトリを組み合わせないようにします。この場合は、フロアをスケール ダウンしてください。
Render > Globals の Subdivide Recursion を参照してください。
メモリに余裕がある場合は、Render Globals ウィンドウの Subdivide Recursion 値を 3 か 4 など大きな値にしてみます。ただし、この場合、メモリ使用量が急激に増加する可能性があります。
Render > Multi-lister の Use Depth Map を参照してください。
ソフト シャドウを落とす Spot Light の場合は、Control ウィンドウの Use Depth Map を ON にします。
シーンはカメラから見えるものを基準に、あらゆる要素を極力単純化してモデリングしてください。たとえば、シーンの遠景に山がある場合に、山を多数の三角ポリゴンと複雑なシェーダでモデリングするのはお勧めできません。代わりに、実際の山の写真をマップした単純なプレーンを使用し、輪郭を描くのには Transparency マップを使用します。小惑星帯を描くには、近くにあるものをモデリングし、小さいものには Bump マップを、それよりさらに小さいものには Particle を使用します。また遠方の小惑星には、いくつかの大きなプレーンと Transparency マップ、Color マップ、Bump マップを使用します。
Render > Multi-lister の Transparency を参照してください。
サーフェスを構築またはトリミングするときには、CV とアイソパラメトリック カーブの数を最小限に減らします。できるかぎり、トリミング サーフェスに代えて Transparency マップを行ってください。
Render > Globals の Mask と Depth を参照してください。
シーンを複数のレイヤに分けて作成し、個別にレンダリングした上で、マスクファイルとデプス ファイルと合成ソフトウェア(たとえばMaya Composer や Maya Fusion)を使用して全体を合成する(またはその必要がある)こともあるでしょう。
Render > Multi-lister の Color と Use Back Color を参照してください。
アニメーション中にバックグラウンドを変化させる必要のないときには、バックグラウンドをプリレンダリングし、そのイメージを Environment Color パラメータに割り当ててバックグラウンドとして使用します。シェーダの Use Back Color パラメータを使用すれば、このバックグラウンドに影を落とすこともできます。
合成アプリケーション(Maya Composer やMaya Fusion)がある場合は、バックグラウンドを使用しないでください。代わりに、レンダリングしたシーンをバックドロップと合成します。これを行うと、レンダリング時間が短くなるだけではなく、シーン エレメントを変更する場合に、バックグラウンドをレンダリングし直す必要がなくなります。
Render > Multi-lister の Blurmult、Convert to Pix、Convert Solid Tex を参照してください。
Anti-aliasing Levels の値を大きくする必要が生じたときでも、できれば Blurmult の値をアンチエイリアシング テクスチャに合わせて調整するようにしてください。ただし、Blurmult パラメータがあるのは、File テクスチャと一部のプロシージャ テクスチャに限られます。Blurmult パラメータのない Surface テクスチャの場合は Convert to Pix ボタンを使用して、Blurmult パラメータのない Solid テクスチャの場合は Convert Solid Tex ボタンを使用して、それぞれテクスチャを pix ファイルに変換してみてください(アンチエイリアシングの有無は問いません)。Fileテクスチャとして pix ファイルを適用し、File テクスチャの Blurmult 値を調整します。
Render > Multi-lister の Rgboffset を参照してください。
解像度の高い大きなテクスチャを使用する代わりに、解像度の低い大きなテクスチャを使用し、ディテールの描画には解像度の高い小さなテクスチャを繰り返し適用します。小さなテクスチャを大きなテクスチャに適用するには、Rgboffset またはアルファオフセットとして使用します。これにより、メモり使用量を劇的に減らすことができます。
ビューの広い領域を覆うサーフェスに、複雑なプロシージャ テクスチャを多用するのは避けてください。最も避けたいものには、Granite、Leather、sFractal、sCloud(ノイズあり)、Projection(ノイズあり)、Water(Numwaves の値が高いかReflect_bound.がオンである場合)、sWood(ツリーの断面イメージを用いた Projection テクスチャを使用すると結果が改善されます)、sMarble テクスチャがあります。Sky テクスチャも複雑です。特に、Fractal または sFractal のクラウドや地面が使用されていると、マシンにとって大きな負担になります。
Blurmult が低く、Level_max が高ければ、フラクタルノイズ処理が非常に遅くなります(ただし、ディテールはすばらしい仕上がりになります)。多大なレンダリング処理のかかるプロシージャ テクスチャを、できるだけ小さなラッピング ファイル テクスチャに変換してください。Solid テクスチャには、状況によっては Convert Solid Tex を使用することができます。ただし、Solid テクスチャのスウォッチをレンダリングし(Environment シェーダの Color に Solid テクスチャをマップしてレンダリング)、そのスウォッチを Projection マップとして使用した方が良いことも少なくありません。場合により、TRIPLANER マッピングがすぐれた効果を出すこともあります。
Sky Reflection マッピング (Specularity 1、Reflectivity 1、Colorは黒)した球体の正方形イメージを使用して単純にレンダリングすることにより、Sky テクスチャを高速レンダリングの Ball テクスチャに変換することができます。球体がビューのエッジに軽く接触していることを確認してください。レイトレースのリフレクションのプリレンダリングにも、これと同じトリックを使用できます。
プロシージャ テクスチャを Bump マップ、Displacement マップまたは Per Pxel Warp に使用しないようにします。これらのエフェクトは、サンプルあたり 5 回のテクスチャ評価を行います(これに対して Color マップは 1 回です)。テクスチャ マッピングされた透明なサーフェスのレイヤに別のレイヤを重ねたりすると、さらに状況が悪くなります。Particle のフィールドと sFractal の Blob マップとの組み合わせなどがこれにあたります。
Render > Multi-lister の Convert to Pix と Convert Solid Tex を参照してください。
「チェーン化された」複数のテクスチャ(テクスチャがテクスチャ上にマップされている)を使用するには、Convert to Pix(Surface テクスチャ)または Convert Solid Tex(Solid テクスチャ)で全体を単一の File テクスチャにまとめます。
Solid テクスチャの計算に時間がかかり過ぎる場合、メモリに余裕があれば Convert Solid Tex を使用し、pix ファイルを File テクスチャとして適用します。このようにすれば、テクスチャにかけるフィルタも容易に管理できます。
Render > Globals の Texture Caching (「bot」テクスチャ)を参照してください。
File テクスチャは、できるだけサイズを小さくします。大きなテクスチャ マップを使用せざるを得ないときには、Texture Caching(Render Globals)を使用します。
Render > Multi-lister の ShaderGlow を参照してください。
シーンに Shader Glow があり、レンダリングの解像度を上げるときには、Environment シェーダの Shader Glow セクションの Quality パラメータの値を小さくします。
シーン中のライト数を最小限に減らします。シェーダ エフェクトまたはテクスチャで代用できれば、ライトは使用しません。たとえば、人物の頬にハイライトを入れるときに、左右の頬に Point Light(点光源)を関連付ける代わりに、Translucence のようなシェーダ パラメータとテクスチャ マッピングを使用して同等のエフェクトを表現します。Light marque を作成するときも、ライトを 100 個も作成するのではなく、Texture マッピングされたシェーダを使用します。多数の明るいグロースポットからなる Environment マップを使用すれば、ハイライトの marque を作成することができます。ライトを複数使用するようなときには、単一のライトにテクスチャを使用して代用できないかを検討すればよいでしょう。
Render > Create Lights > Volume を参照してください。
シーンにライトを複数配置する必要があるときには、Volume Light にします。Volume Light では、ボリューム外のオブジェクトの照明が計算されないので、その他のライトよりレンダリングが速くなります。
Render > Multi-lister の Renderer Shadows を参照してください。
すべてのライトが投影しないように投影するライトだけ Shadow オプションをオンにします。
Render > Globals の Depth Maps in Memory および Render > Multi-lister
の Use Depth Map を参照してください。
アニメーション中に影が変化しない場合には、シャドウ デプス マップを再利用します。そのためには、(Render Globals 内の)Depth Maps in Memory を ON にするか、コマンド ラインから -k または -K1 オプションを使用してレンダラを起動してください。個々の Spot Light についても、(Shadow Casting セクション内の)Use Depth Map を ON にして、シャドウ デプス マップを再利用できます。
レンダリング時の解像度は、必ずしも最終出力の条件に合わせる必要はありません。たとえば、NTSC ビデオのブラーに合わせて低解像度でレンダリングし、合成時にイメージをサイズ変更できます。また、ソフトな雲のパーティクル要素をレンダリングする場合にも、処理を個別にすれば、レンダリング解像度を大幅に低くできます。おそらく最終出力の 1/4 の解像度で、アンチエイリアス処理を省略することも可能でしょう。
Render > Editors > Render Stats の Object rendering parameters を参照してください。
Object Rendering Parameters(Render statsMB Texture Samples と MB Shading Samples)の値を、個々のオブジェクトごとに、またカメラ ビューにあわせてできるだけ小さく設定します。
Render > Globals の Motion Blur および Render > Editors > Render Stats
の Motion Blurred を参照してください。
アニメーション中全く移動しない、またはごくわずかに移動するオブジェクトには、モーション ブラーを使用しないようにします。モーション ブラーは、グローバル(Render Globals で)にオフにするか、またはオブジェクトごとに(Render stats で)オフにすることができます。
Render > Editors > Render Stats の Shadows を参照してください。
サーフェスに影を落とさないようにします。影を落とすサーフェスの数が少なければ少ないほど、シャドウ マップの生成/影を落とす速度が増します。同じように、影を落とすサーフェスによりバインドされる容積が小さければ小さいほど、シャドウ マップの密度は高くなります(影の質がよくなります)。
Render > Globals の Anti-aliasing Levels を参照してください。
Render Globals の Anti-aliasing Levels の設定をできるだけ低くします。アンチエイリアシングのレベルはレンダリング時間に大きな影響を与えます。以下の推奨値を使用してください。
品質 | Minimum | Maximum |
---|---|---|
低 | 0 | 0 |
中 | 0 | 4 |
高 | 3 | 12 |
Render > Globals の Animation を参照してください。
Render Globals 内の Animation がオフになっていることを確認します。アニメーションのカーブを分析する作業は、マシンにとって大きな負担となります。
Render > Globals の Render を参照してください。
できれば、Render Globals で Render を ACTIVE に設定し、アクティブなオブジェクトのみがレンダリングされるようにします。
レンダリング中のマシンでは、重い処理を並行して行わないようにします。できれば、軽い処理(たとえば、wrl)であっても、レンダリング中は控えるのが理想的です。
メモリ使用状況に注意し、仮想メモリを使用するのは極力避けます(メモリ使用の削減を参照してください)。
前述のテクニックを使用してシーンを最適化した場合でも、レンダリングでは、使用可能メモリのすべて、およびスワップの一部が使用されることがあります。
大きくて複雑なシーンをレンダリングすれば、マシンのメモリが十分にあってもポインタ スペースがオーバーフローする可能性があります。32 ビット プロセッサの主記憶は 232-1、または約 2GB までに制限されます。しかし、スタックとヒープのオーバーヘッドを取り除くと、32 ビット アプリケーションの最大サイズとして約 1.8GB が残ります。
はじめにシステム リミットをチェックし、使用可能なメモリがすべてアプリケーションに割り当てられていることを確認します。「hinv」は RAM を、「/etc/swap -ln」はスワップ サイズを示します。すべての RAM を使用できることを確認するには、キーボードから「limit」とタイプし、RAM 情報がマッチしているか調べます。このとき、マシンの搭載メモリが 256MB を超えていれば、通常ミスマッチが起きます。
サーフェスに必要のないサブディビジョンの数を減らします(Windows > Information > Render stats)。
タイル サイズを小さくします(レンダリングのコマンドライン オプション-T)—このオプションは、Raytracer を除くすべてのレンダラにおいて有効です。
テクスチャ マップの解像度がレンダリング結果に対して妥当なレベルにあることを確認します(たとえば、重要性の低いオブジェクトには 4000×4000 のテクスチャ マップを適用するようなことは避けてください)。
シャドウ マップの解像度を引き下げます(Multi-lister > Light)。
必要のないかぎり、Raytracer/Powertracer の使用を控えます。Raytracer/Powertracer は、Raycaster に比べてメモリ使用量が大きくなります。
File テクスチャの Filter をオフに設定します。これによって、テクスチャ マッピングをフィルタするときに、余分なメモリ割り当てを回避することができます。ただし、この結果、エイリアシング アーティファクトが発生する可能性があります。Render > Multi-lister の Filter を参照してください。
Render Globals で Texture Caching を ON に切り替え、Disk Cache Limit をすべてのテクスチャの維持に必要なサイズより大きめに設定してください。これにより、レンダリング実行時のサイズを劇的に小さくすることができます。この設定の結果、使用する一時的なディスク スペースは大きくなりますが、占有メモリは小さくてすみます。
このほか、SDL ファイルの DEFINITION セクションに以下の行を追加しても、メモリ使用量を節約できます。
texture_caching = ON; texture_cache_size = 32; texture_cache_disk_limit = <maximum space to use for textures>;
-l オプションを指定してコマンド ライン レンダラを使用し、File テクスチャに使用できる一時ディスク容量を増やします。このとき、-l に続けて入力した数値が、TMPDIR でレンダラが File テクスチャ用に使用できるディスク スペースのサイズとなります。TMPDIR のディスクス ペースを大きくすることにより、レンダラに使用できる RAM が多少解放されます (TMPDIR は、一時ディスク スペースの場所を示す環境変数です)。
File > Export SDL を使用して、シーンの SDL ファイルを保存します。Studio 本体を終了し、コマンド ライン レンダラを使用して SDL ファイルをレンダリングします。
SDL ファイルの DEFINITION セクション内の grid_cache 値を 4000 より小さい値に設定します。テスト レンダリング中に grid_cache 値が 1000 になるまで、500 単位で grid_cache 値を減らし、次に 100 単位で減らしていってください。
Render Globals ウィンドウの Memory Options 内の Raytracing Memory Options セクションの中にある Subdivide Recursion 制限値を小さくします。ただし、パフォーマンスが大幅に向上する代わりに、最終結果の質が落ちる可能性があることに注意してください。