Version: 2023.1
言語: 日本語
ジョイントとラグドールの安定性
マルチシーン物理演算

Cloth

Cloth コンポーネントは、Skinned Mesh Renderer と連携して、布地をシミュレートするための物理ベースのソリューションを提供します。これは特にキャラクターの衣服のために設計されており、Skinned Mesh Renderer を使う場合のみ動作します。通常のメッシュレンダラーを持つゲームオブジェクトに Cloth コンポーネントを加えると、Unity はメッシュレンダラーを取り除き、Skinned Mesh Renderer を加えます。

Skinned Mesh Renderer を持つゲームオブジェクトに Cloth コンポーネントをアタッチするには、エディターでゲームオブジェクトを選択し、Inspector ウィンドウの Add Component ボタンをクリックし、Physics > Cloth を選択します。すると、Inspector にコンポーネントが表示されます。

プロパティ

プロパティ 機能
Stretching Stiffness クロスの伸縮率を設定します。
Bending Stiffness クロスの曲げ剛性を設定します。
Use Tethers 動いているクロスのパーティクルが固定されたパーティクルから、遠くに離れ過ぎるのを防ぐ制限を適用します。
Use Gravity クロスに重力加速度を適用します。
Damping モーションの減衰係数を設定します。
External Acceleration クロスに外部から一定に加えられる加速度を設定します。
Random Acceleration クロスに外部からランダムに加えられる加速度を設定します。
World Velocity Scale ワールド空間でのキャラクターの動きがクロスの頂点にどのくらい影響を与えるかを設定します。
World Acceleration Scale ワールド空間でのキャラクターの加速がクロスの頂点にどのくらい影響を与えるかを設定します。
Friction キャラクターと衝突したときのクロスの摩擦係数を設定します。
Collision Mass Scale 衝突するパーティクルの密度をどのくらい増加するかを設定します。
Use Continuous Collision 衝突の安定性を向上させるために継続的な衝突を有効にします。
Use Virtual Particles 衝突の安定性の向上のために、ひとつの三角形ごとにひとつの仮想パーティクルを加えます。
Solver Frequency 1 秒間ごとのソルバー反復の回数を設定します。
Sleep Threshold クロスのスリープのしきい値を設定します。
Capsule Colliders クロスインスタンスが衝突するカプセルコライダーの配列を設定します。
Sphere Colliders クロスインスタンスが衝突するスフィアコライダーの配列を設定します。

詳細

Cloth コンポーネントはシーン内のすべてのコライダーに反応するわけではなく、ゲームオブジェクトへ力を跳ね返すわけでもありません。Cloth コンポーネントは加えられても、その他のリジッドボディに対してまったく反応せず、影響も与えません。したがって、手動でゲームオブジェクトの Cloth コンポーネントへ世界からのコライダーを加えるまでは、互いに影響することはありません。また追加後も、シミュレーションは一方的なものになります。つまり、リジッドボディに対してクロスは反応しますが、クロスが影響を与えることはありません。

また、Cloth に使用できるコライダーは 3 種類のみです。スフィア、カプセル、2 つのスフィアコライダーで構成される円錐形カプセルコライダーです。こういった制限はすべて、パフォーマンス強化のために設けられています。

Constraints ツールの編集

クロスの特定の頂点に制限を適用して、動きをより自由にしたり、制限したりすることができます。

Inspector で、Cloth コンポーネントの Edit cloth constraints (左上のボタン) を選択します。ツールをアクティブにすると、シーンビューのメッシュのすべての頂点に小さなスフィアが表示されます。これは、コンストレイントを適用できるクロスのパーティクルを表します。Cloth Constraints ツールウィンドウもシーンビューの右下に表示されます。

Skinned Mesh Renderer に使用されている Cloth Constraints ツール
Skinned Mesh Renderer に使用されている Cloth Constraints ツール

制限のタイプと色

各クロスパーティクルに対して、2 種類の制限を設定し、表示することができます。 * Max Distance – クロスパーティクルが頂点位置から移動できる最大距離 。 * Surface Penetration – クロスパーティクルがメッシュに食い込む深さ。

パーティクルの色は、現在選択されている制限のタイプに応じて、クロス内の制限の相対的な値を表します。

制約の可視化

Cloth Constraints ツールの表示プロパティ
Cloth Constraints ツールの表示プロパティ
プロパティ 機能
Visualization どのコンストレイントタイプとどのパーティクルを表示するかを選択できます。
Max Distance クロスパーティクルの Max Distance 値のみを表示します。
Surface Penetration クロスパーティクルの Surface Penetration 値のみを表示します。
Manipulate Backfaces このオプションを有効にすると、クロスの現在正面を向いている部分の背後に隠れている可能性のあるパーティクルを可視化して操作できます。
[ Color spectrum ] クロス全体に現在適用されている最小値と最大値に応じて、上の選択した制限のタイプのパーティクル色と制限の値を対応させます。黒は常に、パーティクルに制約がないことを意味します。
Constraint Size クロスのパーティクルを表すスフィアの表示サイズ。この値を適切に調整して、制限の編集を行いやすくします。このプロパティは制限自体には影響しません。

制限の編集モード

3 種類のモードを使用して、 クロスの制限の値を編集できます。

モード 説明
Select 事前に選択したパーティクルのグループに固定の制限値を適用できます。
Paint クロスのパーティクルをブラシでペイントすることで、固定された制限値を適用できます。
Gradient 事前に選択したパーティクルのグループに、制約値の左から右へのリニアのグラデーションを適用できます。

ツールのプロパティと実行する必要のあるステップは、使用しているモードによって異なります。すべての場合において、最後のステップは制約値を適用するアクションに対応します。

Select モードの場合

Select モードの Cloth Constraints ツール

  1. マウスカーソルで選択ボックスを作るか、パーティクルを 1 つずつクリックします。
  2. 選択した範囲に適用する制限のタイプを有効にします。Max DistanceSurface Penetration、またはその両方です。
  3. 有効にした制限タイプに応じて値を設定します。
Paint モードの場合

Paint モードの Cloth Constraints ツール

  1. ブラシで覆う必要がある領域に応じて、Brush Radius を調整します。
  2. 適用したい制限タイプを有効にします。Max DistanceSurface Penetration__、またはその両方です。
  3. 有効にした制限タイプに応じて値を設定します。
  4. ブラシでパーティクルの制限をペイントします。
Gradient モードの場合

Gradient モードの Cloth Constraints ツール

  1. シーンビューを 2D に切り替えます (3D ビューの場合、ツールがグラデーションを適用することはできません)。
  2. マウスカーソルで選択ボックスを作るか、パーティクルを 1 つずつクリックします。
  3. 選択範囲内で左から右に適用するグラデーションの制限値、Gradient StartGradient End を設定します。
  4. 選択した範囲に適用する制限のタイプを有効にします。Max DistanceSurface Penetration、またはその両方です。

セルフコリジョンとインターコリジョン

クロスの衝突は、ゲーム内のキャラクターの衣服やさまざまな布をよりリアリスティックに動かします。Unity では、クロスは衝突を処理するいくつかのクロスのパーティクルを持ちます。以下のものに対してクロスのパーティクルを設定できます。

  • Self Collision (セルフコリジョン) は、クロスがそれ自体に食い込むのを防ぎます。
  • Inter Collision (インターコリジョン) を使うと、クロスのパーティクルが互いに衝突できるようになります。

クロスに衝突パーティクルを設定するには、Cloth のインスペクターで Self Collision And Inter Collision ボタンを押します。

Cloth インスペクターの Self Collision And Inter Collision ボタン
Cloth インスペクターの Self Collision And Inter Collision ボタン

シーンビューに表示された Cloth Self Collision And Intercollision ウィンドウ

Cloth Self Collision And Intercollision ウィンドウ
Cloth Self Collision And Intercollision ウィンドウ

Cloth コンポーネントでスキンメッシュに自動的に表れるクロスのパーティクル。最初は、クロスのパーティクルにはコリジョンの設定がされてません。これらの使用されていないパーティクルは黒く表示されます。

使用されていないクロスのパーティクル
使用されていないクロスのパーティクル

セルフコリジョンやインターコリジョンを適用するには、衝突を適用する一群のパーティクルを Select ボタンから選ぶ必要があります。

クロスのパーティクルの選択ボタン
クロスのパーティクルの選択ボタン

衝突を適用するパーティクルを選ぶには、左クリックしてドラッグします。

左クリックしてドラッグしてクロスのパーティクルを選択
左クリックしてドラッグしてクロスのパーティクルを選択

選択したパーティクルは青で表示されます。

選択したパーティクルは青で表示
選択したパーティクルは青で表示

Self Collision and Intercollision にチェックを入れ、選択したパーティクルに衝突を適用します。

Self Collision And Intercollision チェックボックス
Self Collision And Intercollision チェックボックス

衝突に使用することを指定したパーティクルは緑で表示されます。

選択されたパーティクルは緑で表示
選択されたパーティクルは緑で表示

クロスのセルフコリジョンの挙動を有効にするには、Cloth インスペクターウィンドウの Self Collision セクションに移動し、DistanceStiffness をゼロ以外の値にします。

Self Collision パラメーター
Self Collision パラメーター
プロパティ 機能
Distance 各パーティクルの周りのスフィアの直径。Unity は、シミュレーション中にこれらのスフィアが重なり合わないようにします。 Distance は、2 つのパーティクル間の最短距離よりも小さく設定する必要があります。距離が大きい場合、セルフコリジョンが距離の制約に反してジッタが発生する場合があります。
Stiffness パーティクル間の分離の力の強さ。クロスソルバーはこれを計算し、パーティクルを分離した状態に保つようにします。

セルフコリジョンとインターコリジョンは、シミュレーション時間全体のかなりの部分を占める可能性があります。衝突距離を小さく保ち、セルフコリジョンインデックスを使用して、互いに衝突するパーティクルの数を減らすことを検討してください。

セルフコリジョンでは三角形ではなく頂点が使用されるので、クロスの厚さよりもかなり大きい三角形をもつメッシュに対してセルフコリジョンが完全に機能するわけではありません。

PaintErase モードでは、左マウスボタンを押したまま個々のクロスのパーティクルをドラッグすることで、衝突時に使用するパーティクルを加えたり、削除したりします。

Self Collision パラメーター
Self Collision パラメーター

Paint または Erase モードの場合、衝突に指定されたパーティクルは緑、指定されないパーティクルは黒、ブラシの下にあるパーティクルは青です。

ペイントされたパーティクルは青
ペイントされたパーティクルは青

Cloth のインターコリジョン

上で説明したセルフコリジョンのためのパーティクルを指定するのと同じ方法で、インターコリジョンのためのパーティクルを指定します。セルフコリジョンと同様に、インターコリジョンのために 1 組のパーティクルを指定します。

インターコリジョンの動作を有効にするには Physics 設定 (Edit > Project Settings を開き、Physics カテゴリを選択) を開き、Cloth InterCollision セクションで DistanceStiffness を 0 以外の値に設定します。

Physics 設定でインターコリジョンの動作を有効にします
Physics 設定でインターコリジョンの動作を有効にします

Cloth intercollision の DistanceStiffness プロパティは、上の Self collision の Distance と Stiffness プロパティと同じ機能を持っています。

コライダーの衝突

クロスは、ゲーム世界の任意のジオメトリと単純に衝突することはできず、Capsule CollidersSphere Colliders 配列で指定されたコライダーとだけ相互作用します。

SphereCollider の配列は、有効な単一の SphereCollider インスタンス (2 つ目は null) か、ペアを 1 組含むことができます。前者の場合、ClothSphereColliderPair はクロスが衝突する単一のスフィアコライダーを表します。後者の場合は、円錐カプセル形で、2 つのスフィアによって定義された 1 つの円錐形を表し、円錐は 2 つを繋げます。円錐カプセル形は、キャラクターの手足をモデリングする場合に便利です。


  • 2017–12–05 修正されたページ

  • クロスのセルフコリジョンとインターコリジョンは 2017.3 で追加NewIn20173

Cloth

ジョイントとラグドールの安定性
マルチシーン物理演算