On this page |
Houdiniの3Dビューポートではインタラクティブにたくさんの照明効果をオフラインレンダラーで生成することが可能です。さらに、ルックアップテーブル(LUT)を使ったカラー補正とガンマ補正を適応することが可能です。
ビューポートでのライティング
Houdiniのライトタイプの多くはOpenGLシェーダでモデル化しています。これらのライトシェーダは、インタラクティブにライティングを調整できるように、最終レンダリング結果に十分近い結果を生成します。デフォルトでは、ほとんどのライトがポイント、スポットライト、エリアライト、環境ライトとしてレンダリングされます。3Dビューアのディスプレイオプションの Effects タブ、または右側のツールバーにある High Quality Light Shading は、これらのライト用により複雑なシェーダを有効にするために使います。
エリアライトと環境ライトには光源のマルチサンプリングが必要です。3Dビューアのディスプレイオプションの Light Sampling パラメータは、レンダリングの品質を制御します。(デフォルトは8サンプル)。サンプリング値を大きくすれば品質は良くなりますが、レンダリングが遅くなります。
High Quality Light Shading は、OpenGLのライト数の制限(通常は8か16)を回避してビューポートに無限大のライトの数を有効にします。ライトの数が増えるほどパフォーマンスに影響が出てきます。
ランプベースのライト減衰は、 High Quality Light Shading モードでも利用可能で、円錐ライトのソフトエッジのフォールオフと投影ライトテクスチャもそのまま利用できます。
最後に、スクリーン空間のアンビエントオクルージョンは、 High Quality Light Shading がオンの時のみ利用可能です。これは、エッジと効果を暗くしてアンビエントオクルージョンを模倣しますが、オブジェクト間の距離が離れるほどオクルージョンができなくなります。オクルージョンのシャドウの距離を決める時に長さの単位が関係しています。
シャドウは、すべてのライトタイプでサポートされています。シャドウは3Dビューアのディスプレイオプションの Effects タブ、または右側のツールバーの Shadows トグルボタンをクリックすることで有効にすることができます。ポイントライトは硬いシャドウを落とすのに対し、環境ライトとエリアライトはより柔らかいシャドウを落とします。
シャドウ品質は、ライトすべてに対して基本的なハードエッジシャドウを Shadows アイコンをクリック、または3Dビューアのディスプレイオプションの Shadow Quality オプションを使って、より滑らかで柔らかいエリアシャドウに変更することができます。エリアシャドウはポイントライトに影響を与えません。ポイントライトは常にポイントシャドウを使います。ライトのシャドウマップはキャッシュ化され、ライトの投影エリアが変わる時、シャドウを生成するジオメトリが変わる時のみ再生成されます。
Tip
より高品質なシャドウオプションは、シーン内のライトやジオメトリの調整をする時のインタラクティブ性に影響があります。そのため、モデリングやライトの配置をするときにシーンがカクカクになるのであれば、シャドウ品質を下げるか無効にすることを推奨します。
Note
High Quality Lightingは、パースペクティブビューでのみ動作します。 Normal Quality Lightingは、正投影(Top,Left,Front)がアクティブになっている時に使われます。 また、Flat Shadingは非対応で、Smooth Shadingは常に使用されます。
マテリアル
ビューポートで使われるデフォルトシェーダは基本的なライティング、複数テクスチャ、ライトベースのテクスチャをサポートしています。Mantra Surface Materialには、これらのプロパティが既に組み込まれていますが、他のシェーダでも Edit Rendering Parameters インターフェースを使えば、これらのプロパティを追加することができます。ビューポートレンダリングパラメータはSHOP/OGLサブフォルダで見つけることができます。
バンプ・法線マップはサーフェスに詳細を加えることができます。ディフューズ、スペキュラー、反射マップは、カラーのサンプリングに使います。不透明度マップは、複数のディフューズテクスチャを使う時に簡単に透明度を設定することができます。(他にも最初のディフューズレイヤーでは不透明度を指定することができます)。
シェーダの処理に関しては、最終的な法線は、頂点法線による補間または法線マップから計算されます。さらにバンプマップはその法線を乱します。
法線とビュー方向は、スペキュラー反射の計算で使います。スペキュラーマップはスペキュラーハイライトに一定のマテリアルのスペキュラーカラーを乗算して色をつけるのに使います。光沢係数はアルファチャンネルにコード化され、 Specular Map パラメータセットを使った光沢範囲にマッピングすることができます。さらに反射マップを使えば、スペキュラーカラーが反射ベクトルを使って反射マップを検索した値で乗算されます。
ディフューズカラーは、頂点カラーの補間(あれば)の合成であり、ディフューズマップ(あれば)で乗算、一定マテリアルディフューズカラーで乗算されます。
不透明度は頂点アルファの補間(あれば)、一定マテリアルアルファで乗算、不透明度マップ(あれば)で乗算、最後に最初のディフューズレイヤーのアルファチャンネル(ディフューズテクスチャにアルファチャンネルがあれば)で乗算することで決まります。
カスタムGLSLシェーダをビューポートで使う場合に、すべてのケースで適切に機能するためには、いくつかガイドラインに従う必要があります。OpenGLシェーダの書き方を参照してください。
透明オブジェクト
Houdiniは Transparency ディスプレイオプションがオンの時、不透明オブジェクトすべてを描画した後に透明パスで別々に透明オブジェクトを描画します。オブジェクトが以下の情報を持つときに透明であるとみなされます:
-
ポイントまたは頂点のカラーとアルファ
-
アルファ値が1.0または0.0以外の値が適用されたマテリアル
-
アルファ値が1.0または0.0以外の値のディフューズRGBAテクスチャを参照したマテリアル
-
不透明度マップを適用したマテリアル
-
ogl_alphaを一様に定義したカスタムGLSLシェーダのマテリアル
-
スプライト
-
ボリューム
上記の基準に合うオブジェクトの箇所のみが透明であるとみなされるので、ジオメトリモデル内のプリミティブのいくつかが条件を満たしていなければ、不透明パスで描画されます。
Transparency オプションがオフなら、代わりに切り抜きが使われます。最終アルファ値が0.0のピクセルは描画されません。それ以外のピクセルは不透明として描画されます。
Material Shader と Transparency ディスプレイオプションを有効にする時は、 Transparency を Medium Quality または High Quality に設定します。これらのオプションのどれかが有効でないなら、 Low Quality を使います。これらのモードは透明サーフェスの品質、特に重複した透明サーフェスを大きく改良します。とはいえ、High Quality Lightingはパフォーマンスの問題で透明オブジェクトに適用されません。透明サーフェスにエリアまたは環境照明の効果を見たいのであれば、 Transparency を無効にしてください。
Medium Quality の透明度は、数に制限のあるレイヤーをピクセル単位レベルで並べて描画します。シャドウは透明オブジェクトには投影されません。そして法線品質のライティングが実行されます。
High Quality の透明度は、多くのレイヤーを描画することが可能で、たくさん重複する透明オブジェクトでより結果が得られます。シャドウは透明オブジェクトにも投影することができます。
スプライト
パーティクルシステムは、そこにSprite POPが存在すれば、スプライトとしてレンダリングすることが可能です。スプライトは常に透明オブジェクトとして描画されます。スプライトとは常にカメラの方向を向いたパーティクルの中心に配置した小さなテクスチャのことです。スプライトは、 Medium Quality または High Quality の透明モードの時に、ボリューム以外のすべての透明オブジェクトの後に描画されます。
ボリューム
ボリュームは、パフォーマンスを犠牲にしてボリュームの見た目を良くする色々な品質レベルでレンダリングすることができます。ボリュームはシャドウを落としたり、受け取ったりしません。またアンビエントオクルージョンがボリュームに影響を与えることもしません。ボリュームは透明なしでレンダリングして、ボリュームの実外形を生成することができます。
ボリュームはデフォルトでは128×128×128の8ビット3Dテクスチャの使用に制限されています。より大きなデータセットを使うには、この制限をディスプレイオプションの Optimization ▸ Textures で調整することができます。
ボリュームはbeauty renderの最終パスで描画されます。
パフォーマンスとグラフィックメモリの管理
Houdiniでは、たくさんの外観の異なるビューポートレンダリング、ライト、シャドウ、マテリアルの高品質表示が可能です。しかし、これらの機能すべてを同時に最大品質設定にすることは得策ではありません。もちろん、ハイエンドのグラフィックハードウェアに対しても同じです。これらの機能のほとんどは、例えばライトの影響度を評価したり、より詳細にボリュームを閲覧するときのような特定の状況下で画像品質が良くなるように設計されています。すべてを高品質にすると、ビューポートのインタラクティブ性が弱くなり、変更がある度に描画が遅くなります。
ビューポートの動きが遅い、またはこれらのオプションがアクティブになっているときに、インタラクティブなフレームレートに戻す簡単な方法がいくつかあります:
-
High Quality Lighting をオフにします。
-
Volume Quality を Low に下げます。
-
Transparency をオフにします。
-
Shadow Quality を Point に下げます。
-
Scene Antiaiasing を None に下げます。
-
テクスチャ を無効にします。
-
HDR Rendering をオフにします。
Note
次の章では、パフォーマンスとメモリ使用量に関する詳細に入っていきます。
ビューポートパフォーマンス
ビューポートのパフォーマンスは、あなたが表示している物(モデル)とあなたが表示している方法(ディスプレイオプション)の2つに影響を受けます。3Dビューアディスプレイオプションの Effects タブの Material Shaders をオフにすれば、高度なビューポートエフェクトのほとんどが無効になるので、モデルが重い原因なのか調べるのに良い方法です。
モデルが制限要因であれば、色々な事を試してください:
-
いくつかのオブジェクトのディスプレイフラグをオフにします。
-
Subdivide SOPを使っていれば、Subdivideなしのジオメトリを表示します。Subdivide SOPのレンダーフラグをオフにして、その前のSOPのディスプレイフラグをオンにします。
-
3Dビューアディスプレイオプションの Optimization タブの Culling のオプションをオンにします。例えば、 Remove Backfaces (バックフェースカリング)と Cull by drawing 'x' primitives out of every 'x' (ポリゴンの削減)。
-
Optimization タブの Interactivity オプションの Interactive Mode をオンにします。これは、ジオメトリをより低解像度のバージョンに置き換えます。(環境設定に基づいて、境界ボックス、ワイヤーフレーム、隠線、フラットシェーディングのいずれか)。
ディスプレイオプションが制限要因であれば、表示するジオメトリの品質を下げます。これは、グラフィックハードウェアでより少ないシェーダ、より速い生成をするのに一般的な方法です。次のオプションのすべてが3Dビューアディスプレイオプションの Effects タブにあります。
-
High Quality Light Shading は、最もパフォーマンスの品質向上に影響があります。これを無効にすれば、より高いパフォーマンスが向上します。特に、シーンにライトがたくさんあって、エリアライト、ジオメトリライト、環境ライト、ポータルライトのような複雑なライトが使われている場合には、最高のパフォーマンスを上げることができます。デフォルトでは無効になっています。
-
ボリュームをたくさん表示していれば、 Volume Quality を下げることでインタラクティブ性が改善されます。 Transparency をオフにすれば、さらに品質が悪くなります。
-
透明オブジェクトがある状況で、透明をたくさんのパスでレンダリングするほど、レンダリングが遅くなります。ボリューム、スプライト、1より小さいアルファを持つマテリアル、RGBAテクスチャマテリアルすべてが、透明パスでレンダリングされます。最初に Transparency Quality を下げてから、必要に応じて、それを無効にします。
-
シャドウは、特にシーンにライトがたくさんあるときや、エリアライトやポータルライトを使っていて、 Shadow Quality が Area 以上に設定しているとシステムが遅くなる可能性があります。まずはシャドウ品質を下げてください。ライトオブジェクトの Enable Light in Viewport パラメータを無効にすれば、ビューポート内のレンダリングのライトを無効にすることもできます。
-
Hidden Line Ghost または Wireframe のようにシェーディングをしないモードを使ってください。
ビューポートメモリ管理
グラフィックハードウェアにはオンボードメモリの制限のあるプール(VRAM)があります。この制限を越えると、ジオメトリ、テクスチャ、フレームバッファがシステムメモリのインとアウトをスワップしてしまいます。これは、徐々にフレームレートが訂正されていくフレームレートスタッタという現象が現れます。
VRAMをHoudiniで使う方法がいくつかあります:
-
ジオメトリ - モデルとパーティクルシステム。
-
テクスチャ - マテリアルとシャドウマップの2Dテクスチャ。環境ライトとエリアライトさらに無指向性ライトシャドウで使う環境マップのキューブテクスチャ。ボリュームの3Dテクスチャ。
-
フレームバッファ - スクリーンに情報を表示するために使用するテクスチャとウィンドウ。
ジオメトリの使用量はビューポートパフォーマンスで上記で説明したような方法で減らすことができます。
テクスチャの使用量は、Mipmapや Effects タブのパラメータを無効、または Optimization ▸ Textures の設定を変更することで減らすことができます。テクスチャの最大サイズまたはそのデフォルトのビット深度を減らすと、マテリアルテクスチャの全体のメモリ使用量を減らすことができます。最後に、マテリアルテクスチャは Multi Texturing を無効にすることで減らすことができ、また Effects タブの Display Textures を完全に無効にすることで減らすことができます。
シャドウで使われるテクスチャは、シャドウをオフにしたり、またはたくさんのエリアライトが Effects タブで使われていれば、シャドウの Quality を Point に下げることで、再利用することができます。
フレームバッファ使用量は、 Scene Antialiasing を下げたり、 HDR Rendering を無効にすることで減らすことができます。 Scene Antialiasing は、アンチエイリアス係数(2x, 4x, 8x)でフレームバッファサイズを増やし、VRAM使用量の大元となります。 HDR Rendering はフレームバッファサイズを50%増やします。
フレームバッファメモリはHoudiniのウィンドウサイズが大きくなると増えます。ほとんどの30インチモニタの2560×1536の解像度のような高解像度ディスプレイは低解像度ディスプレイよりもVRAMを消費します。複数モニタを使うと、同様にフレームバッファを2倍、3倍と消費します。
Note
多くのグラフィックカードは高解像度で複数画面を走らせることができますが、重いジオメトリをテクスチャと高品質なHDR照明によるライトでシーンを表示するのにVRAMが足りない場合があります。グラフィックカードは1画面に512MB以上、これらの機能を使って複数画面を表示するのに最低でも1GBのVRAMを推奨します。