Actuellement, j'essaie de mettre en œuvre la cartographie de l'ombre pour le soleil dans mon jeu. Pour cela, je dois utiliser le regard de glm sur la fonction pour rendre la scène du point de vue du soleil. Voici mon code:OpenGL GLM lookAt comportement étrange
projection = glm::ortho<float>(-200, 200, -200, 200, -200, 400);
view = glm::lookAt(sun_pos_modelspace, -target_position_modelspace, glm::vec3(0, 1, 0)); // target needs to be negative for correct camera direction
final_matrix = projection * view;
Cela fonctionne bien puisque la scène est rendue du point de vue du soleil quand le jeu commence. Mais en traduisant la cible, la matrice de vue semble bouger de sa position d'origine (qui est la position du soleil). Je ne veux pas que l'œil bouge du tout, je veux juste que l'appareil photo s'assoie à la position du soleil et regarde directement le vecteur cible.
Dois-je utiliser une autre fonction glm pour résoudre ce problème? Ou est-ce que j'utilise mal le lookAt?
Je ne sais pas quelle version de glm vous utilisez, mais dans 0.9.7 j'ai trouvé le lookat() ne se comporte pas exactement comme il est supposé. Je vous suggère de calculer LookAt par vous-même –
@MichaelIV: que ça sonne bizarre, GLM existe depuis longtemps et est généralement stable ... vous devriez ouvrir un rapport de bug pour cela, sinon il ne peut pas être corrigé. – karyon
J'utilise smth plus semblable à ce que vous pouvez trouver dans gluLookAt(). Je ne comprends pas pourquoi dans GLM ils pointent sur la partie traduction. Aussi je ne nie pas Z car mon forward est positif (contrairement à GL default) –