2012-10-08 22 views

risposta

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

timeStep - tempo trascorso dopo l'ultima simulazione.

La simulazione interna viene eseguita per alcuni passaggi costanti interni. fixedTimeStep

fixedTimeStep ~~~ 0,01666666 = 1/60

se timeStep è 0,1, allora comprenderà 6 (timeStep/fixedTimeStep) simulazioni interne.

a fare movimenti aliante BulletPhysics interpolare i risultati passo finale secondo promemoria dopo la divisione (timeStep/fixedTimeStep)

6

So di essere in ritardo, ma ho pensato che la risposta accettata era solo marginalmente migliore rispetto descrizione della documentazione.

timeStep: la quantità di secondi, non di millisecondi, trascorsa dall'ultima chiamata a stepSimulation.

maxSubSteps: In genere dovrebbe rimanere in uno così Bullet interpola i valori correnti da solo. Un valore pari a zero implica un tasso di tick variabile, ovvero Bullet anticipa la simulazione esattamente timeStep secondi anziché interpolare. Questa funzione è difettosa e non consigliata. Un valore maggiore di uno deve sempre soddisfare l'equazione timeStep < maxSubSteps * fixedTimeStep o stai perdendo tempo nella simulazione.

fixedTimeStep: inversamente proporzionale alla risoluzione della simulazione. La risoluzione aumenta man mano che questo valore diminuisce. Tieni presente che una risoluzione più alta richiede più CPU.