2012-10-08 2 views

Antwort

4
btDynamicsWorld::stepSimulation(
    btScalar timeStep, 
    int maxSubSteps=1, 
    btScalar fixedTimeStep=btScalar(1.)/btScalar(60.)); 

timeStep - verstrichene Zeit nach der letzten Simulation.

Interne Simulation wird für einige interne konstante Schritte durchgeführt. fixedTimeStep

fixedTimeStep ~~~ 0,01666666 = 1/60

wenn timeStep 0,1, dann wird es zählen 6 (timeStep/fixedTimeStep) interne Simulationen.

Um Segelflugzeug Bewegungen BulletPhysics interpolieren Endergebnisse Schritt nach Mahnung nach der Teilung (timeStep/fixedTimeStep)

6

Ich weiß, ich bin spät dran, aber ich dachte, die akzeptierte Antwort als in der Dokumentation der Beschreibung nur geringfügig besser war.

timeStep: Die Anzahl der Sekunden seit dem letzten Aufruf von stepSimulation, nicht Millisekunden.

maxSubSteps: Sollte im Allgemeinen auf eins bleiben, so dass Bullet die aktuellen Werte selbst interpoliert. Ein Wert von Null impliziert eine variable Tick-Rate, was bedeutet, dass Bullet die Simulation genau timeStep Sekunden fortsetzt anstatt zu interpolieren. Diese Funktion ist fehlerhaft und wird nicht empfohlen. Ein Wert größer als eins muss immer die Gleichung timeStep < maxSubSteps * fixedTimeStep erfüllen oder Sie verlieren Zeit in der Simulation.

fixedTimeStep: Umgekehrt proportional zur Auflösung der Simulation. Die Auflösung erhöht sich, wenn dieser Wert abnimmt. Bedenken Sie, dass eine höhere Auflösung bedeutet, dass mehr CPU benötigt wird.