Je me suis demandé comment je peux obtenir ma caméra FPS pour se déplacer essentiellement en fonction vers l'avant et vers l'arrière sur la direction de la caméra, mais j'ai échoue lamentablement, je voudrais connaître la façon de faire au mieux, comme en ce moment mon code est commutateur sens derrière mon triangle (w devient s et s devient w) et généralement fonctionne pas (se déplacer en diagonale au lieu d'avancer, parfois), la rotation fonctionne parfaitement, mais la traduction vis ma matrice ...OpenGL, Caméra première personne Traduction
void glfwCursorCallback(GLFWwindow* window, double x, double y) {
camera.rx += (x - camera.lcx) * 0.01f;
camera.ry += (y - camera.lcy) * 0.01f;
kmMat4RotationYawPitchRoll(&camera.mat, camera.ry , camera.rx, 0.0f);
camera.lcx = x;
camera.lcy = y;
}
...
kmMat4PerspectiveProjection(&projection, 90.0f, aspect, 0.1f, 1000.f);
float x = 0.0f, y = 0.0f, z = -1.0f;
while(!glfwWindowShouldClose(window)) {
if(glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS) {
/* pitch - ry */
x += 0.1*sin(camera.ry)*cos(camera.rx);
y += 0.1*sin(camera.ry)*sin(camera.rx);
z += 0.1*cos(camera.ry);
}
if(glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS) {
x -= 0.1*sin(camera.ry)*cos(camera.rx);
y -= 0.1*sin(camera.ry)*sin(camera.rx);
z -= 0.1*cos(camera.ry);
}
glClear(GL_COLOR_BUFFER_BIT);
kmMat4Translation(&transform, x, y, z);
kmMat4Multiply(&object, &camera.mat, &transform);
kmMat4Multiply(&final, &projection, &object);
glUniformMatrix4fv(shader.mpm, 1, GL_FALSE, final.mat);
...
Je ne sais pas comment le faire depuis que je ne l'ai fait auparavant, donc j'aimerais quelques conseils de la gens plus expérimentés ici!
Edit: Le but est d'avoir la caméra aller de l'avant selon l'orientation. En outre, il fonctionne parfaitement si je laisse de côté x
, y
et juste mis z
à + - 0,1 ... il est donc pas un problème de la matrice multiplications
Je voudrais aller vers la caméra, et stocker cette valeur pour les temps supplémentaires (x, y, z) Je ne veux juste passer par un montant fixe dans un axe, je le fais déjà bien – Whiteclaws
Votre "solution" fait du triangle le centre du monde et la caméra tournant autour, donc pas vraiment ce que je cherche, je suis à la recherche d'un FP camera – Whiteclaws
Vous devez changer la matrice de la caméra de façon incrémentielle et ne pas faire la somme des mouvements et des rotations. Voir la nouvelle réponse – Rabbid76