On this page |
この章では、SOPフェザーネットワークからデータストリームを取り込んで、それらのデータストリームをHoudini Feather Procedural LOPにバインドする方法を説明します。 また、プロシージャルをCompnent Builderネットワークに組み込んで、適切なパス、名前、さらにはマテリアル定義を含んだ完全なUSDセットアップを用意する方法も説明しています。
Houdini Feather Procedural LOPを配置してパラメータを見ると、そこに Deformer Rest と Deformer Anim のパラメータがあります。 どちらのパラメータも、アニメーション/変形されたフェザーをレンダリング時に直接生成することができます。
変形ワークフローの背後にある考え方は、グルーム自体に加えて、静止状態とアニメーション状態を作成することです。 これがすべてグルームのSOPネットワーク内で行なわれます。 そして、それらの状態をSolarisに取り込んで、ファザーSOPネットワークをHoudini Feather Procedural LOPに接続することができます。 このプロシージャルは、それら2つの状態の差分を追跡し、その差分をレンダリング工程時にフェザーに適用します。 このプロシージャルの Transfer Velocity トグルのおかげで、正しいモーションブラーを得ることができます。
SOPネットワークから変形/アニメーションするフェザーをレンダリングするには、 obj ネットワークからSolaris Stage に切り替える必要があります。
Tip
レンダーネットワークの作成を始める前に、私どもはHoudiniのデスクトップを変更することを推奨しています。 メインメニューのバーから最初のドロップダウンメニュー(デフォルトで Build に設定されています)を開き、 Solaris または Solaris LookDev を選択します。 これはScene Graph Treeにアクセスするのに重要です。 Scene Graph Treeでは、シーンのプリミティブとその階層を確認することができます。
Component Builderは、以下のLOPネットワークの中心となるツールです。 もちろん別のセットアップを使用しても構いませんが、Component Builderは非常に使いやすくて便利なツールです。 マウスカーソルをネットワークエディタ内に移動させて⇥ Tabを押してTabメニューを開くことで、このツールを見つけることができます。 そのTabメニューから Component Builder を選択します。 このツールは、5個のノードで構成されたネットワークを作成しますが、プロシージャルを実現するためにさらにいくつか新しいノードを追加する必要があります。
Component Builderは、Scene Graph Tree内に特定の階層を確立します。 Solaris デスクトップで作業しているのであれば、UIの左下コーナーにScene Graph Treeが見つかります。 私どもはComponent Builderのこのデフォルトの階層と名前を使用することを推奨します。 その理由は、グルームとComponent Builderを接続する時にそれらが重要な役割を果たすからです。
Note
Component Builderのマテリアル関連のノードは、次の考慮内容に関係しないので説明していません。 フェザーにマテリアルを追加する方法の詳細は、フェザーのレンダリングのページを参照してください。
下図のスクリーンショットは、そのネットワークに関連したノードを示しています。 青 のノードは、Component Builderのオリジナルのノードです。 黄 のノードは、セットアップ作業で追加する必要があるノードです。
-
Component Geometry LOPを選択します。このノードは、適切なSOPネットワークからグルームを読み込みます。
Note
ここではポリゴンサーフェスではなく、羽軸と羽枝を含んだ実際のフェザーをロードします。 Source メニューから External SOP Network を選択します。
-
Default/Render パラメータには、
GROOM
Nullのパスを入力します。 それをするために、ボタンをクリックして、そのNullを選択します。 Accept をクリックして選択を確定します。これで/obj/render_setup/GROOM
エントリーが表示されます。Scene Graph Treeには、新しく
/ASSET/geo/groom
ツリーが追加されています。
フェザープロシージャル ¶
Houdini Feather Proceduralにもいくつかの準備が必要です。 このプロシージャルがうちに秘めたるパワーは、以下のノードが集まって発揮します。
-
Primitive LOPを追加し、それをComponent Geometry LOPとComponent Material LOPの間に配置して接続します。
このノードは、基本的には、プロシージャルで必須となるほとんどの基本アトリビュートを含んだ既存のカーブのコピーを作成します。 そのため、もっとリソースに優しいバージョンが得られます。
-
Primitives Paths フィールドに
ASSET/geo/procedural
と入力して、Component Builderのツリー構造にそのエントリーを追加します。 -
次に、 Primitive Type を指定します。ドロップダウンメニューから BasicCurves を選択します。
-
そして、Houdini Feather Procedural LOPを追加し、それをPrimitive LOPとComponent Material LOPの間に配置して接続します。
-
Procedural Prim に
ASSET/geo/procedural
と入力します。これは、上記の手順2でPrimitive LPで追加したものとまったく同じパスです。 -
Groom Rest パスは
/ASSET/geo/groom
です。このパスもComponent Geometry LOPで既に作成しているので見慣れているはずです。 -
モーションブラーが得られるようにするために、 Transfer Velocity を有効にして、フェザーサーフェスから
v
とw
のPointアトリビュートを読み込みます。
Scene Graph Treeを見ると、新しくproc
エントリーが追加されているはずです。
SOP Import ¶
Deformer Rest と Deformer Anim のパラメータを見てみましょう。
どちらのエントリーも必要で、適切な情報が用意できるように既にRENDER_DEFORMER_REST
とRENDER_DEFORMER_ANIM
のSOPネットワークブランチを作成していることを忘れないでください。
-
SOP Import LOPを追加し、それをPrimitive LOPとHoudini Feather Procedural LOPの間に配置して接続します。
-
1つ目のノードの SOP Path で、ボタンをクリックして、
RENDER_DEFORMER_REST
Nullを選択し、 Accept をクリックします。 -
Sublayer Style ドロップダウンメニューから、 Copy SOP Layer Into New Active Layer を選択します。技術的な話は抜きにして、このオプションによってパフォーマンスが良くなります。
-
このノードのインポートされたデータをScene Graph Treeの正しいブランチに追加するために Import Path Prefix が必須です。Component Builderのデフォルトのパスを変えなかった場合、このエントリーは
ASSET/geo
です。 -
もう1つのパフォーマンスを上げるトグルが Primitive Definition セクションにあります。そこで、 Define Only Leaf Primitives の 2つ のトグルをオンにします。
-
最後に、 Kind Authoring トグルをオンにして、ドロップダウンメニューから None を選択します。
⌃ Ctrl + Cと⌃ Ctrl + Vを使用して、このSOP Import LOPをコピーアンドペーストします。それを元のインポータの下流に接続します。
ここで唯一変更すべきなのが SOP Path です。再び、ボタンをクリックし、今回はRENDER_DEFORMER_ANIM
Nullを選択し、 Accept をクリックします。
下図のようにこれら2つの状態がScene Graph Treeツリーの一部になっているのが分かります。
デフォーマ状態を接続する ¶
まだ、Houdini Feather Procedural LOPに静止状態とアニメーション状態を認識させる必要があります。
-
プロシージャルを選択します。
-
Deformer Rest で、
/ASSET/geo/deformer_rest
と入力して、静止状態を指定します。 -
Deformer Anim パスは
/ASSET/geo/deformer_anim
です。 -
モーションブラーが得られるようにするために、 Transfer Velocity を有効にして、フェザーサーフェスから
v
とw
のPointアトリビュートを読み込みます。
参照 ¶
Component Output LOPからの出力を参照に変換するのは必須ではありませんが、一般的によくする操作です。 このセットアップでは、Asset Reference LOPが関連するシーンエレメントを集め、新規にきれいに配置されたツリー構造を作成します。
-
Asset Reference LOPを追加し、その 2番目 (!)の入力をComponent Output LOPの出力に接続します。
-
Destination Primitive に
/world/feather
または他のカスタムパスを入力します。しかし、/world
はUSDの世界で確立されている接頭辞です。Note
ライトやカメラなどの追加エレメントは常に
/world
に入れるべきです。 ここでは、後で説明するマテリアルのエントリーが既に確認できます。
最終工程 ¶
現時点では、3つのSOPストリーム(groom, rest, animation)すべてがまだ表示されており、その結果が正しくないです。 ビューポートでは、フェザーがSOPネットワークのものと違っているのが分かります。 そのため、Houdini Feather Proceduralの出力のみを残すためにSOPストリームを削除する必要があります。
-
Configure Primitive LOPを追加し、その入力をAsset Reference LOPの出力に接続します。
-
Primitives パラメータには、SOPネットワークで作成されたジオメトリプリミティブすべてを格納する必要があります。
Note
必ず新しい参照パスを使用してください。
*
などのワイルドカードを使用して、共通する接頭辞や接尾辞を含んだプリミティブを取得することもできます。 このサンプルのセットアップのエントリーは/world/feathers/geo/deformer_* /world/feathers/geo/groom
です。
-
Visibility トグルをオンにして、ドロップダウンメニューから Invisible を選択して、そのオブジェクトを非表示にします。
-
最後に、Houdini Preview Procedurals LOPを追加して、ビューポートにレンダリング時に生成されるフェザーのみを表示します。 その入力をConfigure Primitive LOPの出力に接続します。
下図は、モーションブラーを使用したフェザーの拡大部分を示しています。
マテリアル ¶
フェザーを表示するには基本的なマテリアルが必要で、まずはシェーダが必要です。 シェーダは、個人の好みやプロダクションの要件に強く依存します。 そのため、ここではシェーダの接続方法のみを学習します。 シェーダの構築方法に関する詳細は、Karmaユーザガイドを参照してください。
-
Material Library LOPをダブルクリックして中に入ります。そこで、Tabメニューを開いて、 Karma Material Builder ツールを選択します。そのノードの名前を
feather
に変更します。 -
その新しい
feather
ノードをさらにダブルクリックして中に入ります。 -
Karma Hair VOP または Karma Fur VOPを追加し、そのシェーダの
surface
出力をSubnet Output VOPのsurface
入力に接続します。 -
調整を行ない、MtlX Image VOPを使用してテクスチャを読み込んで、シェーダを完成させます。その後、 stage レベルに戻ります。
-
再びMaterial Library LOPを選択して、 Material Path Prefix に進みます。そこで
/ASSET/mtl/
と入力します。これは、Component Material LOPによって作成されたパスで、 シェーダが存在する場所です。