Houdini 20.0 Feathers(羽根)

フェザーのシミュレーションとアニメーション

On this page
Andriy Bilichenko氏による画像提供。

フェザーは静的オブジェクトではなく、多くのダイナミクスプロパティを持つ生き生きとしたエンティティです。 多くのフェザーの種類で、羽軸(うじく:Shaft)は硬いですが、羽枝(うし:Barb)は弾力性があり、鉤(かぎ)形の小突起でつなぎ合わされています。 一方、ふわふわの綿羽(めんう:Down)はヘアーのように動作し、その羽軸(Shaft)にも柔軟性があります。 もちろん、遷移方法は実に多様です。

Houdiniのフェザーシステムでは、上述した羽根の特性の一部をシミュレーションすることができます。 いずれにせよ、実際の羽根に見られるような、個々の羽枝(Barb)間の相互作用をシミュレーションすることはできません。 Houdiniでは、フェザーは全体としてシミュレーションされ、羽枝(Barb)は羽軸(Shaft)/フェザーの本体の動きに追従します。 下の動画でご覧いただけるように、このアプローチによって非常にリアルな印象を作ることができます。 しかし、何億本にもなる可能性のある羽枝(Barb)にダイナミクスを追加するのは非常に困難です。

すべてのシミュレーション作業は、Houdiniの汎用性の高いVellumソルバで実行します。 このシステムを使用して、真に迫った風、重力、乱流の効果を作成できます。 Houdiniのフェザーシミュレーションでは、いくつかの手順が必要となります。

以下は、これから作成するシミュレーションネットワークのプレビューです。 ここで示すすべてのワークフローは、シミュレーションを実行する方法の 1つ にすぎません。 当然ながら、独自のテクニックを使用したり、ポイント選択の代わりにWrangleを使用することもできます。

Andriy Bilichenko氏によるフェザーとグルーム

単一のフェザーのシミュレーション

上記のワークフローの基本が理解できるように、単一のフェザーから始めます。 後ほど、完全なフェザーアトラスでこの方法を使用してきます。

  1. obj レベルで、⇥ Tabを押してTabメニューを開きます。そこからGeometry OBJを追加します。ノードをダブルクリックして、その中に入ります。

  2. Tabメニューを再度開き、 Feather Template エントリを選択します。このツールは、3つのノードから成るネットワークを作成し、完全なフェザーを描画します。そのフェザーが、シミュレーションの土台となります。

  3. Resolution ▸ Barb Density に移動し、値を500に上げて、羽枝(Barb)の数を増やします。

  4. Null SOPでネットワークストリームを終了し、その名前をFEATHERGEOに変更します。

リサンプルと変換

フェザーの低解像度バージョンを作成し、シミュレーションを高速化します。 その後、プロキシから高解像度のフェザーに動きを転送します。

  1. Feather Resample SOPを追加し、プロキシ用に羽枝(Barb)の数を減らします。その 1番目 の入力をFEATHERGEO Nullの出力に接続します。

  2. 3つすべてResample トグルをオンにします。

  3. Shaft ▸ Segments で、12と入力します。実際の数はフェザーによって変わりますが、多くの場合は10から20の間の値でうまくいくでしょう。

  4. “スケルトン”をサーフェスにするために、Feather Surface SOPを配置します。その 1番目 の入力をリサンプルノードの 1番目 の出力に接続します。

  5. サーフェスノードの青の Display/Render フラグをオンにすると、拡大した羽軸(Shaft)が表示されます。これを修正するには、 Surface セクションを開き、 Shaft Width を例えば0.005に下げます。

  6. ここで、 Output Groups タブを開き、 Create Shaft Group をオンにします。

    シミュレーション時、shaftグループのポイントは静的なままなので、それらを残りのフェザーから分離する必要があります。

Tip

Feather Surface SOPは、シミュレーションだけでなく、グルームをプレビューしたり、キャラクタのフェザーの全体的な印象を評価するのに使用しても面白いです。

再メッシュ化(オプション)

再メッシュ化のプロセスはオプションです。 しかし、非常に詳細なフェザーの場合、再メッシュ化することでシミュレーションの詳細レベルを定義できるため、結果を改善できることがあります。

  1. Remesh SOPを配置し、 1番目 の入力をサーフェスノードの 1番目 の出力に接続します。再メッシュ化によってサーフェスの四角形が三角形に変換されるだけでなく、三角形の数を制御することもできます。

  2. 現在、メッシュの解像度は非常に粗くなっています。より高密度のメッシュにするには、 Element Sizing に移動し、 Target Size0.04に設定します。Vellumシミュレーション用に解像度を増減する必要がある場合は、この値を変更します。

    設定が小さいほど、ポリゴンが増え、より正確なシミュレーション結果が得られます。その一方で、シミュレーショ時間は大幅に長くなります。

羽軸(Shaft)

羽軸(Shaft)が特に重要なのは、フェザーを固定するアンカーのように動作するからです。 現在のところ、shaftグループはプリミティブグループです。 しかし、Vellumシミュレーションにはポイントが必要です。 この手順では、shaftグループにポイントを追加します。

Note

風に舞う単一のフェザーの動きをシミュレーションしたいなど、固定されたポイントが必要ない場合は、この章をスキップできます。

  1. Group Promote SOPを追加し、入力を再メッシュ化ノードの出力に接続します。

  2. Group Name および New Nameshaftと入力します。

    Geometry Spreadsheetペインを開くと、オレンジ色のラベルが付いたエントリが表示されます。 よく見ると、これらのポイントがgroup:Shaftに属するようになったことが分かります。

  3. ネットワークのこの部分を完成させるため、Group Expand SOPを配置し、入力をプロモートノードの出力に接続します。このノードの役割は、羽枝(Barb)のポイントを羽軸(Shaft)のグループに追加することです。これにより、より滑らかで、よりリアルな挙動を実現できます。このノードはオプションですが、元のポイント選択を変更することなく、新しいポイントを追加できる便利な方法です。

  4. Steps パラメータを使用して、shaftグループの拡張を制御します。値が大きいほどグループにポイントが増えます。

画像では、デモ用に、かつポイントがよく分かるように、Remesh SOPの Target Size0.02に下げています。

Vellum Solver

フェザーのサーフェスは、1枚の布としてシミュレーションされます。Vellumに慣れていない場合は、Vellum Clothの章で詳細を読むことを推奨します。

  1. Tabメニューから、 Vellum Configure Cloth ツールを追加します。これにより、事前に設定されたVellum Conatraints SOPが作成されます。その 1番目 の入力をGroup Expand SOPの出力に接続します。静的な羽軸(Shaft)のポイントが必要ない場合は、ノードをRemesh SOPの出力に接続してください。

  2. 羽軸(Shaft)を静的にしたい場合は、 Pin to Animation セクションに移動します。 Pin Points で、shaft(羽軸(Shaft)のポイントを含むグループ)と入力します。静的にする必要がない場合は、デフォルト設定のまま続けます。

  3. Vellum Solver SOPを配置します。その3つの入力を、拘束ノードの3つの出力に接続します。 Solver タブのデフォルト設定から始めましょう。不安定になったり、ポリゴンが交差するなどの問題が生じたら、 SubstepsConstraint Iterations を上げます。シミュレーションにかかる時間は長くなりますが、精度が向上します。

Forces

ソルバには、 Forces タブに組み込みのフォースがいくつかありますが、それでは目的の効果を得られない場合もあります。 例えはノイズのかかった乱流を作成するには、ソルバノードをダブルクリックしてその中に入ります。 そこにFORCE出力があります。

  1. POP Force DOPを追加し、その出力をFORCEノードの入力に接続します。POP Forceノードの代わりに、POP Wind DOPを使用することもできます。このノードは、ノイズと風を組み合わせます。

  2. Noise タブには、フォースを制御するための幅広いパラメータがあります。 Amplitude で、フォースの強度を定義することができます。

  3. ソルバレベルに戻ります。

画像をクリックすると拡大します。

Caching

シミュレーションは、再利用したり、システムリソースを解放したり、スムーズな再生を保証するために、キャッシュ化することを推奨します。 Vellumシミュレーションには、すべての関連データを自動的に保存できる特殊なノードがあります。

  1. Vellum I/O SOPを追加し、3つの入力をソルバの3つの出力に接続します。

  2. Constructed ファイルパス( Base NameBase Folder で構成される)を使用したくない場合、 Explicit パスを指定することができます。どちらの場合でも、 Open floating file chooser ボタンをクリックします。その後、シミュレーションデータを保存したいフォルダを選択します。

  3. パスとファイルを定義したら、 Caching タブに移動し、 Save to Disk をクリックします。 Sequence セクションで設定されたフレーム範囲がキャッシュ化されます。また、このノードで Load from Disk オプションもオンになります。

動きの転送

最後の手順では、シミュレーションデータを高解像度のフェザーに転送します。 このプロセスでは、全部で3つの入力ソースが必要です。

  1. Feather Deform SOPを追加します。

  2. データを転送するには、以下のように接続します。

    • 高解像度のフェザーを取得するため、 1番目 の入力をFeather Template from Shape SOPの出力に

    • サーフェスの静止位置を読み込むため、 4番目 の入力をVellum Constraints SOPの 1番目 の出力に

    • モーションデータのため、 5番目 の入力をVellum I/O SOPの 1番目 の出力に

  3. 転送用のノードの Deformer Type ドロップダウンから、 Surfaces を選択します。

  4. プレイバーで、 再生 ボタンをクリックして、高解像度フェザーの動きを確認します。

  5. Null SOPでネットワークを終了します。また、FEATHERGEO_SIMなどに名前を変更することを推奨します。

十分な解像度と適切な設定を使用すれば、詳細レベルの高い、説得力のあるアニメーションを実現することができます。

単一のフェザーのアニメーション

必ずしもVellumを使用して完全なシミュレーションを実行する必要はありません。 場合によっては、プロシージャルアニメーションの方法を使用して、素早く結果を得ることも可能です。 このアプローチのメリットは、前述のシミュレーション方法と大差ないところです。 基本のワークフローは同じです。リサンプルしたフェザーからサーフェスを作成し、アニメーションを追加して、動きを高解像度バージョンに転送して戻します。

以下は、これから作成するネットワークです。フェザーを作成し、それを低解像度サーフェスに既に変換していると想定しています。

画像をクリックすると拡大します。
  1. 羽軸(Shaft)は静的なままにしておき、羽弁(うべん:vane)とは分ける必要があります。Feather Surface SOPを選択し、 Output Groups セクションを開きます。 Create Shaft Group をオンにして、shaftプリミティブグループを作成します。

  2. プリミティブグループをポイントグループに変換するには、Group Promote SOPを追加し、その入力をサーフェスノードの 1番目 の出力に接続します。

  3. Group Name および New Name の両方にshaftと入力します。

  4. Group Invert SOPを配置し、その入力をGroup Promote SOPの出力に接続します。

    Group Invertで、フェザーの羽弁(Vane)のポイントを選択します。このノードが必要な理由は、Vellumソルバには Pin Point オプションがあり、静的なままにしたいポイントグループを追加できるからです。このアプローチにはそうしたオプションはないので、羽弁(Vane)の明示的なグループを定義しなくてはなりません。

  5. 反転ノードで、 Group NameshaftNew Namevanesに設定します。

ノイズ変形

ノイズは、風の影響を再現するのに最適な方法です。 物理的に正確なVellumシミュレーションの代わりに、乱流の挙動を作成するための“方法”を使用します。 しかし、重力や、異なるフォースの組み合わせが必要な場合は、Vellumのみが真に迫った結果を実現できるソリューションとなります。

  1. Attribute Noise SOPを追加し、その入力を反転ノードの出力に接続します。

  2. General セクションで、 Group に移動してvanesと入力します。

  3. Attribute Names で、デフォルトのCdエントリをP置き換え 、フェザーのポイント位置を変更します。

  4. Noise Value セクションには、ディスプレイスメント効果の強度を制御できる Amplitude パラメータがあります。約0.05、またはそれ以下の値から始めましょう。

  5. Noise Pattern セクションを開き、 Element Size を下げて構造をもっと細かくします。

  6. 最後に Animation をオンにして、セクションを展開します。 Pulse Duration で、ノイズディスプレイスメントの速度を制御することができます。

動きの転送

この最後の手順では、低解像度のサーフェスから元のフェザーに動きを転送します。

  1. Feather Deform SOPを追加します。

  2. Deformer Type サブメニューから、 __Surfaces__を選択します。

  3. データを転送するには、以下のように接続します。

    • 高解像度のフェザーを取得するため、 1番目 の入力をFEATHERGEO Nullの出力に

    • 静止位置を読み込むため、 4番目 の入力をFeather Surfaceの出力に

    • モーションデータのため、 5番目 の入力をAttribute Noise SOPの出力に

  4. プレイバーで、 再生 ボタンをクリックして、高解像度フェザーの動きを確認します。

グルームシミュレーション

前の章では単一のフェザーをシミュレーションする方法を説明しましたが、多くの場合、グルーム全体に風や乱流を追加することになります。

Note

単一のフェザーのシミュレーションの手順を既に実行している場合は、このネットワークを変更せずに再利用できます。

この例のセットアップは、基本のばら撒きプロジェクトと、このページで説明しているシミュレーション方法を組み合わせたものです。 単一のフェザーのアプローチとの主な違いは、インスタンス化された大量のフェザーがオブジェクトに分布されている、完全なグルームを使用していることです。 ここでは、フェザー、グルーム、シミュレーションネットワークを接続する方法を学びます。

画像をクリックすると拡大します。

ばら撒きグルームについては、便宜でここで説明するので、別のページにジャンプする必要はありません。

  1. グルームに、選択したオブジェクト(Sphere SOPなど)を追加します。

  2. Uniform Scale0.5に設定します。

  3. Hair Generate SOPを配置し、 1番目 の入力を球の出力に接続します。

  4. Distribution ▸ Total Count に、1000の値を入力します。このパラメータは、オブジェクトのフェザーの数を制御します。

  5. Unguided Hairs セクションに移動し、 Length0.25に設定してより長いフェザーを作成します。

  6. ベースオブジェクト(キャラクタ)の法線にフェザーを揃えるには、Guide Tangent Space SOPが必要です。ノードの 1番目 の入力をヘアー生成ノードの 1番目 の出力に接続します。

テンプレートの補間

Hair Generate SOPは、フェザーが表示される場所を示すポイントをばら撒き、フェザーの長さと方向を示す“プロキシ”を作成します。 Feather Template Interpolate SOPは、フェザーテンプレートとばら撒きデータを1つにまとめます。

  1. Feather Template Interpolate SOPを追加し、 1番目 の入力を接線空間ノードの出力に接続します。 4番目 の入力は、Feather Template from Shapeの出力に接続します。

  2. Templates セクションに移動します。 Lookup Method ドロップダウンで、 Group を選択します。ここで扱っているフェザーは1種類だけなので、 Template Group を指定する必要はありません。フェザーがアトラスの一部である場合は、@name==bodyなどの名前を定義する必要があります。

  3. 補間ノードの青の Display/Render フラグをオンにして、フェザーを確認します。

ネットワークを接続する

これで、グルームとシミュレーションネットワークを接続できるようになりました。

  1. Feather Template Interpolate SOPの 1番目 の出力を、Feather Resample SOPの 1番目 の入力に接続します。

必要な作業はこれだけです! shaftグループもポイントに適切にプロモートされ、結果のポイントもピン留めされています。 再生 ボタンをクリックして、シミュレーションを開始できます。 もちろん、Vellum I/O SOPを通してシミュレーションを保存することも可能です。

これは、重力、ノイズ、風のフォースを使ったワークショップの結果です。フェザーに色を付け、視覚的に区別できるようにしています。

Feathers(羽根)

基本セットアップ

描画とシェイピング

ブラッシングとグルーミング

シミュレーション

テクスチャとレンダリング

ツール

動画