On this page |
フェザーのレンダリングは主に、いくつかのSOPセットアップと、すべてを1つにまとめるSolarisネットワークの2つのパートに基づいています。 あなたが好スタートを切れるように、この章では、作業を別々のネットワークに分けて、レンダリング用の準備をする方法を示した基本的な例を通して、工程全体を順を追って説明します。
もちろん、緻密なフェザーの描画、フェザーのアトラス、様々なブラシ、ガイド、シミュレーション、キャラクタのリアルな外観を実現するのに必要なあらゆるものを活用したもっと複雑なグルームで各工程を置き換えることができます。
2つ目のSolarisネットワークのパートでは、Houdiniの便利なComponent BuilderツールとHoudini Feather Procedural LOPに基づいたSolarisセットアップを使用します。 Houdiniプロシージャルは、レンダリング時に複雑なジオメトリを直接作成し、利用可能なレンダーデリゲートで動作します。 ただし、プロシージャルにはいくつか準備が必要なものの、パフォーマンスが向上したり、メモリ使用量が少なくなるといった恩恵が得られます。 特にKarma XPUのGPUレンダリングと組み合わせれば、これは大きな利点となります。
フェザー ¶
フェザーをレンダリングする前に、当たり前ですがフェザーを作成する必要があります。 これは別のSOPネットワーク内で行ないます。
-
obj レベルで、Geometry OBJを作成し、その名前を
feather
に変更します。そのノードをダブルクリックして中に入ります。 -
TabメニューからFeather Templateツールを選択して、基本的なフェザーを作成します。お好みで自由にフェザーの形を作り、Feather Template from Shape SOPのパラメータを変更します。
-
Null SOPを追加し、その入力をその上流のFeather Template from Shape SOPの出力に接続します。
-
そのNull SOPの名前を
FEATHER
に変更し、 obj レベルに戻ります。
グルーム ¶
下図のスクリーンショットは、先ほど作成したファザーテンプレートをSphere SOPのポイント上にコピーした非常に基本的なグルームを示しています。 The groom consists of curves that you can brush into shape as you would do it with a sophisticated character.
-
再び、 obj レベルでもう1つGeometry OBJを作成し、その名前を
groom
に変更します。そのノードをダブルクリックして中に入ります。 -
feather
ネットワークから出力所目鳥を取り込む必要があるので、Object Merge SOPを配置します。 -
その Object 1 パラメータの隣にある Open floating operator chooser ボタンをクリックし、
/obj/feather/FEATHER
Null SOPを選択します。 Accept をクリックして選択を確定します。 -
フェザーを球上に正しく乗せるために、たいていの場合はフェザーを回転する必要があります。Transform SOPを追加して、その入力をそのObject Merge SOPの出力に接続します。
-
Rotate.Y を
180
度に設定します。
フェザーを適用する ¶
これで、球“キャラクタ”にフェザーをコピーする準備ができました。 ここで作成するネットワークがアニメーションのベースとなります。
-
Sphere SOPを追加します。
-
Primitive Type を Polygon に変更して、その球の極を除去し、均一なメッシュを作成します。
-
Attribute Wrangle SOPを追加し、その 1番目 の入力をそのSphere SOPの出力に接続します。
-
このAttribute Wrangle SOPは Points モードです。フェザーを正しい方向に揃えるために、1行のVEXコードでポイントのUpベクトルをYにします。
v@up = {0,1,0};
-
Copy to Points SOPを追加し、その 1番目 の入力をTransform SOPの出力に接続します。その 2番目 の入力をそのAttribute Wrangle SOPの出力に接続します。 すると、このCopy to Points SOPは、フェザーを球のポイントに適用します。
-
Null SOPを追加し、その名前を
GROOM
に変更します。その入力をそのCopy to Points SOPの出力に接続して、そのNull SOPでネットワークを終了します。
レンダーセットアップ ¶
正確に言うとこの例ではアニメーションとレンダリングが一緒に結ぶ付いているので、これは、アニメーション と レンダリングのセットアップを含んだもう1つの別のネットワークです。 ここで行なう事は、Houdini Feather Procedural LOPで使用するすべてのものを準備することです。. この目的を達成するには、合計3本の出力ストリームが必要です。 下図がレンダーセットアップの完全なネットワークです。
-
これまでと同様に、 obj レベルでGeometry OBJを作成し、その名前を
render_setup
に変更します。そして、そのノードをダブルクリックして中に入ります。 -
グルームを読み込むために、Object Merge SOPを追加し、その名前を
IN_GROOM
に変更します。 -
その Object 1 パラメータの隣にある Open floating operator chooser ボタンをクリックし、
/obj/groom/GROOM
Null SOPを選択します。 Accept をクリックして選択を確定します。
リサンプリングとサーフェス化 ¶
大規模なグルームだと数百万本の羽枝の構成となって、ビューポート速度と操作速度が低下してしまいがちです。 そのため、そのグルームの複雑さを一時的に減らすのは良い考えです。 また、フェザーをアニメーションさせるためには、フェザーをポリゴンサーフェスに変換する必要性が出てきます。
-
Feather Resample SOPを追加し、その 1番目 の入力をそのObject Merge SOPの出力に接続します。
-
Resample Shaft と Resample Barbs のトグルをオンにし、例えばそれぞれの値を
10
と2
に下げます。 -
Feather Surface SOPを追加し、その 3本 の入力をそのFeather Resample SOPのそれぞれ呼応する出力に接続します。
-
Surface セクション内の Shaft Width を
0.01
のような小さな値に設定して、羽軸を細くします。 -
また、適切なパラメータを使用してグルームの羽軸と羽枝の幅を直接制御できるようにFeather Width SPを追加したいことでしょう。Feather Width SPの 1番目 の入力をObject Merge SOPの出力に接続して、新しいブランチを作成します。
アニメーション ¶
この例では、アニメーションを2つの工程で行ないます。 1つ目の工程は、Feather Surface SOPからのサーフェスを回転させます。 2つ目の工程は、そのサーフェスにアニメーションノイズを適用して、そのサーフェスに変位を加えます。
-
Transform SOPを追加し、その入力をFeather Surface SOPの 1番目 の出力に接続します。
-
Rotate.Y に次のエクスプレッションを入力します:
90 * @Time
。この式は、アニメーションの現行時間を受け取り、その時間に90
を乗算することで、十分大きく見える角度を取得しています。 -
TabメニューからMountainツールを追加します。その入力をそのTransform SOPの出力に接続します。
-
Noise Value ▸ Amplitude に
0.5
と入力して、十分な変位を取得します。 -
Animation トグルをオンにして、時間軸でこのノイズパターンを変化させます。
-
Delta Mush SOPを配置し、 その 1番目 の入力をそのMountainノードの出力に接続します。その 2番目 の入力をそのTransform SOPの出力に接続します。 このDelta Mush SOPは、フェザーの角張った見た目を解消するためにポイントを滑らかにします。
モーションブラー ¶
さらにTrail SOPを追加してサーフェスのVelocityと角速度を計算し、その結果を適切なv
とw
のPointアトリビュートに書き出すことを推奨します。
これらのアトリビュートはモーションブラーのレンダリングに必要です。
-
Trail SOPを追加し、その入力をDelta Mush SOPの出力に接続します。
-
次に、 Result Type を Compute Velocity に設定します。
変形 ¶
この変形パートでは、フェザーの静止状態をポイントに書き出します。 上記の完全ネットワークのスクリーンショットに、Feather Deform SOPがあるのが分かります。
このノードの 1番目 の入力には、Condensed(縮約)フェザーが必要です。 しかし、その 4番目 の入力が特に重要です。 この入力には、ポリゴンに変換された静止状態のフェザーを接続します。 らに考慮すべきことが2つあります。
-
ここではポリゴンサーフェスを扱っているので、Feather Deform SOPの Deformer Type は Surfaces に設定する必要があります。
-
Feather Deform SOPの Mode は、 4番目 の入力からの変形情報をPointアトリビュートとして格納できるように Capture にします。
命名 ¶
このセットアップのゴールは、グルームとフェザーサーフェスをSolarisに取り込んで、そのシーンをレンダリングすることです。 Solarisでは、プリミティブを識別できるように名前が重要な役割を果たしています。 3本のデータストリームをプロシージャルへ送信するために、3個のName SOPを追加します。
-
各Name SOPの Name パラメータには、それぞれ
groom
、deformer_rest
、deformer_anim
と入力します。 これらの名前は後ほどSolarisのScene Graph Treeに出現することになります。 -
その
groom
ノードの入力をFeather Deform SOPの出力に接続します。 -
その
deformer_rest
ノードの入力をFeather Surface SOPの出力に接続します。 -
その
deformer_anim
ノードの入力をTrail SOPの出力に接続します。
Null ¶
Null SOPを使用して、3つのネットワークブランチを終了します。
-
GROOM
には、フェザーの ポイント 上に静止状態が含まれたフェザーを格納します。 -
RENDER_DEFORMER_REST
には、フェザーの サーフェスポリゴン の静止ジオメトリを格納します。 -
RENDER_DEFORMER_ANIM
には、アニメーションする サーフェスポリゴン を格納します。