Tengo que escribir, lo que se puede resumir como un juego 3D completo desde cero este semestre. Hasta ahora solo he programado juegos 2D en mi tiempo libre, la transición no parece difícil, el juego es simple. El único problema que tengo es la detección de colisiones. Lo único que pude encontrar fue AABB, esferas limitantes o recomendaciones de varios motores de física. Tengo que programar un submarino que se moverá libremente dentro de un sistema de cuevas, AFAIK No puedo usar bibliotecas de física, por lo que nada de lo anterior resuelve mi problema.
Hasta ahora estaba usando SAT para mi detección de colisión. ¿Hay algún algoritmo similar, excelente, pero diseñado para colisión 3D? No estoy hablando de octrees u otras optimizaciones, estoy hablando de la detección de colisión directa de un conjunto de polígonos 3D con otro conjunto de polígonos 3D. Pensé en usar SAT dos veces, proyectar la malla desde la parte superior y lateral, pero luego parece tan difícil incluso dividir el espacio 3D en formas convexas. Además, eso parece demasiado cálculo incluso con octrees.
¿Cómo lo hacen los profesionales? ¿Podría alguien arrojar algo de luz?
fuente
Respuestas:
GJK trabaja en formas convexas, también podría usar SAT. He encontrado la información que ya quería. Aquí hay unos ejemplos:
Para resumir, haré controles de colisión de una esfera o un elipsoide contra múltiples triángulos que forman una malla de colisión. Así es como se hace y esa fue la información que estaba solicitando, a menos que alguien pueda decirme algo diferente.
fuente
Hola, escribí sobre GJK en 3D aquí. SAT es más lento que GJK http://in2gpu.com/2014/05/18/gjk-algorithm-3d/
fuente
Bueno, si no es algo muy exigente y de vanguardia, puede comenzar implementando el algoritmo de detección de colisión de Gilbert . Se puede hacer que sea bastante rápido y será rápido, siempre que su geometría de colisión no sea tan detallada (¡y no es necesario que lo sea!). Así es como incluso algunos simuladores hacen el truco ... cualquier cosa más elaborada probablemente tomará más esfuerzo en consideración.
fuente