クロスによる衝突について、正確なシェイプのオブジェクトを使用する必要がある場合、衝突オブジェクトとしてポリゴン メッシュ オブジェクトを使用できます。たとえば、シャツのボディ部分の実際のシェイプは、キャラクタの腕、脇、および上半身と衝突する必要があります。ポリゴン メッシュ衝突オブジェクトを使用すると正確な衝突を実現できますが、バウンディング シェイプよりも計算が長くかかります(「バウンディング ボックス オブジェクトを使用して衝突を作成する」を参照)。
ポリゴン メッシュ衝突オブジェクトは、静止またはアニメート化できます。また、ラティス、シェイプ アニメーション、エンベロープ、ウェーブなど、任意のデフォーム オペレータを使用して、アニメートされたデフォーメーションを適用することもできます。現在のデフォーム アニメート化された衝突オブジェクトのシェイプは、シミュレーションのフレームごとに更新されます。この場合、シミュレーションの速度は低下しますが、衝突の精度が上がります。
詳細については、「ポリゴン メッシュ オブジェクトでうまく衝突させるためのヒント」および「衝突エンベロープ」を参照してください。
Syflex ICE クロスまたはカーブ シミュレーションを作成します。「Syflex ICE シミュレーションを作成する」を参照してください。
ICE ツリーのツールバーから、[パーティクル](Particles) [衝突](Collision) [Syflex] [メッシュの衝突を追加](Add Collide Mesh)を選択します。
次に、1 つまたは複数のポリゴン メッシュ オブジェクトを選択して、衝突メッシュとして使用します。
その結果、衝突オブジェクトごとに[Syflex Collide Mesh]ノードと[Get Data]ノードを追加することで Syflex ICE ツリーが更新されます。
ICE ツリー ビューで、プリセット マネージャの[タスク]>[Syflex]タブにある[衝突](Collisions) [Syflex Collide Mesh]コンパウンドを、[Syflex Cloth]または[Syflex Curve]ノード上の[Force]ポートにドラッグして接続します。
次に、Explorer の各ポリゴン メッシュの衝突オブジェクトを ICE ツリーにドラッグして、その[Get Data]ノードを作成します。
各衝突オブジェクトの[Value]出力を、[Syflex Collide Mesh]ノード上の[Geometry]ポートに接続します。[Syflex Collide Mesh]プロパティ エディタでパラメータを設定します。
[エンベロープ]パラメータの詳細については、後述の「衝突エンベロープ」を参照してください。
グループを使用すると、同じ[Get Data]ノードを ICE ツリーに接続したまま、簡単にグループに衝突オブジェクトを追加したり、グループから衝突オブジェクトを削除したりできます。ただし、グループの[Get Data]ノードに接続した後にグループのメンバを変更した場合、シミュレーションを更新する必要があります。
クロスのシミュレーションは、多くの場合、キャラクタのボディとの衝突が理由です。このようなクロスのジオメトリ全体との衝突を計算するには長時間かかる可能性があるため、衝突エンベロープが代わりに使用されます。
衝突エンベロープは、衝突オブジェクトの外部にある外部エンベロープと、衝突オブジェクトの内部にある内部エンベロープから構成されます。クロスの頂点がこれら 2 つのエンベロープで定義されたボリュームに入ると、その頂点はボリュームの外側にあるとして拒否されます。これは「プッシュ」オペレータと同様に考えることができます。エンベロープを大きくすると、クロスは、可視の交差がないポイントまで衝突オブジェクトから離れます。
衝突オブジェクトのエンベロープは、使用している Softimage 単位(たとえば、1 Softimage 単位 = 10 cm)に基づく距離です。外部エンベロープと内部エンベロープの差は可能な限り小さくします。エンベロープが小さいほど、計算は速くなります。
多くの場合、内部エンベロープの値は外部エンベロープの正の値の反対ですが、内部エンベロープ値が正の可能性もあります。キャラクタのボディを衝突オブジェクトとして使用する場合、まず 1 cm の外部エンベロープと -1 cm の内部エンベロープから始め、必要に応じて調整します。
ポリゴン メッシュ オブジェクトでうまく衝突させるためのヒント
Syflex クロスおよびカーブのシミュレーションの場合に適切な衝突を作成するためのヒントをいくつか紹介します。
衝突させるオブジェクトが極端に薄い場合は、衝突がうまく表現されません。グリッドの使用は、一般には適切ではありません。それよりも、地面やテーブルで作成するような、いくらか厚みのある平坦な立方体を使用してください。
Syflex クロス オブジェクトよりも衝突オブジェクトで高い解像度にすると、クロスの方が高い解像度の場合よりもシミュレーションが高速になります。衝突オブジェクトのポリゴンのサイズは、クロスのポリゴンよりも 2 倍以上小さくする必要があります。
衝突オブジェクトからクロスが外れないようにするには、[Syflex Collide Mesh]ノードの[摩擦]値と、[Syflex Cloth]または[Syflex Curve]ノードの[硬さ]値の調整が必要なことがあります。
最適な結果を実現するには、シミュレーションの最初のフレームの前に、ジオメトリと衝突オブジェクトが相互に貫入しないようにクロス シミュレーションを設定する必要があります。わずかな貫入であれば問題ありませんが、極端な場合は貫入を解決しようとしてシミュレーションが不安定になる可能性があります。
また、キャラクタのアニメーションが完璧ではないことがあります。たとえば、腕がボディの脇を貫通する可能性があります(または両側のエンベロープが交差する可能性があります)。このような場合、ユーザが希望するクロスのシミュレーション方法は Syflex に認識されません。この場合、状況に応じて 1 つの衝突のみ(ボディとの衝突など)が使用されるか、両方の衝突(ボディと腕)の平均がとられます。結果としてアニメーションに問題が発生する場合、最適な解決方法は、当然ながらキャラクタのアニメーションを整理することです。整理できない場合、ボディを 2 つのパーツ(ボディと腕)に分け、2 つの衝突(1 つのポリゴンへの重なり)を計算します。また、内部エンベロープ値を(たとえば、-0.1 から -0.2 に)わずかに減らし、クロスと外部エンベロープの間の距離が空くようにします。