On this page |
フェザーのばら撒きおよびフェザーを適用するのページでは、フェザーを追加する2つの基本的な方法(ばら撒きと、描画して植え付け)を学びました。 描画の良い点は、何百、何千という個々のフェザーは必要なく、いわゆるガイドがいくつかあれば済むところです。 ガイド間のフェザーは、後で特別なノードを使用して補間されます。 そのプロセスの概要は、既にここで説明しています。
ガイドは、Guide Groom SOPを使用して作成されます。 Draw ツールは、文字通りキャラクタのサーフェスからフェザーを“引き”出します。 また、ガイドをミラー化すれば、ワークフローをさらに高速化できます。
このページは、フェザーを適用するページの続きであり、以下はそのネットワークです。
フェザーは別のコンテナ(/obj/atlas/ATLAS
)に格納されています。
以下は、これ以降で使用するガイドで、前に使用したものと同じです。ご覧の通り、ガイドの長さや方向は様々です。
Hair Generate SOP ¶
Houdiniのヘアーとファーのグルーミングに慣れている方であれば、ここで説明するワークフローの多くに見覚えがあるでしょう。 多くの場合、方法がよく似ていたり、同じノードを使用していたりします。 それらのノードの1つがHair Generate SOPです。 このノードはサーフェスにヘアーをばら撒いたり、ポイントからヘアーを作成します。 そのヘアーを使用して、フェザーを適用します。
-
上記の最初の画像に示すネットワークにHair Generate SOPを追加し、青の Display/Render フラグをオンにします。
-
Hair Generate SOPを以下のように接続します。
-
1番目 の入力をGuide Groom SOPの 2番目 の出力に( Skin → Rest Skin )
-
2番目 の入力をGuide Groom SOPの 1番目 の出力に( Guides → Guides )
-
-
Attributes & Appearance タブを開き、 Guide Attribute Transfer まで下にスクロールします。 Point Attributes パラメータに、
barborient
と入力します。このアトリビュートは、インスタンスをガイドに揃えるのに必要です。
調整を始めて結果を表示する前に、もう1つノードが必要です。すぐ下の章に進んでください。
Guide Interpolation Mesh ¶
このノードは、guides
とweights
アトリビュートをペアで追加することで、ガイドを補間するのに必要となる、特別な種類の低解像度メッシュを生成します。
-
Guide Interpolation Mesh SOPをネットワークに追加します。
-
Guide Interpolation SOPを以下のように接続します。
-
1番目 の入力をGuide Groom SOPの 1番目 の出力に( Guides → Guides )
-
2番目 の入力をGuide Groom SOPの 2番目 の出力に( Skin → Skin )
-
出力をHair Generate SOPの 5番目 の入力に( Output → Hair Interpolation Mesh )
-
通常はガイドメッシュノードのデフォルト設定のまま進めることができますが、ガイドメッシュのジオメトリを微調整または変更したい場合は、 Mesh セクションに移動します。 そこでは、例えば、 Iterations パラメータを使用してメッシュの品質を調整することができます。 値を高くすると、ポリゴン数が減少します。 Remesh をオフにすると、ノードはキャラクタの元の解像度を使用します(左の画像)。
補間設定 ¶
Hair Generate SOPで最終設定を行なって、密集したふわふわの“ファー”を作成する準備が整いました。
-
General タブで、 Guide Weights セクションに移動します。
-
Compute Weights Using Skin Coordinates をオンにします。このアトリビュートは、補間メッシュから
weights
アトリビュートを読み込みます。これはフェザーを均等に分布させるアトリビュートです。以下は、このオプションを オフ と オン にした場合のプレビューです。 -
Use Interpolation Mesh をオンにして、キャラクタの低解像度バージョンを使用します。
-
Skin Guide Mode ドロップダウンで、 Weight Array Pair (guides & weights) を選択します。このオプションは、
guides
およびweights
アトリビュートを組み合わせて、ヘアーを補間します。これで、ヘアーがガイドに追従します。また、ヘアーは様々な長さや方向になっています。 -
ノードによって、フェザーガイドのない領域にヘアーが追加されている場合もあります。これらのフェザーを削除するには、 Unguided Hairs に移動し、 Grow Unguided Hair をオフにします。
-
補間されるフェザーの数を変更するには、 Distribution セクションにスクロールし、 Density を変更します。値が高いと、ヘアー/フェザーの数が増えます。
フェザージオメトリを取得する ¶
前述のように、フェザーとグルームは別々のGeometry OBJs内にあります。 このように分けることは必須ではなく、すべてを1つのジオメトリコンテキストに収めても構いません。 しかし、20、30、またはそれ以上のフェザーを含むテンプレートの場合、混乱状態に陥りやすくなります。
-
Object Merge SOPを現在のネットワークに追加します。
-
Object1 に移動し、 Open floating operator chooser ボタンをクリックします。シーンツリーを含むフローティングパネルが表示されます。フェザージオメトリを含むネットワークを終了する、Null SOPに移動します。この例では、パスは
/obj/feathers/ATLAS
です。
既にGuide Process SOP内でATLAS
Nullに接続して、body
およびdown
テンプレートを選択してあります。
しかしこの手順では、ATLAS
を別のノードに接続する必要があります。
そのため、フェザーを“再インポート”しなくてはなりません。
Feather Template Interpolate ¶
3つ目の最後のノードですべてがまとまり、最終的にキャラクタの元のジオメトリ上にフェザーが作成されます。
-
Feather Template Interpolate SOPを以下のように接続します。
-
1番目 の入力をHair Generate SOPの 1番目 の出力に( Feathers → Hair Curves )
-
2番目 の入力をHair Generate SOPの 2番目 の出力に( Skin → Skin )
-
4番目 の入力をObject Merge SOPの出力に( Feather Templates → Output )
-
デフォルトの設定と値では、結果は以下の画像のようになります。
ノードは、templatenames
、templateweights
、barborient
アトリビュートを使用して、フェザーの形状を補間します。
フェザーの交差を回避する ¶
結果をよく見ると、多くのフェザーが交差していることが分かります。 しかし実際の鳥の羽根は、重なり合った屋根板のように配置されています。 Feather Deintersect SOPを使用すれば、フェザーを離して交差を回避することができます。 フェザーの交差回避はGPUアクセラレーションに対応していますが、フェザーが大量で低性能のGPUの場合は、処理が遅くなる可能性があります。
以下がネットワーク全体です。
-
Feather Visualize SOPを追加し、その3つの入力をFeather Template Interpolate SOPの3つの出力に接続します。
-
このノードを使用して、ビューポートでフェザーがどのように表現されるか定義できます。 Barb Mode ドロップダウンメニューから、 Surface を選択してフェザーのポリゴンバージョンを作成します。
-
また、Color SOPも配置できます。このノードは必須でなく、上のネットワークグラフでは追加していません。Color SOPを使用してフェザーにランダムな色を適用すると、交差を特定しやすくなります。ノードの入力をFeather Visualize SOPの 1番目 の出力に接続します。
-
フェザーオブジェクトを着色したいので、 Class ドロップダウンから Primitive を選択します。
-
Color Type を __Random_ に設定します。
-
Feather Deintersect SOPを配置し、 1番目 の入力をColor SOPの出力に接続します。 2番目 と 3番目 の入力は、Feather Visualize SOPの適切な出力に接続します。
まずはFeather Deintersectノードのデフォルト設定のまま、その設定で十分かどうかを確認します。 フェザーの交差回避をするのに最も効果的なパラメータは Feather Geometry ▸ Thickness で、ここでフェザーのボリュームを制御することができます。 値を高くすると分離効果が強くなり、よりふわふわした印象になります。
またこのノードは羽軸(Shaft)と羽枝(Barb)をリサンプルするため、結果が向上することがあります。 Iterations を使用して、交差回避処理の品質を制御します。 高く設定するほど結果は向上しますが、パフォーマンスの低下につながります。
以下は、交差回避処理の前後のフェザーを比較したものです。