ドキュメント

Unity Engine

Unity Engine

Cloth

Simulate fabric movement for character clothing and other in-application textiles.
読み終わるまでの所要時間 21 分最終更新 1ヶ月前

Cloth コンポーネントはスキンメッシュレンダラーと連動して機能し、物理演算を用いたクロス (布) のシミュレーションを行います。これはキャラクターの衣服に特化して設計されており、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 Frequency1 秒間ごとのソルバー反復の回数を設定します。
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 ツール。

制限のタイプと色

各クロスパーティクルに対して、2 種類の制限を設定し、表示することができます。
  • Max Distance – クロスパーティクルが頂点位置から移動できる最大距離 。
  • Surface Penetration – クロスパーティクルがメッシュに食い込む深さ。
パーティクルの色は、現在選択されている制限のタイプに応じて、クロス内の制限の相対的な値を表します。

制約の可視化

クロス制約ツールの可視化プロパティ。

プロパティ

機能

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

制限の編集モード

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

モード

説明

選択する事前に選択したパーティクルのグループに固定の制限値を適用できます。
Paintクロスのパーティクルをブラシでペイントすることで、固定された制限値を適用できます。
Gradient事前に選択したパーティクルのグループに、制約値の左から右へのリニアのグラデーションを適用できます。
ツールのプロパティと実行する必要のあるステップは、使用しているモードによって異なります。すべての場合において、最後のステップは制約値を適用するアクションに対応します。
Select モードの場合:

選択モードのクロス制約ツール。

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

ペイントモードのクロス制約ツール。

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

グラデーションモードのクロス制約ツール。

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

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

クロスの衝突は、ゲーム内のキャラクターの衣服やさまざまな布をよりリアリスティックに動かします。Unity では、クロスには衝突を処理するいくつかのクロスのパーティクルが設定されています。以下の対象に対してクロスのパーティクルを設定できます。
  • Self Collision (セルフコリジョン) は、クロスがそれ自体に食い込むのを防ぎます。
  • Inter Collision (インターコリジョン) を使うと、クロスのパーティクルが互いに衝突できるようになります。
クロスに衝突パーティクルを設定するには、Cloth のインスペクターで Self Collision and Intercollision ボタンを押します。

クロス Inspector の Self Collision ボタンと Intercollision ボタン

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

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

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

未使用のクロスパーティクル

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

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

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

クリックとドラッグによるクロスパーティクルの選択

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

選択したクロスパーティクルは青色

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

セルフコリジョンとインターコリジョンのチェックボックス

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

選択したパーティクルは緑色

クロスのセルフコリジョンの動作を有効にするには、Cloth Inspector ウィンドウの Self Collision セクションに移動し、Distance と Stiffness をゼロ以外の値に設定します。

セルフコリジョンパラメーター

プロパティ:

機能:

Distance各パーティクルの周りのスフィアの直径。Unity は、シミュレーション中にこれらのスフィアが重なり合わないようにします。Distance は、2 つのパーティクル間の最短距離よりも小さく設定する必要があります。距離が大きい場合、セルフコリジョンが距離の制約に反してジッタが発生する場合があります。
Stiffnessパーティクル間の分離の力の強さ。クロスソルバーはこれを計算し、パーティクルを分離した状態に保つようにします。
セルフコリジョンとインターコリジョンは、シミュレーション時間全体のかなりの部分を占める可能性があります。衝突距離を小さく保ち、セルフコリジョンインデックスを使用して、互いに衝突するパーティクルの数を減らすことを検討してください。
セルフコリジョンでは三角形ではなく頂点が使用されるので、クロスの厚さよりもかなり大きい三角形をもつメッシュに対してセルフコリジョンが完全に機能するわけではありません。
Paint と Erase モードでは、左マウスボタンを押したまま個々のクロスのパーティクルをドラッグすることで、衝突時に使用するパーティクルを加えたり、削除したりします。

セルフコリジョンパラメーター

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

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

Cloth のインターコリジョン

上で説明したセルフコリジョンのためのパーティクルを指定するのと同じ方法で、インターコリジョンのためのパーティクルを指定します。セルフコリジョンと同様に、インターコリジョンのために 1 組のパーティクルを指定します。
インターコリジョン動作を有効にするには、Physics 設定を開き (Unity のメイン メニューから: Edit > Project Settings を選択し、Physics カテゴリを選択)、Cloth InterCollision セクションで Distance と Stiffness を 0 以外の値に設定します。

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

Cloth intercollision の Distance と Stiffness プロパティには、上記の Self collision の Distance と Stiffness プロパティと同じ機能があります。

コライダーの衝突

クロスは任意のワールドジオメトリと単純に衝突することはできず、Capsule Colliders 配列または Sphere Colliders 配列で指定されたコライダーとのみ相互作用します。
スフィアコライダーの配列は、有効な単一の SphereCollider インスタンス (2 つ目は null) か、ペアを 1 組配置することができます。前者の場合、ClothSphereColliderPair はクロスが衝突する 1 つのスフィアコライダーを表します。後者の場合は、円錐カプセル形で、2 つのスフィアによって定義された 1 つの円錐形を表し、円錐は 2 つを繋げます。円錐カプセル形は、キャラクターの手足をモデリングする場合に便利です。