Physics Manager

物理マネージャ

PhysicsManagerはMagica Clothコンポーネントの全体を管理するマネージャです。
シーンに必ず1つ必要となります。

シーンに配置する

MagicaClothを動作させるためにはMagicaPhysicsManagerをシーンに配置する必要があります。
すでにプレハブ化されていますので、次のプレハブをシーンに配置してください。

 

プロパティ

MagicaClothの物理エンジンを更新する頻度などを設定します。
基本的には初期設定のままでほとんど問題ありませんが、プロジェクトに併せて調整した方がパフォーマンスの面で有利な場合もあります。

 

項目 説明
Enabled コンポーネントのEnabledフラグをOFFにすることでMagicaCloth全体の動作を停止できます。
Update Per Second 1秒間あたりの物理エンジンの更新回数です。
更新回数が多いほど物理エンジンは強固になりますが、パフォーマンスが犠牲になります。
初期設定は90回です。
Update Mode

更新時間の実装方法です。

[Unscaled Time]
更新はUnityのフレームレートに関係なく実行されます。
フレームレートがゲーム中に変動する場合に有利です。
ただし1フレーム間に複数回物理エンジンが実行される場合があり、パフォーマンスに波が生じます。

[Once Per Frame]
更新はUnityの1フレームに1回だけ行われます。
この場合は1回の更新でUpdate Per Secondの時間ステップだけ物理エンジンが進みます。
フレームレートがゲーム中にほぼ一定の場合は、こちらのほうがパフォーマンス的に有利です。
このモードを使用する場合は[Update Per Second]をゲームのフレームレートに合わせる必要があります。

[Delay Unscaled Time]
遅延実行。
更新はUnscaled Timeと同じですが、クロスシミュレーションをレンダリング中にも実行します。
このためパフォーマンスが大幅に向上します。
ただ結果が1フレーム遅れることに注意してください。
この遅れは未来予測により補間されます。

Update Bone Scale

Unity2019.2.13までの設定です。
Unity2019.2.13までは、ランタイムのスケール変更を行う場合はこのチェックをONにする必要があります。
またUnity2019.2.13までは、ラインタイムスケールに追加の負荷が掛かることに注意してください。

 

マネージャは破壊されません

PhysicsManagerはシーンが破棄されても削除されない設定になっています。
基本的にはゲームで最初にロードされるシーンに配置しておくことで、そのゲーム中は常に有効になります。

 

2つ目のマネージャは破壊されますが、設定はコピーされます

2つ目のマネージャが発見された場合はそのマネージャは破壊されます。
ただし、そのマネージャの設定は現在のマネージャに上書きされます。

 

遅延実行

UpdateModeを[Delay Unscaled Time]に設定することで、クロスシミュレーションがレンダリング中にも実行されるようになります。

これによりパフォーマンスが大幅に向上しますが、結果が1フレーム遅れることに注意してください。
ただ、この遅れは未来予測により補間することが可能です。

項目 説明
Future Prediction Rate 未来予測率。
1.0では1フレーム先まで未来予測を行い結果が補間されます。
0.5では0.5フレーム先までの未来予測を行います。
0.0に設定すると未来予測を行いません。

次は未来予測の比較画像です。

未来予測無し 未来予測有り

1フレーム遅れるため左では足が布を突き抜けてしまいますが、右では未来予測により補間されるため突き抜けません。

 

実行時スケール変更

クロスコンポーネントは実行時に自由にスケール変更が可能です。
ただし、Unity2018ではスケール値の計算に追加の処理が発生します。
そのため、Unity2018ではPhysicsManagerパネルでランタイムスケールを有効にするかチェックを入れる必要があります。

Unity2019以上ではこのチェックは必要ありません。
また、Unity2019以上ではランタイムスケールによる計算負荷はほとんどありません。