VELLUM CLOTH: TIPS &TRICKS
Houdini 18 で改良された Vellum のキャラクタツールは、精度とリアリズムの改善のためにデザインされた新機能と優れたワークフローテクニックを導入、クロスシミュレーション生成を全体的にわかり易くアートディレクト可能なプロセスにしています。
このチュートリアルでは、Houdini 18 で Vellum Cloth を使用する際の良いワークフローの実践を紹介します。まず初期セットアップとクロスシミュレーションに適したジオメトリタイプについて説明し、使用する衝突ジオメトリの準備の実際、最後に、交差などトラブルシューティングの例と、シミュレーション後の修正のための有用なヒントなどを紹介します。
では始めましょう!
Planar Patch (平面パッチ) の使用
クロスシミュレーションへの入力ジオメトリは、素材の挙動に影響を及ぼすので、どのタイプのジオメトリが最適に機能するかを理解することは重要です。例えば、Planar Patch (平面ポリゴンパッチ) は、通常のグリッド (Grid) よりもほとんどの場合良い結果をもたらします。これは、平面ポリゴンパッチが、ランダム化された均一サイズの三角形で構築されたジオメトリで、その構造により、スムーズでより有機的な結果を達成できるためです。
平面パッチを使うと、低解像度であっても滑らかな結果を実現できるため、通常グリッドに比べて有利で、シーンの最適化に役立ちます。 通常のグリッドでは、殆どの場合、同様の滑らかな結果を得るためには、より高い解像度が必要になります。
通常グリッドの後に Remesh SOP を追加すれば平面パッチと同様の構造が実現できますが、衣服を作成する場合など、境界上の点の数を正確に指定するプロシージャルステッチを可能にするには、平面パッチの方が好まれます。特に異なるパネルのつなぎ合わせが必要な場合には便利です。
非正方形のカスタム被服パネルの形状の場合、私は、曲線を描いてから「Planar Patch from Curves」ノードを使用するようにしています。 描画した各曲線を Resample SOP でリサンプルすることで、境界点の頂点数を同じ手順で制御できます。
布に必要な適切な Edge Length (エッジの長さ) は、Bend Stiffness (曲げ剛性) の値と、作成したい素材のタイプによって異なります。 例えば、硬い布には高目の曲げ剛性値が必要で、低い解像度でも大丈夫です。 それに比べて、絹のような柔らかい素材では、曲げ剛性値を低くする必要があり、高い解像度が必要になります。 シーンに応じてテストし、最適化します。
交差する衝突ジオメトリの修正
場合によっては、使用している衝突ジオメトリがアニメーション中に既に自身で交差している場合があります。 この場合、クロスジオメトリが行くところがなくなり、ソルバエラーを引き起こしてしまいます。下の例では、上腕が胸と交差していますが、この問題を解決するための有用な手法の一つとして、衝突ジオメトリ全体を Vellum Cloth オブジェクトに変換し、ソフトおよびハードピンコンストレインを使用する方法を見ていきます。 始める前に、Peak SOP を使用して衝突ジオメトリの厚さをわずかに増やすと、布に少しの空間を与え、シミュレーション後の交差の問題を回避できるため、有用な予防策です。
手順
1. 最初に Attribute Create SOP を使って 'pin' というアトリビュートを作成します。
2. Paint SOP を使用し、作成した pin アトリビュートの値を設定していきます。赤い領域の値は1で元の形状を保持しますが、青い領域は 0 でソフトになり順応性があります。
3. 「Vellum Configure Cloth」を使用し、衝突ジオメトリ全体を Vellum Cloth Constraints とします。
4. 「Pin to Target」コンストレインを「Soft」設定で作成し、「Match Animation」をチェック、グループを「@pin<1」と設定します。 これにより、値が1である赤い領域すべてが無視されます。こうすることで、変形させたいコリジョンメッシュの部分へのソフトコンストレイントとして機能するようになります。
5. ストレッチ剛性 (Stretch Stiffness) を低い値に設定して、これらのポイントでの剛性に変化を加えます。
6.
2番目の「Pin to Target」コンストレインを「Permanent」設定で作成し、「Match Animation」をチェック、 グループを「@pin == 1」に設定します。これにより 1未満の小さい値を持つ非赤領域すべてが無視され、変形させたくないコリジョンメッシュ領域へのハードコンストレイントとして機能します。
7. Stretch Stiffness に 1e + 10 を設定して、無限に硬い強度にします。
8. 最後に、より正確な衝突結果のためサブステップ値を5に設定します。
シミュレーションを実行すれば、結果は赤くペイントした1の値を持つ衝突ジオメトリ領域ではアニメーションに変更がなく、それ以外の赤でない値が 1未満の領域ではソフトかつ変形可能なので、交差するコリジョンの部分で変形可能になって解決できるようになり、交差する衝突ジオメトリ間にギャップが作成され、クロスに移動可能なスペースができるため、両方のコンストレインセットを満たすことができます。
場合によっては、特に極端な交差のある領域では、シミュレーションに不要な部分を Blast ノードで削除するのが賢明かもしれません。ここの例では、親指は削除しています。
トラブルシューティングとワークフロー
格闘シーンショットでの帯ジオメトリにはかなりのトラブルシューティングと開発を要したため、このセクションでは、最終的なルックの実現のための帯作成とシミュレーション方法についてお話します。
テストをいくつかした後、Vellum で帯の結び目をシミュレートし、初期の結び目ジオメトリを作ることにしました。 これにより、ノットをモデル化する場合と比較して、制御と精度が向上しました。
帯の腰の部分を別にモデリングし、Boolean SOP を使用して2つのジオメトリを組み合わせました。
この初期ジオメトリが出来たら、終端を切り取り、結び目と帯中央部を上着への衝突オブジェクトとして使用しました。 ここではアニメーション付のトランスフォームで上着を腰の部分に読み込み、上着の初期状態に正確な変形と折り目を実現しました。
上着の初期状態を設定したら、カスタムアトリビュートをペイントし、値によりどの領域が自由に移動し、どの領域が形状を維持するかを決定するようにしました。
上着は帯の前に個別にシミュレートされているため、新しくシミュレートした上着のキャッシュは帯の衝突ジオメトリとして機能します。 カスタムペイントアトリビュート方法を再度適用し、帯のどの領域が形状を維持し、どの領域が自由に変形できるかを決定します。
- フォーカスしたいジオメトリ部分にポイントグループを作成します。 ここでは、帯の一部をポイントグループとして選択し、「for_rivet」というグループとして呼ぶことにしました。
- Null を for_rivet グループのあとに追加し、OUT_rivet という名前にしました。
- オブジェクトレベルに Rivet というノードを作成し、Rivet ジオメトリにパスを設定します。これが新しく作った 'OUT_rivet' になります。
- ポイントグループ for_rivet を指定します。
- カメラの Transform タブ以下で、 Keep Position When Parenting をオンにします。
- カメラを Rivet ノードに親子化します。
シミュレーション後のクリーンアップ
シミュレーション前に衝突ジオメトリをクリーンアップし、Peak SOP によって余分な厚さを与えましたが、シミュレーション後のマージ時に衝突ジオメトリがクロスジオメトリキャッシュを貫通する可能性があります。
このような場合、貫通は見えても有害ではない場合、Edit SOP の2番目の入力を使用して、アニメーションしている衝突ジオメトリ上に変形編集できます。 これを後ほど Sequence Blend SOP で元のクロスメッシュと後でブレンドして、シームレスなシミュレーション後の修正とすることができます。
手順
タイムラインをスクラブし、問題のあるフレームを特定します。
Time Shift SOP でメッシュをそのフレームでフリーズします。
Edit SOP を追加します。最初の入力は編集するジオメトリ (アニメーション化されたキャッシュ)、2番目の入力は参照ジオメトリ (Time Shift からの静的メッシュ) です。
交差している部分を修正します。私は、スムーズな結果を達成するために、Soft Radius でポイントを編集することにしています。
これで、タイムラインをスクラブすると、編集結果も移動ジオメトリにトランスフォームされます。
Sequence Blend SOP で、元のキャッシュと新しく作成されたEdit SOP の間でキーフレームして、ジオメトリ間のシームレスな移行を実現します。
Isabel Kokuti
著者について
元 SideFX インターンでありボーンマス大学を修士卒業した Isabel はイギリス出身の Character FXを専門とした Houdini テクニカルアーティストで、現在長編映画に携わっています。
コメント
MoltenCrazy 4 年, 9 ヶ月 前 |
Hi, Isabel! Thanks for the tutorial.
Is the animated FBX file available? The included file is the static T-pose.
MoltenCrazy 4 年, 9 ヶ月 前 |
Whoops...never mind. Missed the note in the file. :)
nox_zahra 4 年, 4 ヶ月 前 |
Hello!
I'm having trouble figuring out how you attached the belt to the garment. Did you attach it to the animation, or is it a vellum cloth? Thanks for any help that you can give.
Zigmund 3 年 前 |
Hi,
I have a couple of questions. I have noticed that the last vellum solver refers to the Target1, but I didn't find any in the file. So should we use a target for the final simulation or is it just left from some intermediate setup?
I have also noticed that after the drape node you use post process node but after the vellum solver there is i/o vellum node. Could you please provide some clarification why do you use post process node in one case and i/o vellum node in the other?
Thanks!
JamesMaxwell 2 年, 10 ヶ月 前 |
Hi, Thanks for the tutorial. It is very useful. I want to be able to simulate the wrinkles and crease that appear in the costumes of Pixar animated characters, but unfortunately those creases are not created in my character's cloth in Houdini, the priests which described by Andriy Bilichenko's HIVE seminar for different cloth material does not work for me. I give it a try, but other than jean's pants (denim) other priests did not work properly. What solutions do you suggest for me? I use Houdini 18.5.
Thank you very much.
mutsumi_abe 7 ヶ月, 2 週間 前 |
Hi, Thank you for the tutorial. I'm a beginner so it really helps.
When I open a HIP file that was downloaded here, warnings messages were loaded : Load warnings for Side_FX_tutorials/Vellum_Cloth_Tips_Tricks/Vellum_Cloth_Tips_Tricks.hip
Warning:
/obj/top_female/front_leftside:
Skipping unrecognized parameter "removeinteriorgroups".
/obj/top_female/front_leftside_outersleeve:
Skipping unrecognized parameter "removeinteriorgroups".
/obj/top_female/front_rightside:
Skipping unrecognized parameter "removeinteriorgroups".
/obj/top_female/back:
Skipping unrecognized parameter "removeinteriorgroups".
/obj/top_female/back_leftside_outersleeve:
Skipping unrecognized parameter "removeinteriorgroups".
Could you please show me how to deal with the parameter "removeinteriorgroups"? I use Housini 20.0. Your feedback would be greatly appreciated.
Please log in to leave a comment.