Si (con el fin de detectar colisiones) los objetos 3D están representados en un juego por esferas, ¿cuál es un buen algoritmo para detectar una colisión entre esferas?
Si cada objeto tiene una posición a partir del último cuadro y una nueva posición (deseada), ¿cuál es un buen algoritmo que identificará las colisiones donde las esferas no se cruzan en el cuadro anterior, y pueden no cruzarse en el segundo cuadro, pero se cruzaron en algún punto intermedio?
fuente
Use una prueba de barrido como se demuestra en este artículo de Gamasutra.
fuente
La parte superior de mi cabeza:
Y eso es todo, hay que esperar que sea bastante rápido.
fuente
Aquí hay otro buen artículo de Gamasatura .
fuente
Hablando como alguien que ha hecho esto: no vale la pena . A menos que el diseño de su juego lo necesite absolutamente, y casi seguro que no, gastará mucho más esfuerzo trabajando de lo que realmente espera. Y será más lento de lo que querías que fuera.
fuente
Hay un artículo sobre derivación de detección de colisión con matemáticas en Flipcode . Tiene círculo-cirle. Hay cómo detectar con precisión el punto de colisión y verificar si hay una colisión.
fuente
La detección de colisión para objetos en movimiento generalmente se denomina "Cálculo de volumen barrido", aquí hay algunos códigos / artículos sobre este tema.
http://www.gpu-voxels.org/demos/ (Demo)
Bibliotecas de código fuente:
https://github.com/fzi-forschungszentrum-informatik/gpu-voxels
https://libigl.github.io/tutorial/#swept-volume
https://github.com/gradientspace/geometry3Sharp
Artículos:
http://gamma.cs.unc.edu/SV/sm03.pdf
https://www.cs.columbia.edu/~allen/PAPERS/abrams.swept.pdf (Desafortunadamente no hay código fuente)
http://www.realtimerendering.com/intersections.html (Colección bastante pesada de enlaces)
fuente