En muchos juegos de carreras ( Burnout Paradise , por ejemplo) cuando está a punto de ocurrir una colisión, el juego cambia automáticamente a cámara lenta y continúa en secuencia lenta hasta que se completa la colisión.
Siempre pensé que esto era por los efectos. ¡No querrás perderte ninguna parte de la colisión! Pero uno de mis amigos sugirió recientemente que esto se hace para asegurarse de que no se requiera una tasa abrumadora de procesamiento cuando se produce una colisión.
Ahora creo que en realidad es al revés. Cuando ocurre una colisión, se muestran tantos detalles en cámara lenta, estoy seguro de que hay una sobrecarga en la tubería de procesamiento y procesamiento.
¿Que es correcto?
¿Una escena en cámara lenta aumenta el uso de CPU / GPU, o lo disminuye?
Es posible que este sea el caso. A menos que esté haciendo física para la colisión en la GPU, significa ponerse en cuclillas para eso. Pero en términos de la física misma ... es posible.
Si estás simulando el movimiento de varios cuerpos, tienden a moverse de una manera muy predecible. Las fuerzas y los campos de fuerza (es decir, la gravedad) son fácilmente predecibles. Donde se mueven las cosas se calcula rápidamente.
Justo hasta que una cosa golpea a otra. Mira, en física, tienes lo que se llama una división temporal; Esta es la cantidad de tiempo que cubre la ejecución del sistema de física. Si su intervalo de tiempo cubre 1/30 de segundo (30 fps para la actualización de física), entonces cada actualización de física mueve objetos 33.3 milisegundos hacia el futuro.
Cuando los objetos no colisionan, puedes moverlos desde el principio de esos 33,3 ms hasta el final. La física para hacerlo es simple y ha sido conocida por siglos. Simplemente determine la aceleración a partir de las fuerzas netas, aplique esa aceleración para el segmento de tiempo al objeto y muévala a su nueva velocidad (nota: esto puede ser más complejo si desea una mayor precisión).
El problema es cuando los objetos chocan. De repente, ahora tienes que procesar las fuerzas físicas dentro de un intervalo de tiempo, en lugar de solo una vez al principio. Si un objeto colisiona dos o tres veces dentro de un marco físico, entonces hay más cálculos físicos que tienes que rehacer.
Si tiene muchas colisiones dentro de un intervalo de tiempo, realmente puede matar su velocidad de cuadros. Sin embargo, la posibilidad de colisiones múltiples dentro de un segmento de tiempo disminuye a medida que disminuye el tamaño del segmento de tiempo. Sims de carreras de alta gama como Forza y Gran Turismo ejecutan sus sistemas de física a velocidades de cuadro increíbles. Creo que uno de ellos obtiene hasta 300 + fps en su actualización de física.
La cámara lenta es el equivalente efectivo de eso. Al disminuir el intervalo de tiempo de la física sin aumentar también la velocidad de fotogramas de representación para compensar, el mundo parece más lento. Y, por lo tanto, es mucho menos probable que obtenga múltiples colisiones dentro de un intervalo de tiempo.
Dicho esto, dudo que sea por eso que juegos como este entran en cámara lenta. En general, es más por su estilo visual y presentación dramática. Esos sistemas físicos generalmente pueden manejarlo, en cuanto al rendimiento.
fuente
En primer lugar, esto se hace por el efecto visual, no por razones de rendimiento.
La forma estándar de lidiar con el rendimiento en los juegos pesados de física es escalar el número de objetos, escalar la complejidad de los objetos y jugar con la configuración del motor para escalar entre la precisión de la simulación y el rendimiento. Si hay problemas, abandonaría lo que considera que son las características menos significativas.
Sin embargo, recuerde que la industria ha hecho juegos de autos bastante realistas durante los últimos ~ 15 años, con las computadoras modernas no es como si tuvieran que volver a escalar a 3 ruedas para que las cosas funcionen.
El problema:
es cierto que una colisión puede causar trabajo adicional, cuánto depende mucho de las características específicas del juego, un motor de física más detallado tendrá muchas pequeñas colisiones entre diferentes partes que pueden constituir un aumento significativo en el cálculo requerido . Pero eso debe tenerse en cuenta cuando la física se escala, no es un problema obtener una buena física que aún pueda manejar algunas colisiones.
Si simplemente ejecuta la simulación física más lentamente para obtener movimiento lento, la carga caerá proporcionalmente. Sin embargo, uno debe tener en cuenta que los requisitos para la cámara lenta y la física en tiempo real son diferentes, puede permitirse tener una precisión más baja cuando las cosas suceden a la velocidad de la carrera. Mientras el jugador no note que el motor de física está mal, no es un gran problema, la cámara lenta hace que los resbalones sean mucho más fáciles de atrapar, por lo tanto, la cámara lenta tiene un requisito de mayor precisión.
Uno puede optar por usar la misma física, escalada para cumplir con ambos conjuntos de requisitos. Esta solución requerirá algo de potencia de procesamiento adicional, pero es fácil de implementar y da a las computadoras modernas perfectamente viables.
Cambiar la configuración física es más complicado, pero potencialmente puede dar lugar a algunas colisiones magníficas, no solo se puede aumentar la precisión, sino que también es posible cambiar los modelos físicos de los automóviles por otros más detallados que se rompan de una manera más realista. Este modo debería terminar usando aproximadamente la misma cantidad de tiempo de CPU para la física que el modo normal, simplemente porque ambos están escalados para ejecutarse en la misma configuración de minespecificación.
Una forma intermedia es utilizar un motor de física de pasos variables, que en general aumentará la precisión cuando disminuya la velocidad de la simulación, resolviendo así al menos parte del problema. Hay otras razones para no usar la física de paso variable, pero el paso variable sigue siendo bastante común en la industria.
fuente