Permítanme explicar primero el bloqueo de fase: cuando dos objetos de masa distinta de cero ocupan el mismo espacio pero tienen energía cero (sin velocidad).
¿Chocan para siempre con vectores de resolución de velocidad cero o simplemente permanecen unidos hasta que una fuerza externa interactúa?
En mi motor preparado en casa, me di cuenta de que si cargaba un personaje en un árbol y lo movía, señalarían una colisión y volverían a su lugar original. Supongo que podría solucionar esto implementando impulsos en caso de una colisión en lugar de simplemente regresar al último lugar en el que estaba (mi implementación apesta).
Pero si bien hago que mi motor sea más robusto, solo tengo curiosidad por saber cómo la mayoría de los otros motores de física manejan este caso. ¿Los objetos que comienzan en el mismo lugar sin velocidad de movimiento simplemente se disparan entre sí en una dirección aleatoria? ¿O se sientan allí hasta que sucede algo? ¿Qué opción es generalmente el mejor enfoque?
fuente
Respuestas:
Supongo que este tipo de no termina siendo una respuesta ...
Creo que a veces depende de la implementación y el enfoque básico utilizado para la detección y resolución de colisiones (supongo que es como el 80% de un motor de física de cuerpo rígido). Es divertido porque acabo de resolver este problema el otro día en mi propio motor de física y arrojé un objeto al espacio NaN.
Tenía un objeto generado exactamente en el mismo lugar que otro objeto y ambos tenían la misma forma. En este caso particular, el generador de contactos hizo valores muy malos. Lo arreglé eligiendo valores arbitrarios para el contacto (empujar el objeto más pequeño / más ligero hacia arriba, básicamente). Sin embargo, este fue un caso bastante cortado y seco.
Si una silla apareciera dentro de una mesa, entonces dependería de qué contactos se generaron si se separaron o se atascaron. En mi caso, no estoy usando un sistema basado en restricciones (al menos todavía), por lo que es probable que el objeto se rompa como si oscilara y se durmiera. En un sistema de penetración + impulso como el que uso, es bastante fácil ver todo lo feo y cómo resultará. No tengo idea de cómo un sistema basado en restricciones resuelve este problema o si incluso lo detecta ... la restricción me parece inalcanzable sin alguna intervención y no tengo idea de si hay una forma estándar para ese tipo de motores.
Otros seguramente tendrán cosas más inteligentes que decir, pero esto fue demasiado largo para un comentario.
fuente
Esto se maneja de dos maneras:
Sin embargo, esto solo funciona si está diferenciando velocidad / tiempo. No funcionará en un juego basado en fichas, y dará como resultado artefactos visibles, como un objeto, ya sea haciendo un túnel a través de un objeto o siendo expulsado visiblemente del otro objeto.
En el caso de los juegos basados en mosaicos, puede adoptar un enfoque predictivo, verificando dónde estará el objeto si se mueve. Si el movimiento causara bloqueo de fase, entonces no permita el movimiento.
fuente