Inertia

慣性


慣性はキャラクターの動きが布の頂点に与える影響です。
例えばキャラクターの移動に対して布の揺れが大きすぎる場合は制限を加えて全体の揺れを抑えることも可能です。
また、キャラクターのテレポートを自動検出してシミュレーションをリセットするなどの設定もできます。

Anchor

指定したオブジェクトの動きを慣性から除外します。
これはキャラクターが移動する床や乗り物に乗ったときにその影響を無効化するのに役立ちます。

Anchor Inertia

アンカーの影響率を指定します。

World Inertia

キャラクター全体の動きが布に与える影響を設定します。
例えば値が0.1の場合はキャラクターの移動量の10%が布に加わります。
これによりキャラクターが高速に動いても全体の揺れを抑えることが可能です。

しかし、キャラクターがゆっくり動いた場合にも影響が削減されてしまうため、揺れが極端に小さくなってしまう弊害もあります。

World Inertia Smoothing

キャラクターの慣性を平滑化し急発進や急停止によりシミュレーションが乱れる問題を軽減できます。

World Movement Speed Limit

キャラクターの移動量が布に与える影響を指定速度でカットします。
例えば値が2.0の場合、キャラクターの移動速度が2m/s以内ならば力はそのまま伝わり、2m/sを超えるとどんなに早く移動してもそれ以上の力は頂点に加わりません。

基本的には”World Inertia”よりもこちらを利用することをお勧めします。

World Rotation Speed Limit “World Movement Speed Limit”と同じく、キャラクターの回転量が布に与える影響を指定速度でカットします。
単位は1秒間の回転角度(Degree)です。
Teleport Mode

キャラクターのテレポートを検出した場合の振る舞いを設定します。

[None]
自動テレポート判定を無効にします。

[Reset]
自動テレポート判定を行い、テレポート後にシミュレーションをリセットします。

[Keep]
自動テレポート判定を行い、テレポート後もシミュレーションをそのまま継続します。

Teleport Distance テレポートとして検出するキャラクターの1フレームでの移動距離(m)
Teleport Rotation テレポートとして検出するキャラクターの1フレームでの回転角度(Degree)
Local Inertia

キャラクターのローカル空間での布の中心位置の移動量が頂点に与える影響を設定します。
これは通常キャラクターのアニメーションの影響となります。
例えば値が0.2の場合は、ローカル空間での中心位置の移動量の20%の力が頂点に加わります。

Local Movement Speed Limit

キャラクターのローカル空間での移動量が布に与える影響を指定速度でカットします。
例えば値が2.0の場合、移動速度が2m/s以内ならば力はそのまま伝わり、2m/sを超えるとそれ以上の力は頂点に加わりません。

Local Rotation Speed Limit

キャラクターのローカル空間での回転量を指定速度でカットします。
単位は1秒間の回転角度(Degree)です。

Local Depth Inertia

頂点の深さ値に応じてローカル慣性を削減します。
値を上げると深さが始点に近いほど動きにくくなります。
終点は削減を受けません。

これはスカートや髪などで始点付近をあまり動かしたくない場合に有効です。
ただ始点付近の慣性が減ると全体的に動きが弱くなってしまう点に注意してください。

Centrifual Acceleration 遠心力の増強値。
値を上げることで遠心力を増加させることが可能です。
Partice Speed Limit

頂点個別の最大速度を制限します。
これは長い帯のようなものの先端が遠心力により過剰に外側に膨らむ現象を緩和できます。

しかし1.0(1m/s)以下に下げると衝突判定の精度が下がるため、数値を下げる場合は注意してください。

3つの慣性


慣性はアンカーとワールドとローカルの3つに分離されて計算されます。
この3つの影響を別々に設定することによりキャラクターの動きがシミュレーションに与える影響を細かく調整できます。

アンカー

アンカーは慣性の基準となる座標空間です。
通常はワールド空間そのものを指しますが、特定のオブジェクトを設定することでそのオブジェクトの動きが慣性の基準となります。
アンカーの影響率を0にするとこで、そのオブジェクトの動きを完全に除外することが可能です。
これはキャラクターが乗り物に乗る際に便利です。

ワールド慣性

ワールド慣性はキャラクターが世界を移動する際の影響です。
これはキャラクターが移動する場合にその速度が布に与える影響です。
ワールド慣性を操作することでその影響を抑えることが可能です。
ワールド慣性はアンカーの影響を除外した動きから計算されます。

ローカル慣性

ローカル慣性はキャラクター内部の動きの影響です。
これはキャラクターのアニメーションの影響とも言えます。
ローカル慣性を操作することでその影響を抑えることが可能です。
ローカル慣性はアンカーとワールド慣性の影響を除外した動きから計算されます。

慣性の平滑化


WorldInertiaSmoothingパラメータを調整することでワールド慣性を平滑化できます。
これにより急発進や急停止などでシミュレーションが乱れる問題を緩和できます。
また、キャラクターの小さく不規則な動きも平滑化されシミュレーションが安定します。

コンポーネントの配置

慣性の効果を十分に発揮するにはMagicaClothコンポーネントの配置場所に注意する必要がります。
これはそれぞれの慣性の計測方法が異なるためです。

アンカー
ワールド慣性

アンカーとワールド慣性はMagicaClothコンポーネントのTransform位置から計測されます。
そのため通常はキャラクターのルートGameObjectの直下に配置することが望まれます。

ローカル慣性

ローカル慣性は布の固定属性の分布から自動で計算されます。
そのため、特に注意を払う必要はありません。

次に推奨されるキャラクターへのMagicaClothコンポーネントの配置図を示します。
図のようにMagicaClothコンポーネントをキャラクターGameObjectの直下に配置することが推奨されます。

ローカル慣性の中心点


クロスには必ず1つ中心点があります。
これは固定属性の分布から自動で決定されシーンビューでは紫の球としてギズモ表示されます。
ローカル慣性はこの中心点の動きから計測されます。

自動テレポート判定


キャラクターが大きく移動した際にはそれを自動的に検出してシミュレーションをリセットすることも可能です。
モードを”Keep”にすることでテレポート後もまったく同じ姿勢のままシミュレーションを継続させることもできます。