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 つのスフィアコライダーで構成される円錐形カプセルコライダーです。こういった制限はすべて、パフォーマンス強化のために設けられています。
クロスの特定の頂点に制限を適用して、動きをより自由にしたり、制限したりすることができます。
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 種類のモードを使用して、 クロスの制限の値を編集できます。
モード | 説明 |
---|---|
Select | 事前に選択したパーティクルのグループに固定の制限値を適用できます。 |
Paint | クロスのパーティクルをブラシでペイントすることで、固定された制限値を適用できます。 |
Gradient | 事前に選択したパーティクルのグループに、制約値の左から右へのリニアのグラデーションを適用できます。 |
ツールのプロパティと実行する必要のあるステップは、使用しているモードによって異なります。すべての場合において、最後のステップは制約値を適用するアクションに対応します。
クロスの衝突は、ゲーム内のキャラクターの衣服やさまざまな布をよりリアリスティックに動かします。Unity では、クロスは衝突を処理するいくつかのクロスのパーティクルを持ちます。以下のものに対してクロスのパーティクルを設定できます。
クロスに衝突パーティクルを設定するには、Cloth のインスペクターで Self Collision And Inter Collision ボタンを押します。
シーンビューに表示された Cloth Self Collision And Intercollision ウィンドウ
Cloth コンポーネントでスキンメッシュに自動的に表れるクロスのパーティクル。最初は、クロスのパーティクルにはコリジョンの設定がされてません。これらの使用されていないパーティクルは黒く表示されます。
セルフコリジョンやインターコリジョンを適用するには、衝突を適用する一群のパーティクルを Select ボタンから選ぶ必要があります。
衝突を適用するパーティクルを選ぶには、左クリックしてドラッグします。
選択したパーティクルは青で表示されます。
Self Collision and Intercollision にチェックを入れ、選択したパーティクルに衝突を適用します。
衝突に使用することを指定したパーティクルは緑で表示されます。
クロスのセルフコリジョンの挙動を有効にするには、Cloth インスペクターウィンドウの Self Collision セクションに移動し、Distance と Stiffness をゼロ以外の値にします。
プロパティ | 機能 |
---|---|
Distance | 各パーティクルの周りのスフィアの直径。Unity は、シミュレーション中にこれらのスフィアが重なり合わないようにします。 Distance は、2 つのパーティクル間の最短距離よりも小さく設定する必要があります。距離が大きい場合、セルフコリジョンが距離の制約に反してジッタが発生する場合があります。 |
Stiffness | パーティクル間の分離の力の強さ。クロスソルバーはこれを計算し、パーティクルを分離した状態に保つようにします。 |
セルフコリジョンとインターコリジョンは、シミュレーション時間全体のかなりの部分を占める可能性があります。衝突距離を小さく保ち、セルフコリジョンインデックスを使用して、互いに衝突するパーティクルの数を減らすことを検討してください。
セルフコリジョンでは三角形ではなく頂点が使用されるので、クロスの厚さよりもかなり大きい三角形をもつメッシュに対してセルフコリジョンが完全に機能するわけではありません。
Paint と Erase モードでは、左マウスボタンを押したまま個々のクロスのパーティクルをドラッグすることで、衝突時に使用するパーティクルを加えたり、削除したりします。
Paint または Erase モードの場合、衝突に指定されたパーティクルは緑、指定されないパーティクルは黒、ブラシの下にあるパーティクルは青です。
上で説明したセルフコリジョンのためのパーティクルを指定するのと同じ方法で、インターコリジョンのためのパーティクルを指定します。セルフコリジョンと同様に、インターコリジョンのために 1 組のパーティクルを指定します。
インターコリジョンの動作を有効にするには Physics 設定 (Edit > Project Settings を開き、Physics カテゴリを選択) を開き、Cloth InterCollision セクションで Distance と Stiffness を 0 以外の値に設定します。
Cloth intercollision の Distance と Stiffness プロパティは、上の Self collision の Distance と Stiffness プロパティと同じ機能を持っています。
クロスは、ゲーム世界の任意のジオメトリと単純に衝突することはできず、Capsule Colliders か Sphere Colliders 配列で指定されたコライダーとだけ相互作用します。
SphereCollider の配列は、有効な単一の SphereCollider インスタンス (2 つ目は null) か、ペアを 1 組含むことができます。前者の場合、ClothSphereColliderPair はクロスが衝突する単一のスフィアコライダーを表します。後者の場合は、円錐カプセル形で、2 つのスフィアによって定義された 1 つの円錐形を表し、円錐は 2 つを繋げます。円錐カプセル形は、キャラクターの手足をモデリングする場合に便利です。
2017–12–05 修正されたページ
クロスのセルフコリジョンとインターコリジョンは 2017.3 で追加NewIn20173
Cloth
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.