Version: 2019.2
Spring Joint
Wheel Collider

Cloth

Cloth コンポーネントはスキンメッシュレンダラーと連動して機能し、物理演算を用いたクロス (布) のシミュレーションを行います。これはスキンメッシュと一緒に使う必要があり、キャラクターの衣服によく使われます。Cloth コンポーネントをスキンメッシュがないゲームオブジェクトに加えると、Unity は自動的にスキンメッシュ以外のメッシュを削除し、スキンメッシュを加えます。

Cloth コンポーネントをスキンメッシュに加えるには、エディターでゲームオブジェクトを選択し、インスペクターウィンドウで Add Component ボタンを押し、 Physics > Cloth の順に選択します。選択したコンポーネントがインスペクターに表示されます。

プロパティー

プロパティー 機能
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 ツールの編集

Edit > Constraints の順に選択すると、クロスメッシュ内の各頂点に適用する制限を編集するためのモードに切り替わります。すべての頂点は、それぞれの値の違いを表示するために、その時点の Visualization モードを基に色付けされます。ブラシを使ってクロスにペイントして Cloth の制限を編集できます。

プロパティー 機能
Visualization Max Distance と Surface Penetration を切り替えると、シーンビューのツールの表示が変わります。Manipulate Backfaces への切り替えも可能です。
Max Distance クロスのパーティクルが、頂点の位置から移動できる最長距離を設定します。
Surface Penetration クロスのパーティクルがメッシュに食い込む深さを設定します。
Brush Radius クロスに制限をペイントするためのブラシの半径を設定します。
Skinned Mesh Renderer に使用されている Cloth Constraints ツール
Skinned Mesh Renderer に使用されている Cloth Constraints ツール

各頂点の値を変更するために使用できるモードは 2 つあります。

  • Select モードを使うと、 頂点をまとめて選択できます。これを行うには範囲指定するか、個々の頂点をひとつずつクリックして選択します。それから、 Max DistanceSurface Penetration、またはその両方にチェックを入れて、値を設定します。

  • Paint モードを使うと、 個々の頂点を直接調整できます。これを行うには、調整したい頂点をクリックします。それから、 Max DistanceSurface Penetration、またはその両方にチェックを入れて、値を設定します。

両モードで、Max DistanceSurface Penetration に値を割り当てると、シーンビューの表示が自動的に更新されます。

Paint モードの Cloth Constraints ツール
Paint モードの Cloth Constraints ツール

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

クロスの衝突は、ゲーム内のキャラクターの衣服やさまざまな布をよりリアリスティックに動かします。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 Page amended

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

Spring Joint
Wheel Collider