Version: Unity 6.0 (6000.0)
言語 : 日本語
Understand physics performance issues
マルチシーン物理演算

Cloth

Switch to Scripting

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 つのスフィアコライダーで構成される円錐形カプセルコライダーです。こういった制限はすべて、パフォーマンス強化のために設けられています。

Constraints ツールの編集

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

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

Skinned Mesh Renderer で使用されている 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 DistanceSurface Penetration、またはそれらの両方です。
  3. 有効にした制限タイプに応じて値を設定します。
Paint モードの場合:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Cloth のインターコリジョン

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

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

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

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

コライダーの衝突

クロスは任意のワールドジオメトリと単純に衝突することはできず、Capsule Colliders 配列または Sphere Colliders 配列で指定されたコライダーとのみ相互作用します。

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


  • 2017–12–05  

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

Cloth

Understand physics performance issues
マルチシーン物理演算