5

弾丸物理学で「STEP」という用語はどういう意味ですか?

関数stepSimulation()とそのパラメーターはどういう意味ですか?

ドキュメントを読みましたが、何も手に入れることができませんでした。

有効な説明は大いに役立ちます。

4

3 に答える 3

12

私は遅れていることを知っていますが、受け入れられた答えは、ドキュメントの説明よりもわずかに優れているだけだと思いました。

timeStep:。への最後の呼び出しから経過したミリ秒ではなく秒数stepSimulation

maxSubSteps:通常は1にとどまる必要があるため、Bulletは現在の値を独自に補間します。ゼロの値は、可変ティックレートを意味します。つまり、BullettimeStepは、補間するのではなく、シミュレーションを正確に数秒進めます。この機能はバグがあるため、お勧めしません。1より大きい値は常に方程式を満たす必要がありtimeStep < maxSubSteps * fixedTimeStepます。そうでない場合、シミュレーションで時間が失われます。

fixedTimeStep:シミュレーションの解像度に反比例します。この値が減少すると、解像度が増加します。解像度が高いほど、より多くのCPUが必要になることに注意してください。

于 2014-01-22T03:13:20.110 に答える
5
btDynamicsWorld::stepSimulation(
   btScalar timeStep,
   int maxSubSteps=1,
   btScalar fixedTimeStep=btScalar(1.)/btScalar(60.));

timeStep-最後のシミュレーションから時間が経過しました。

内部シミュレーションは、いくつかの内部定数ステップに対して実行されます。fixedTimeStep

fixedTimeStep~~~ 0.01666666 = 1/60

timeStepが0.1の場合、6( timeStep / fixedTimeStep)の内部シミュレーションが含まれます。

グライダーの動きを作るために、BulletPhysicsは除算後のリマインダーに従って最終ステップの結果を補間します(timeStep / fixedTimeStep

于 2012-10-08T11:13:57.093 に答える
2
  • timeStep-シミュレーションをステップ実行する時間(秒単位)。通常、最後に呼び出してから時間が経過します。

  • maxSubSteps-Bulletを呼び出すたびに実行できる最大ステップ数。

  • fixedTimeStep-シミュレーションの解像度を調整します。ボールが壁に衝突するのではなく壁を貫通する場合は、ボールを減らしてみてください。


1ここで、の値の特別な意味に関するプロキシの回答の問題に対処したいと思いますmaxSubSteps。特別な値は1つだけです。つまり0、シミュレーションは一定でない時間ステップで実行されるため、使用したくない可能性があります。他のすべての値は同じです。実際のコードを見てみましょう:

if (maxSubSteps)
{
    m_localTime += timeStep;
    ...
    if (m_localTime >= fixedTimeStep)
    {
        numSimulationSubSteps = int(m_localTime / fixedTimeStep);
        m_localTime -= numSimulationSubSteps * fixedTimeStep;
    }
}
...
if (numSimulationSubSteps)
{
    //clamp the number of substeps, to prevent simulation grinding spiralling down to a halt
    int clampedSimulationSteps = (numSimulationSubSteps > maxSubSteps) ? maxSubSteps : numSimulationSubSteps;
    ...
    for (int i = 0; i < clampedSimulationSteps; i++)
    {
        internalSingleStepSimulation(fixedTimeStep);
        synchronizeMotionStates();
    }
}

したがって、にmaxSubSteps等しいことについて特別なことは何もありません1時間を無駄timeStep < maxSubSteps * fixedTimeStepにしたくないのであれば、この公式を本当に守るべきです。

于 2018-11-02T09:06:04.207 に答える