場合によっては、自己交差しているアニメーション干渉ジオメトリを扱うことがあります。 このような場合では、布ジオメトリの行く先がなくなるのでCloth Solverでエラーが発生する可能性があります。
以下の例では、上腕が胸と交差しています。 この問題を修正する1つの方法は、干渉ジオメトリ全体をVellum Clothオブジェクトに変換して、ソフトピン拘束とハードピン拘束を使用することです。 他にも、Peak SOPを使用すれば干渉ジオメトリの厚みを若干広げることができます。 これは、布にもっと空間を空けるための予防措置で、シミュレーション後にその問題領域と交差していないことを願うことになります。
-
Attribute Create SOPを使用して
pin
アトリビュートを作成します。 -
Paint SOPを追加して、その新しく作成された
pin
アトリビュートを上塗りします。赤い領域は値が1で、元の形状を維持するのに対して、青い領域は値が0で形状が柔らかく可鍛性を持つようになります。 -
Vellum Configure Cloth SOPを追加して、干渉ジオメトリ全体にVellum Cloth拘束を与えます。
-
Vellum Constraints SOPを追加して、 Constraint Type を Pin to Target 、 Pin Type を Soft に設定し、 Match Animation チェックボックスを有効にします。 さらに Geometry Group を
@pin<1
に設定します。これは、値が1の赤い領域をすべて無視します。これによって、変形させたい干渉メッシュの部分がソフト拘束として作用するようになります。 -
Stretch Stiffness の値を低く設定することで、これらのポイントの剛性を可変させることができます。
-
もう1つVellum Constraints SOPを追加して、 Constraint Type を Pin to Target 、 Pin Type を Permanent に設定し、 Match Animation チェックボックスを有効にしmさう。 さらに Geometry Group を
@pin == 1
に設定します。これは、値が1未満の赤以外の領域をすべて無視します。これによって、変形させたくない干渉メッシュの部分がハード拘束として作用するようになります。 -
無限大の剛性強度を設定するために、 Stretch Stiffness を
1e+10
に設定します。 -
干渉結果の精度を上げるために、Vellum Sovlerの Substeps 値を5に設定します。
計算をかけると、値が1の赤でペイントされた干渉ジオメトリ上の領域のアニメーションは変化せず、値が1未満の赤以外でペイントされたすべての領域は柔らかくなり、変形させたい干渉領域の交差を解決することができます。 これは、交差している干渉ジオメトリ間に隙間を空けて布が移動できる空間が確保されたので両方の拘束セットを満たすことができます。