Tengo dos objetos en un solo shader: una tela (hecha de vértices y triángulos) y una esfera. Cuando la tela cae y se encuentra con la esfera, debe haber una colisión tal que los dos objetos no estén en la misma posición o se superpongan entre sí. Sé cómo implementar la colisión, pero el problema es que necesito tener las coordenadas correctas de los dos objetos. Ambos se crean en el origen (0,0,0) y luego se transforman en el vertex shader con las matrices de proyección, vista y modelo (diferentes matrices de vista para los dos), pero, por lo que vi, si trabajamos en en la función dibujar(), las coordenadas son las iniciales sin todas las matrices de transformación (entonces supongo que la matriz de transformación se aplica al final para visualizar los objetos). Debido a que en mi render la esfera no está en la misma posición que la tela pero debajo de ella, el resultado es erróneo. ¿Cómo puedo trabajar en las coordenadas de los dos objetos para que el resultado sea visualmente correcto? Porque no tenemos que ver visualmente los dos objetos superpuestos entre sí. Intenté transformar manualmente todas las coordenadas con toda la matriz de transformación pero el resultado es realmente extraño.
La solución que encontré es que cuando se realizan los cálculos, se toman las coordenadas locales de los objetos (antes de la aplicación del modelo, la proyección y la matriz de vista). En mi caso, todos los objetos se crean en el origen, luego simplemente tuve que cambiar las coordenadas locales (originales) moviendo la tela sobre la esfera y eliminando la matriz de vista para el eje y. La colisión funciona como se esperaba.