Houdini 20.5 Feathers(羽根)

アニメーションセットアップ

On this page
Andriy Bilichenko氏によるオオハシ。

APEX Add Groom SOPは、キャラクタのフェザーをもっと細かく制御できるように、まったく新しいワークフローをHoudini20.5で導入しました。

経験豊富なユーザであれば、これまでと同じようにすべてのこと(フェザーを描画し、キャラクタ上にそれらのフェザーをばら撒き、補間を行ない、ブラシを適用してグルーミングを作成)を行なうことができます。 Houdini20のワークフローでは、その結果をHoudini Procedural: Feather LOPに直接送信して作品をレンダリングしていました。 しかし、このAdd Groomワークフローでは、グルーミングとレンダリングの間にさらに2つの手順が必要になります:

アニメーション状態に関しては、APEX Add Groom SOPによってマスターフェザーを選択することができます。 この選択に基づいて、このノードは、最小限の設定作業でフェザーのアニメーションを制御する新しいジョイントを自動的に生成します。

首、胴体、翼、尾など色々な領域が定義されている完全にリギングされた鳥を想像してください。 Add Groom SOPでは、それらの領域をコントロールグループとして表現し、それらの領域を個別に扱うことができます。 首付近では、鳥が頭を上げてもフェザーはほとんど動きません。 しかし、鳥が翼を広げると、特に翼の先端で動きが大きくなります。 そこでは、フェザーが広がります。

そのため、あなたがすべき事は、その翼から3、4枚のフェザーを選択することです。 その翼をアニメーションさせると、新しく作成されたジョイントがマスターフェザーを動かし、その翼の残りのフェザーがそれらのマスターフェザーに追従するようになります。 Add Groom SOPは、それらの動きを補間し、フェザー間に滑らかな遷移を生成します。 その新しく作成されたジョイントの多くのコントロールによって、あなたが作成したいものを正確に実現することができます。

このノードには、アニメーション工程を高速化および微調整することができるツールも備わっています。 例えば、アニメーションに寄与しないように特定のフェザーを除外することができます。 典型的な例としては、これは鳥のくちばしや目の付近のフェザーがそうです。 その付近では、短くてほぼ静的なフェザーが密集していることが多いです。 maskアトリビュートを取り入れることで、ジョイントのフェザーに対する影響力を制御することもできます。 または、パラメータを使用して距離に応じてジョイントの影響力を制限することもできます。 これによって、静的なままにしておきたい領域ではフェザーが移動しないようになります。

ノードの入力と出力

APEX Add Groom SOPを配置すると、そこには3つの入力があるのが確認できます。 1番目 の入力には、APEXキャラクタリグを、 2番目 の入力にはグルームを接続します。 また、オプションの 3番目 の入力にはサーフェス(例えば、ポリゴンに変換されたフェザー)を接続することができます。 3番目 の入力を空っぽのままにした場合は、自動的にフェザーがポリゴンに変換されます。

Tip

3番目 の入力を使用して、例えば、Object Merge SOPを介して2つのポーズを取り込むことで、その2つのポーズからrestアトリビュートを抽出することもできます。 しかし、APEXの背後にある考え方としては、実際には1個のBGEOファイルからすべてを取得するべきです。

また、このノードには出力が1つしかないことに気づくことでしょう。 つまり、すべての入力データが1本のストリームにマージされるので、追加の手順では、再びそのストリームを分離させる必要があります。 これは、レンダリングのセットアップでその作業が発生します。

シーンの整理

完全なグルームの作成とレンダリングの手順には多くの異なる工程を伴うので、フェザーネットワークが巨大になってしまいます。 それ故に、ネットワークを別々のGeometry OBJに分けるのは良い考え方です。 以下では、この章およびフェザーのドキュメント全体で使用されているネットワークの名前を載せています。

  • featherまたはatlas。これは、キャラクタのフェザー(s)をデザインして作成するための空間です。

  • groom。ここでは、そのfeatherネットワークまたはatlasネットワークを取り込んで、グルームを適用します。

  • rig。このコンテナの中には、リグが組まれたキャラクタを格納します。

  • animation。これは、APEX Add Groomネットワーク用の空間で、groom空間とrig空間の出力を取り込みます。

  • render。ここでは、そのanimationデータを取り込んで、Solarisでのレンダリングのセットアップを準備します。

好みに応じて以下の作業をします:

  • 外部ファイル。適切なBGEOファイルが指されたFile Cache SOPを介して、リグとグルームを取り込むことができます。

  • 別々のネットワーク。Object Merge SOPを使用することで、シーン要素を取り込むことができます。

このワークフローはあくまで推奨であり、すべてを1個のネットワークに収めるのは自由ですが、別々のネットワークにすることで、シーンがわかりやすく整理され、管理しやすくなります。

Note

このワークフローガイドでは、既にfeathersgroomrigのネットワークが設定されていて、フェザーにアニメーションを付ける準備が整っていることを前提にしています。

アニメーションのセットアップ

以下のスクリーンショットでは、animationネットワークの開始点を示しています。

画像をクリックするとズームします。

rigネットワークには、サンプルのセットアップを作成するのに使用された完全にリグが組まれたオオハシが含まれています。 このサンプルには、キャラクタを読み込むObject Merge SOPが含まれています。 このサンプル内のフェザーは、Feather Resample SOPを使用してリサンプリングして、ポリゴン数を削減し、ビューポート内でのAPEX Add Groomの作業が高速化されています。 マスクとグループを使用することで、翼や首などの鳥の特定の領域を定義して、それらの領域を別々に扱うことができます。

下図では、リグがあるのが確認できます。 ジョイントの可視性を良くするために、シェーディングモードが Hidden Line Invisible になっています。 また、この鳥には、従来キャラクタやグルーミングに使用する典型的なTポーズがないことに気づくことでしょう。 この画像内のリグポーズは、APEX Add Groom SOPと組み合わせて使用するのに適しています。

また、この鳥は、groomネットワークで別途作成され、カーブとしてサンプルシーンに再インポートされた非常に精巧なフェザーを身に付けています。 APEX Add Groom SOPは、いわゆるコントロールグループの作成を介して、もっともらしく信頼できる動きを作成できるように設計されています。 ここでは、鳥の左手の翼(上図のネットワークスクリーンショット内のwing_selectionノード)に注目していきます。 このワークフローは、他のコントロールグループでも同じです。

  1. animation空間内に、APEX Add Groom SOPを追加します。

  2. このノードの 1番目 の入力をRIGインポートの出力に接続します。次に、 2番目 の入力をResample SOPの出力に接続します。このサンプルでは、GROOMはBGEOファイルから取り込まれています。

  3. このAPEX Add Groom SOPの青い Display/Render フラグを有効にして、実際にフェザーを表示します。このノードは、フェザーをポリゴンサーフェスに変換します。

Rig Treeペイン

Rig Treeペインは、キャラクタコンポーネントを階層で表示することができます。 APEX Add Groomワークフローの2つ目の手順では、レンダリングのセットアップを作成する時にこのRig Treeペインが必要になることでしょう。 また、このRig Treeを使用して、新しいノードがどのようにリグに影響を与えるのか調べることができます。

  1. ノード(例えば、APEX Add Groom SOP)を選択します。

  2. ビューポート(や他のたいていのペイン)の上部には、いくつかのタブがあって、その横に New Tab ボタンがあります。そのボタンをクリックします。ドロップダウンメニューから New Pane Tab Type ▸ Animation ▸ Rig Tree を選択します。

下図は、シーンのサンプルのリグツリーです。

このRig Treeペインの右側には、 Type メニューがあって、デフォルトの Packed Folders エントリーが選択されているのが分かります。 このエントリーは、現在パックプリミティブを扱っていることを示しています。

コントロールグループの作成

コントロールグループは、APEX Add Groom SOPを使用した作業の基本となります。 翼、胴体、尻尾などの鳥の特定のグループは既に定義済みです。 次に行なうべきことは、そのようなグループ内のマスターとなるフェザーを選択することです。 そうすると、APEX Add Groom SOPは、その選択からジョイントを生成し、それらのジョイントを既存のリグに統合します。

APEX Add Groom SOPの Joints セクションには、コントロールグループ作成関連のすべてのパラメータがあります。 他のセクションで変更する必要がある唯一のパラメータは、 Groom ▸ Output Curves です。 フェザーを扱う場合、これを無効にすることでポリゴンフェザーのみが表示され、パフォーマンスを向上させることができます。

Joints セクションのパラメータは、フェザー選択に基づいてフェザーをアニメーションさせるのに使用することになる新しいジョイントの作成および管理をします。

  • リグの既存のジョイントと区別できるように、新しいジョイントの名前の頭に Name Prefix が追加されます。また、 Suffix を追加することができ、例えば、_l_rを設定して、左側ジョイントと右側ジョイントに分けることができます。

  • デフォルトの Skin Vector Attribute では、鳥のスキンから法線のNを受け取って、新しいジョイントの向きが決まります。

  • Control Groups では、複数のグループを指定し、それらのグループを個別に扱うことができます。グループの数を直接入力するか、または、 + ボタンを押して新しいグループを追加します。新しいグループを作成すると、 Joint Properties パラメータセットが出現します。

Joint Properties

最初の手順は、アニメーションに使用したいフェザーを選択することです。 (例えば、Attribute Wrangle SOPを使用したり、グルームネットワークの別の箇所で手動選択によって)既にグループが定義されていれば、 Joints ▸ Group パラメータの入力フィールドにそのグループ名を入力することができます。 別の方法だと、以下で説明しているとおりに、ビューポートからフェザーを直接選択することもできます。

  1. Select geometry… ボタンをクリックします。すると、ビューポートがフェザーのカーブのみを表示するようになります。

  2. ビューポート上で、ジョイントの作成に使用したいフェザーを⇧ Shift + クリックします。選択されているフェザーは茶色がかった黄色になります(下図を参照)。

  3. 準備ができたら、Enterを押して選択を確定します。この処理を中止するには ⎋ Escを押します。どちらの場合でも、フェザーサーフェスが再び表示されます。

選択されているフェザーの数は、 Group パラメータの入力フィールドに表示され、手動でこれを編集することができます。また、新しく作成されたジョイントは、 Root Color から Tip Color までの色で表示されます。もう1個の便利なパラメータが Width で、これはジョイントのビューポート表現のサイズを決めます。

ジョイントの数を変更したいのであれば、 Joint Count を増減させてください。 主羽尾羽などの長いフェザーには、特にヒーローショットで Joint Count を上げると良いでしょう。 輪郭羽などの短いフェザーは、 Joint Count を上げてもあまり効果はありません。

ジョイントの移動

これで、ジョイントの移動を開始できるようになりました。 それをするには、APEX Add Groom SOPを選択します。

  1. マウスをビューポート上に置きます。

  2. Enterを押すとリグが表示されます。また、ビューポートの左上コーナーにはHUDがあるのが確認できます。

  3. ジョイントを選択し、そのジョイントを回転させます。アニメーションモードから抜けるには、 ⎋ Escを押します。

このノードは、フェザーがジョイントに追従する強さを定義するウェイトを計算します。 隙間もなければ、動くべきでないのに動いてしまうような遠く離れたフェザーもありません。 それどころか、フェザー間でゆっくりとフェードアウトする滑らかな遷移が得られます。 以下の動画では、左手の翼の先端付近にあるフェザーの動きを示しています。 新しく作成されたジョイントは、見やすくなるように拡大されています。

向きの定義

APEX Add Groom SOPの Control Group セクションには、 Orient to Skin Vector Attribute トグルが用意されています。 このトグルを有効にすると、このノードは、 Skin Vector Attribute で指定されたアトリビュートのみを使用するようになります。 デフォルトでは、それはスキンの法線のNになっています。

このトグルを無効にすると、barborientが使用され、もしそのアトリビュートも存在しなかった場合にはorientが使用されます。 どちらの方向系アトリビュートも存在しなかった場合、このノードは、スキンベクトルアトリビュートを生成します。

Joint Influenceセクション

まだジョイントの影響力が強すぎると感じる場合は、その範囲を制限することを検討すると良いでしょう。

Mask Attribute は、ジョイントがどのフェザーに影響を与えるのかを制御します。 この Mask Attribute は事前に存在している必要があり、通常ではAPEX Add Groom SOPに入る時に既にグルーム上に存在しています。

アトリビュートの代わりに、 Limit Influence Distance を使用することで、静止状態のままにしておきたい領域でフェザーが動かないようにすることもできます。 Core DistanceMaximum Distance はフォールオフを生成します。 以下でその比較を確認することができます。 制限効果がない場合、鳥全体が翼の動きの影響を受けています。 Limit Influence Distance を使用した場合、関連するフェザーのみが動きます。

Mask AttributeLimit Influence Distance は共存可能であり、それらの値は乗算されます。つまり、フェザーは両方のプロパティが適用されている領域でのみ動くようになります。

影響範囲のカラー

距離系パラメータを調整するだけでは、新しく作成されるジョイントの影響範囲を予測するのは困難です。 Core DistanceMaximum Distance を視覚的に表示したいのであれば、APEX Add Groom SOPの Joints セクションに進んで、 Output Influence Regions as Color を有効にすると良いでしょう。

Note

この機能は、少なくとも1つのコントロールグループが必要です。

距離の値を変更したり Mask Attribute を定義すると、指定した範囲またはマスク内にあるフェザーに色が付くのが分かります。 コントロールグループの Joint Properties セクション内の Root Color を変更することでその色を制御することができます。

APEXセットアップ

既にAPEXノードを使って作業しているので、このテクノロジーを進めて、それに応じてセットアップを準備する必要があります。

Note

HoudiniのAPEXテクノロジー全体がまだ開発中です。 機能と特徴は変更される可能性があります。

  1. 任意:APEX Scene Add Character SOPを配置し、その 2番目 の入力をAPEX Add Groom SOPの出力に接続します。このノードは必須ではありませんが、分かりやすく配置されたリグツリーが作成されます。

  2. そのAPEX Scene Add Character SOPの名前を例えばbirdに変更します。この名前は、そのノードの Character Name パラメータに追加され、シーンがbird.char/リグツリーにパックされます(下図参照)。

  3. APEX Scene Animate SOPを配置し、その入力をそのAPEX Scene Add Character SOPの出力に接続します。このAPEX Scene Animate SOPは、これまでに作成してきたアニメーションセットアップを操作する場所なので必須です。

  4. Null SOPを追加してネットワークを終了します。このNull SOPの名前を例えばANIMに変更し、青い Display/Render フラグを有効にします。このNull SOPは、レンダリングプロセス用のシーンを準備する次のネットワークへの橋渡しとなります。

Feathers(羽根)

基本セットアップ

描画とシェイピング

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

APEX Add Groom

シミュレーション

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

ツール

動画