Motores físicos

Nivel UniversitarioDificultad ★★★★★Aplicación⌖ Ver en el mapa

¿Qué es?

Software que hace avanzar un mundo de cuerpos en pasos de tiempo pequeños: acumular fuerzas, integrar velocidades y posiciones (Euler semiimplícito o Verlet), detectar colisiones y resolver contactos. Un resolvedor numérico de EDO ajustado para la velocidad y la estabilidad más que para la precisión.

¿Por qué existe?

Los videojuegos y el cine necesitan movimiento plausible en tiempo real para miles de objetos. No hay soluciones exactas, y la precisión importa menos que no explotar nunca: un ragdoll que tiembla es un error; uno que se desvía un 1 %, no.

Fórmulas

vn+1=vn+h Fnm,xn+1=xn+h vn+1v_{n+1} = v_n + h\,\frac{F_n}{m}, \qquad x_{n+1} = x_n + h\,v_{n+1}
Euler semiimplícito (simpléctico)
xn+1=2xn−xn−1+h2 Fnmx_{n+1} = 2x_n - x_{n-1} + h^2\,\frac{F_n}{m}
integración de Verlet (segundo orden, simpléctica)

¿Cómo se calcula?

en cada fotograma (h = 1/60 s, a menudo en subpasos):
    para cada cuerpo: F = gravedad + muelles + fuerzas del usuario
    para cada cuerpo: v += h · F/m ;  x += h · v     # Euler semiimplícito
    detectar colisiones;  aplicar impulsos para corregir contactos

¿Por qué importa?

Unity, Unreal, Godot, los simuladores robóticos (MuJoCo, Isaac) y las herramientas de efectos visuales tienen uno en su núcleo; las versiones diferenciables permiten a los robots aprender por descenso de gradiente a través de la física.

Las matemáticas que hay detrás

  • Vectores★★★★★fundamental

    Posiciones, velocidades y fuerzas son vectores 3D que se actualizan en cada fotograma.

  • Derivada★★★★★fundamental

    Los motores guardan posiciones y sus derivadas (velocidades) y las avanzan fotograma a fotograma.

  • Estabilidad numérica★★★★★fundamental

    Los integradores explícitos con un paso demasiado grande explotan; los motores eligen esquemas estables y subdividen el paso.

  • Un motor físico integra x˙=v\dot x = v, v˙=F/m\dot v = F/m para cada cuerpo en cada fotograma.

  • Método de Euler★★★★★fundamental

    Euler semiimplícito es el integrador por defecto de Box2D, Bullet y la mayoría de motores de juego.

  • Integral definida★★★★★frecuente

    Las posiciones son integrales de las velocidades, y las velocidades, de las aceleraciones.

  • Teorema fundamental del cálculo★★★★★fundamental

    Integrar la velocidad da la posición: cada paso de simulación es una aplicación diminuta del TFC.

  • Polinomio de Taylor★★★★★frecuente

    Los integradores (Euler, Verlet) son desarrollos de Taylor truncados del movimiento en el paso de tiempo.

  • Muelles y amortiguadores mueven la tela, los ragdolls, el suavizado de cámara y las suspensiones de vehículos.

  • Rigidez y métodos implícitos★★★★★frecuente

    La tela y los cuerpos blandos usan integración implícita (Baraff–Witkin) para que los muelles rígidos no exploten.

  • Continuidad★★★★★frecuente

    La simulación supone que el movimiento es continuo entre fotogramas; las colisiones lo rompen y se tratan aparte.

  • Método de Newton★★★★★avanzada

    Los integradores implícitos para sistemas rígidos (tela, cuerpos blandos) resuelven un sistema no lineal con Newton en cada paso.

  • Campos vectoriales★★★★★frecuente

    El viento, los pozos de gravedad y los efectos de partículas se aplican como campos de fuerzas.

  • Las fuerzas no lipschitzianas (contactos, cambios de rozamiento) rompen la unicidad, y por eso los motores las tratan aparte.

¿Dónde se utiliza?

Temas de informática a los que se llega desde aquí, con la cadena de ideas que lleva a ellos:

Qué depende de él

↑ ↓ para navegar · ↵ · Esc