Eu tenho que escrever, o que pode ser resumido como, um jogo 3D completo do zero neste semestre. Até agora, eu só programava jogos 2D no meu tempo livre, a transição não parece difícil, o jogo é simples. O único problema que tenho é a detecção de colisões. A única coisa que encontrei foi a AABB, esferas delimitadoras ou recomendações de vários mecanismos de física. Eu tenho que programar um submarino que se moverá livremente dentro de um sistema de cavernas; AFAIK não posso usar bibliotecas de física; portanto, nenhuma das opções acima resolve meu problema.
Até agora eu estava usando o SAT para minha detecção de colisão. Existem algoritmos excelentes e similares, mas criados para colisão 3D? Não estou falando de octrees ou outras otimizações; estou falando de detecção direta de colisão de um conjunto de polígonos 3D com outro conjunto de polígonos 3D. Pensei em usar o SAT duas vezes, projetar a malha da parte superior e lateral, mas parece tão difícil até dividir o espaço 3D em formas convexas. Também isso parece computação demais, mesmo com octrees.
Como os profissionais fazem isso? Alguém poderia lançar alguma luz.
fonte
Respostas:
GJK funciona em formas convexas, eu também poderia usar SAT. Eu encontrei as informações que eu já queria. aqui estão alguns exemplos:
Para resumir, farei verificações de colisão de uma esfera ou um elipsóide contra vários triângulos que formam uma malha de colisão. Parece que é assim que se faz e essa era a informação que eu estava pedindo, a menos que alguém pudesse me dizer diferente.
fonte
Ei, eu escrevi sobre GJK em 3D aqui. O SAT é mais lento que o GJK http://in2gpu.com/2014/05/18/gjk-algorithm-3d/
fonte
Bem, se não é algo muito exigente e avançado, você pode começar implementando o algoritmo de detecção de colisão de Gilbert . Pode ser feito para ser bastante rápido e rápido, desde que sua geometria de colisão não seja tão detalhada (e não precisa ser!). É assim que até alguns simuladores fazem o truque. Qualquer coisa mais elaborada provavelmente levará mais esforço em consideração.
fonte