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 Frequency | 1 秒間ごとのソルバー反復の回数を設定します。 |
| Sleep Threshold | クロスのスリープのしきい値を設定します。 |
| Capsule Colliders | クロスインスタンスが衝突するカプセルコライダーの配列を設定します。 |
| Sphere Colliders | クロスインスタンスが衝突するスフィアコライダーの配列を設定します。 |
Cloth コンポーネントはシーン内のすべてのコライダーに反応するわけではなく、ゲームオブジェクトへ力を跳ね返すわけでもありません。Cloth コンポーネントは加えられても、その他のリジッドボディに対してまったく反応せず、影響も与えません。したがって、手動でゲームオブジェクトの Cloth コンポーネントへ世界からのコライダーを加えるまでは、互いに影響することはありません。この後も、シミュレーションは一方向です。クロスはそれらのボディには反応しますが、力を再度適用しません。
また、Cloth に使用できるコライダーは 3 種類のみです。スフィア、カプセル、2 つのスフィアコライダーで構成される円錐形カプセルコライダーです。こういった制限はすべて、パフォーマンス強化のために設けられています。
クロスの特定の頂点に制限を適用して、動きをより自由にしたり、制限したりすることができます。
Inspector で、Cloth コンポーネントの Edit cloth constraints (左上のボタン) を選択します。ツールをアクティブにすると、シーンビューのメッシュのすべての頂点に小さなスフィアが表示されます。これは、コンストレイントを適用できるクロスのパーティクルを表します。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 | 事前に選択したパーティクルのグループに、制約値の左から右へのリニアのグラデーションを適用できます。 |
ツールのプロパティと実行する必要のあるステップは、使用しているモードによって異なります。すべての場合において、最後のステップは制約値を適用するアクションに対応します。



クロスの衝突は、ゲーム内のキャラクターの衣服やさまざまな布をよりリアリスティックに動かします。Unity では、クロスには衝突を処理するいくつかのクロスのパーティクルが設定されています。以下の対象に対してクロスのパーティクルを設定できます。
クロスに衝突パーティクルを設定するには、Cloth のインスペクターで Self Collision and Intercollision ボタンを押します。
シーンビューに表示された Cloth Self Collision And Intercollision ウィンドウ
Cloth コンポーネントでスキンメッシュに自動的に表示されるクロスのパーティクル。最初は、クロスのパーティクルにはコリジョンの設定がされてません。これらの使用されていないパーティクルは黒色で表示されます。
セルフコリジョンやインターコリジョンを適用するには、衝突を適用する一群のパーティクルを選択する必要があります。衝突するパーティクルのセットを選択するには、Select ボタンをクリックします。
衝突を適用するパーティクルを選ぶには、左クリックしてドラッグします。
選択したパーティクルは青で表示されます。
Self Collision and Intercollision チェックボックスにチェックマークを入れ、選択したパーティクルに衝突を適用します。
衝突に使用することを指定したパーティクルは緑で表示されます。
クロスのセルフコリジョンの動作を有効にするには、Cloth Inspector ウィンドウの Self Collision セクションに移動し、Distance と Stiffness をゼロ以外の値に設定します。
| プロパティ: | 機能: |
|---|---|
| Distance | 各パーティクルの周りのスフィアの直径。Unity は、シミュレーション中にこれらのスフィアが重なり合わないようにします。Distance は、2 つのパーティクル間の最短距離よりも小さく設定する必要があります。距離が大きい場合、セルフコリジョンが距離の制約に反してジッタが発生する場合があります。 |
| Stiffness | パーティクル間の分離の力の強さ。クロスソルバーはこれを計算し、パーティクルを分離した状態に保つようにします。 |
セルフコリジョンとインターコリジョンは、シミュレーション時間全体のかなりの部分を占める可能性があります。衝突距離を小さく保ち、セルフコリジョンインデックスを使用して、互いに衝突するパーティクルの数を減らすことを検討してください。
セルフコリジョンでは三角形ではなく頂点が使用されるので、クロスの厚さよりもかなり大きい三角形をもつメッシュに対してセルフコリジョンが完全に機能するわけではありません。
Paint と Erase モードでは、左マウスボタンを押したまま個々のクロスのパーティクルをドラッグすることで、衝突時に使用するパーティクルを加えたり、削除したりします。
Paint または Erase モードの場合、衝突に指定されたパーティクルは緑色、指定されないパーティクルは黒色、ブラシの下にあるパーティクルは青色です。
上で説明したセルフコリジョンのためのパーティクルを指定するのと同じ方法で、インターコリジョンのためのパーティクルを指定します。セルフコリジョンと同様に、インターコリジョンのために 1 組のパーティクルを指定します。
インターコリジョン動作を有効にするには、Physics 設定を開き (Unity のメイン メニューから: Edit > Project Settings を選択し、Physics カテゴリを選択)、Cloth InterCollision セクションで Distance と Stiffness を 0 以外の値に設定します。
Cloth intercollision の Distance と Stiffness プロパティには、上記の Self collision の Distance と Stiffness プロパティと同じ機能があります。
クロスは任意のワールドジオメトリと単純に衝突することはできず、Capsule Colliders 配列または Sphere Colliders 配列で指定されたコライダーとのみ相互作用します。
スフィアコライダーの配列は、有効な単一の SphereCollider インスタンス (2 つ目は null) か、ペアを 1 組配置することができます。前者の場合、ClothSphereColliderPair はクロスが衝突する 1 つのスフィアコライダーを表します。後者の場合は、円錐カプセル形で、2 つのスフィアによって定義された 1 つの円錐形を表し、円錐は 2 つを繋げます。円錐カプセル形は、キャラクターの手足をモデリングする場合に便利です。
2017–12–05
クロスのセルフコリジョンとインターコリジョンを 2017.3 NewIn20173 で追加
Cloth