On this page |
Houdini Procedural: Crowd LOPは、レンダリング時に群衆シミュレーションを直接最適化できる便利なツールです。このプロシージャルは、よく似たポーズの背景エージェントを見つけ、それらを同じ変形ジオメトリのインスタンスに変換します。
このツールは、シーンのカメラと解像度に基づいて、画像内のエージェントのピクセルサイズを決定します。エージェントが LOD Threshold パラメータと照らし合わせて十分に離れている場合、ポーズが十分に類似していれば、プロシージャルはそのエージェントを、別のエージェントの変形ジオメトリのインスタンスに置き換えます。もう一方のエージェントは、同じSkelRoot
プロトタイプのインスタンスである必要があります。これにより、固有のジオメトリの量が低減され、リソース消費の少ないシーンにすることができます。
Note
SkelRoot
は基本的に、以下を含むトランスフォームプリミティブです。
-
スキニングウェイトとジョイントインデックスを記述したPrimvarを持つ、ジオメトリプリミティブ(メッシュなど)
-
ジョイント階層を記述した
Skeleton
プリミティブ -
スケルトンの(アニメートされた)ポーズを記述した
SkelAnimation
プリミティブ *アニメーションとスケルトンをスキンプリミティブにバインドするアトリビュート。
よく似たメカニズムがMantraに既に存在しており、自動的に有効にされ、バックグラウンドで実行されていました。しかし、Solaris/Karmaでは、プロシージャルのパラメータを完全に制御できます。このツールの目的は、メモリとパフォーマンスの改善だけでなく、MantraからSolaris/USDへの移行プロセスを円滑かつユーザフレンドリーなものにすることです。
プロシージャルには、“従来”のワークフローと比べて、以下のようないくつかの利点があります。
-
ワークフロー全体の向上
-
Solaris/USD、Karma、他の任意のレンダーデリゲートで動作
-
プレビュープロシージャルにより、ビューポートで結果を確認
-
他のHoudiniプロシージャルと統合されたワークフロー
以下の章では、SOPで群衆を作成し、その結果をプロシージャルに接続する、典型的な例について説明します。適切なパラメータを使用して、エージェントおよびインスタンスの数を制御できます。カラー使用して、エージェントとインスタンスが表示される場所を検査できます。
群衆シーン ¶
このシーンは、Houdiniに付属する Stadium Example をベースとしたものです。サンプルは、 Crowd シェルフにあります。

-
シェルフを開き、サンプルの
アイコンをクリックしてシーンに追加します。少しすると、セットアップが完了します。
-
ビューポートの右上に2つのボタンが表示されます。2つ目のボタン( No cam エントリ)をクリックして、ドロップダウンメニューを開きます。そこから stadiumcrowdexample/cam1_side を選択して、群衆がよく見えるようにします。
ネットワークを見ると、3つのグレーのボックスがあります。Simulation
ボックスは、特に重要なノードを含みます。crowd
は、プロシージャルによって使用されるアニメートされたキャラクタを含みます。
Solarisセットアップ ¶
Tip
Solarisネットワークの作成を始める前に、私どもはHoudiniのデスクトップを変更することを推奨しています。メインメニューのバーから最初のドロップダウンメニュー(デフォルトで Build に設定されています)を開き、 Solaris または Solaris LookDev を選択します。これはScene Graph Treeにアクセスするのに重要です。Scene Graph Treeでは、シーンのプリミティブとその階層を確認することができます。
ジオメトリのインポート ¶
シーンには、観客用のスタジアムセクションがあります。このオブジェクトはプロシージャルに必要ありませんが、当然ながら全体像を把握することが大切です。
-
stage レベルで、
SOP Import LOPを作成します。 SOP Path に移動し、
Open floating operator chooser ボタンをクリックします。ブラウザを使用して
stadium
ノードに移動し、 Accept をクリックして選択を確定します。この例では、フルパスは/obj/stadiumcrowdsexample/stadium
です。 -
Solaris/USDでは、名前が重要な役割を果たします。Scene Graph Treeでは、新しくインポートされたジオメトリの名前は単に
sopimport1
で、これはノードの名前です。インポートノードの名前をstadium
に変更して、識別しやすくします。
カメラのインポート ¶
カメラが必要です。プロシージャルはカメラを使用して、距離やピクセルサイズを測定し、エージェントをインスタンスに置換できるかどうかを判断するからです。
⇥ Tabを押してタブメニューを開きます。そこから Scene Import (Cameras) を選択します。これは、事前設定されたScene Import LOPで、SOPネットワークからシーンの3つのカメラを自動的に取得します。
ビューポートの左上に、 No cam ドロップダウンメニューが表示されます。メニューを開き、インポートしたカメラのいずれかを選択します。
群衆のインポート ¶
群衆には、静止状態とアニメーション状態があります。プロシージャルが機能するには、両方の状態が必要です。SOP Crowd Import LOPは、1つのノードを介して両方の状態をロードするように設計されました。また、群集には幅広いアトリビュートがあります。このノードには様々なトグルがあるので、本当に必要なアトリビュートのみをインポートできます。これにより、Solarisシーンのリソース消費を低く抑えることができます。
-
stage レベルで、SOP Crowd Import LOPを追加し、その入力をカメラインポートノードの出力に接続します。
-
SOP Path パラメータは、前述の
crowd
ジオメトリノードを指します。Open floating operator chooser ボタンをクリックします。ブラウザを使用して
crowd
ノードに移動し、 Accept をクリックして選択を確定します。シェルフツールを使用している場合、パスは/obj/stadiumcrowdsexample/crowd
です。 -
Import Path Prefix も指定できます。パラメータのエントリは、群集プリミティブをScene Graph Treeでどのように表示するかを定義します。デフォルトの
$OS
はノードの名前を受け取りますが、これはあまり直感的ではありません。SOPネットワークに直接関連しているため、/crowd
という名前の方が適切です。Scene Graph Treeで
/crowd
エントリを展開すると(以下の画像を参照)、群衆のすべてのキャラクタ、そのSkelRoot
およびMesh
、さらにはツリーの横にあるInspectorでPrimvar/アトリビュートにアクセスできます。画像をクリックすると、全体が表示されます。 -
Import Rest Geometry Data セクションを展開し、 Attributes をオンにして、必要なアトリビュートのみをロードします。静止状態に本当に必要なのは、
P transform uv boneCapture
です。 -
Import Animation Data を使用して、アニメーション状態のアトリビュートの数を制限することもできます。必須の Attributes は
bounds transfrom
です。
レンダリング設定 ¶
多くのユーザは、レンダリング設定をネットワークの最後に適用しますが、Houdini Procedural: Crowdと組み合わせる場合は、プロシージャルの 前に 設定を適用する必要があります。なぜなら、プロシージャルは最終画像におけるエージェントのピクセルサイズを予測するのに、画像解像度を必要とするためです。例えば、わずか数ピクセルのサイズのエージェントは、群衆の外観に影響を与えることなく、置換することが可能です。
-
Karma Render Settings LOPを追加し、その 1つ目 の入力を群衆インポートノードの出力に接続します。
-
カメラが複数ある場合は、 Camera パラメータの関連するドロップダウンメニューを開き、最終レンダリングに使用したいカメラを選択します。
-
Resolution を使用して、画像のサイズをピクセルで指定します。
Engine Settings やサンプル数などの他のパラメータは、プロシージャルに影響しません。
エージェントとカメラ間の距離を測定して群衆のLOD(詳細レベル)を定義するために、レンダリング設定で指定したカメラを使用する必要はありません。代わりに、プロシージャルで直接LOD Cameraを指定することもできます。
Note
ネットワークにUSD Render ROPが含まれ、カメラと解像度の上書きが設定されている場合、プロシージャルはそれらを考慮します。
Houdini Procedural: Crowd ¶
プロシージャルはネットワークの中心部であり、上流のデータをすべて収集して、レンダリング時に直接群衆シミュレーションを最適化します。作業の大半は内部で行なわれ、実際はデフォルト設定のまま進めることができます。ただし、ビューポートでプロシージャルの出力をプレビューできるLOD設定があります。そこではインスタンスの量を調整したり、様々なカラーで視覚化することができます。
-
Houdini Procedural: Crowd LOPを追加し、その入力をKarma Render Settings LOPの出力に接続します。
LOD ¶
デフォルトでは、プロシージャルはレンダリング設定ノードの Camera パラメータのエントリを読み込み、カメラと各エージェント間の距離を計算します。プロシージャルの LOD Threshold パラメータを使用して、 プロトタイプ インスタンス と デフォルト のエージェント間の比率を決定できます。
-
SkelRoot
プリミティブの変形ジオメトリは、背景プリミティブの プロトタイプ として使用できます。 -
背景
SkelRoot
プリミティブは、別のプリミティブの変形ジオメトリの インスタンス になることができます。 -
デフォルト の
SkelRoot
プリミティブは、プロシージャルによって変更されず、元の状態を維持します。
-
Visualize Instances をオンにすると、上記の3つのタイプをカラーで視覚的に区別できます。
-
最終的にカラーを確認するには、
Preview Houdini Procedurals LOPを配置し、その入力を上流の群衆プロシージャルの出力に接続します。
-
プレビューノードの青の Display/Render タグをオンにして、ノードをアクティブにします。
群衆プロシージャルの LOD Threshold パラメータのスライダを左にドラッグします。この場合、多くのディテールが必要なため、白の デフォルト のエージェントが増えていきます。以下の比較画像の左側では、 LOD Threshold は0.3
で、背景には少数の青のエージェントがいます。
反対に、スライダを右にドラッグすると、実際には遠く離れているため、青と緑のキャラクタが増えていきます。エージェントはレンダリングで小さくなり、高い詳細レベルは必要ありません。右側の画像では、 LOD Threshold は2.0
です。


前述のように、エージェントの分布は、レンダリング設定で定義したカメラに基づいています。しかし、別のカメラに基づいてLOD計算を行なうこともできます。スタジアムのシェルフシーンには3つの異なるカメラが付属しています。
LOD Camera をオンにすると、パラメータに関連付けられたドロップダウンメニューを使用して、使用可能な他のカメラを選択し、 LOD Threshold の増減に応じてタイプ間の比率がどのように変化するかを確認できます。