Leí algunas informaciones sobre simulaciones físicas y encontré una posible solución. Funciona dividiendo cada paso de física en tres fases:
1. Pre-Paso:
Cada paso de física, una ventana crea cuatro transformaciones, dos para cada lado de la conexión:
- una transformación de entrada que transforma la posición, velocidad (y posiblemente tamaño y peso) de un objeto en el sistema de coordenadas de destino y
- Una transformación de salida que transforma las fuerzas en el sistema original del objeto.
(Las ventanas estáticas solo necesitan hacer esto una vez).
Además, los objetos en cada sistema de coordenadas se dividen en tres grupos:
Física Agrupando http://content.wuala.com/contents/Tamschi/Stack%20Exchange/WindowGrouping.png
Objetos frente a la ventana (verde).
Un objeto también se cuenta hacia este grupo si está intersectando el plano de la ventana o es probable que lo cruce por detrás de la ventana (no se muestra).
Objetos que cruzan la ventana o es probable que se crucen en este paso de física (naranja)
Objetos detrás de la ventana (azul). Si un objeto vuela hacia la parte posterior de la ventana, todavía está marcado como miembro del grupo tres.
La agrupación se puede simplificar si la ventana está en el borde de la simulación.
2. Paso principal:
La física se calcula principalmente como de costumbre, con algunas excepciones:
Los objetos del segundo grupo nunca chocan con los del tercero y viceversa.
La transformación de entrada de la ventana se usa en los objetos del segundo grupo y los resultados se evalúan contra los objetos frontales e intersectantes del sistema de destino. La fuerza resultante se transforma utilizando la transformación de salida y se aplica al objeto original.
(Si se golpea un objeto durante el cálculo, ¡debe reagruparse!)
3. Post-Paso:
Si un objeto del segundo grupo ha cruzado la ventana, se mueve al sistema de destino utilizando la transformación de entrada.
Pensamientos Adicionales:
Si las transformaciones se conservan después de calcular la física, se pueden usar para acelerar el renderizado y facilitar los cálculos de IA. La agrupación podría usarse para eliminar planos de clip del proceso de renderizado.
La desventaja de esta solución es que las ventanas deben agregarse directamente al motor de física.