2012-10-08 7 views

Respuesta

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

timeStep - tiempo transcurrido después de la última simulación.

La simulación interna se realiza para algunos pasos internos constantes. fixedTimeStep

fixedTimeStep ~~~ 0,01666666 = 1/60

si timeStep es 0.1 entonces se incluirán 6 (timeStep/fixedTimeStep) simulaciones internos.

para realizar movimientos planeador BulletPhysics interpolar los resultados paso final de acuerdo recordatorio después de la división (timeStep/fixedTimeStep)

6

Sé que llego tarde, pero pensé que la respuesta aceptada fue sólo marginalmente mejor que la descripción de la documentación.

timeStep: La cantidad de segundos, no milisegundos, transcurridos desde la última llamada al stepSimulation.

maxSubSteps: En general, debe permanecer en uno, por lo que Bullet interpola los valores actuales por sí mismo. Un valor de cero implica una tasa de tics variable, lo que significa que Bullet avanza la simulación exactamente timeStep segundos en lugar de interpolar. Esta característica tiene errores y no es recomendable. Un valor mayor que uno debe siempre cumple la ecuación timeStep < maxSubSteps * fixedTimeStep o está perdiendo tiempo en la simulación.

fixedTimeStep: Inversamente proporcional a la resolución de la simulación. La resolución aumenta a medida que este valor disminuye. Tenga en cuenta que una resolución más alta significa que requiere más CPU.

Cuestiones relacionadas