わたしのためのめも

最も普通なODEはシミュレーションのタイプは以下の特性を持ちます.
  • リアルタイム(シミュレーションタイムと壁時計の時間がシンクロしている)
  • グラフィックデバイスを用いて可視化される.

このページではどのようにシミュレーションパートとグラフィックをどのように統合するかを説明します.
シミュレーションと可視化は相互作用的な処理です.繰り返しのために,シミュレーションはワールドの状態を更新し,その後この状態を可視化処理で描き出します.まず第一条件はあなたの最後のメインループの処理時間を測ることです.これは単精度・倍精度ともに共通の問題です.
単純なアプローチとしては,ODEのStep()関数を呼び出し,この間の時間を測ることです.これは2つの欠点を有しており,遅いCPU・グラフィックボードの場合,経過時間はシミュレーションが悪い結果を与える,大きすぎるタイムステップで実行することになるでしょう.さらに、測定された時間ステップは、非決定論的シミュレーションを引き起こし、実行ごとに変化する可能性があります.つまり,あなたはシミュレーションを実行するたびに、結果が異なることになります。

あるシミュレーションを取得するためには
  • 実行間の再現性
  • リアルタイム性
  • 可視化ステージでのスピードに影響を与えない

以下のアプローチが推奨されます.
  • 固定されたタイムステップを選び,ODEのシミュレーションの間使用する.例えば1ms
  • シミュレーション内のあなたが計測した経過時間dtのタイムステップを見てください.これはシミュレーションステップによって分けられたdtを丸めることで出来ます.たとえば,可視化する際,計測した時間が14.5msならあなたはシミュレーションステップを15msにすべきです.
  • 経過時間がシミュレーションステップが必要なそれぞれのフレームで増え続ける状況を避けるために,dtの上限を決めて置く必要があります.でないと,低速のシステムはリアルタイムでないにも関わらず実行されます.
  • 代わりに除算結果を切り上げ、あなたが次のフレームにシミュレーション時間の残りを選ぶことができることに注意してください。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます