bonjour,
je voudrais connaitre comment puis je créer ma propre matrice de projection perspective et pas celle de opengl, et ci je travaille avec celle d'opengl est ce que je peux récupérer les élément de cette matrice
bonjour,
je voudrais connaitre comment puis je créer ma propre matrice de projection perspective et pas celle de opengl, et ci je travaille avec celle d'opengl est ce que je peux récupérer les élément de cette matrice
bonjour,
créer une matrice de projection perspective soit même est très simple les formules sont faciles à trouver (tu fais une recherche avec "perspective projection opengl"), et tu peux même trouver le code à copier-coller par exemple ici :
http://www.opengl.org/wiki/GluPerspective_code
notamment en opengl "legacy free" il faut le faire soit-même (ou en utilisant une lib tierse)
sinon après avoir utilisé l'ancienne fonction gluPerspective() tu peux très bien utiliser GLdouble mat[16]; glGetDoublev(GL_PROJECTION_MATRIX, mat);
merci pour le lien
j'ai le trouvé avant de posé ma question mais je ne sais pas comment je dois faire pour initialiser les paramètres
en plus de ça j'ai trouvé une matrices
Code : Sélectionner tout - Visualiser dans une fenêtre à part void glhFrustumf2(float *matrix, float left, float right, float bottom, float top, float znear, float zfar)
où f = distance focale de la caméra
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1/f 0
et j'ai tombé dans le même problème c'est que comment j'ai fait l'initialisation de f![]()
effectivement il n'y a pas trop d'explication sur ces fonctions car ces fonctions sont des remplacement d'anciennes fonctions obsolètes, et les programmeurs OpenGL connaissent ces anciennes fonctions. ici glhFrustum remplace glFrustum et glhPerspective remplace gluPerspective.
le man de glFrustum est ici :
http://opengl.developpez.com/docs/man/man/glfrustum
et le man de gluPerspective est là :
http://opengl.developpez.com/docs/ma...gluperspective
si tu lis de la doc pour débuter avec OpenGL tu trouveras forcément des explications sur la fonction gluPerspective()
ici la seule différence est que glhPerspective retourne la matrice au lieu de mettre à jour la matrice interne qui est désormais obsolète.
sinon pour glhFrustumf2() tu remarqueras que tu n'as pas vraiment besoin de la comprendre si tu utilises juste glhPerspective(), c'est glhPerspective() qui utilise glhFrustumf2() dans son code. sinon si tu souhaites comprendre gl(h)Frustum c'est également expliqué dans les documentations sur OpenGL.
en effet, je ne faire pas ça pour comprendre la fonctionnement d'opengl mais pour m'aider dans mon projet
qui est en traitement d'image mais j'ai un objet 3d dessiner en opengl
je suis besoins de la matrice de projection pour deux raison
1- pour récupérer (u,v) à partir de (x,y,z)
2- la chose la plus principale est j'ai besoins de faire ça
alors j'ai besoins de connaitre Z-near, Z-far, left , right, botton
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 float k1 = ProjectionMat[0] * (fFrameWidth/2.0f) / (z*z) * Ix; float k2 = -ProjectionMat[5] * (fFrameHeight/2.0f) / (z*z) Iy;
ou la solution la plus facile est de connaitre la distance focale
je n'ai aucune aidée comment je dois faire
je suis désolé de vous dire çà mais SI, vous devez quand même comprendre un minimum OpenGL si vous souhaitez utiliser OpenGL, sinon utilisez autre chose.
En général en OpenGL des coordonnées données avec les deux lettres (u,v) font référence aux coordonnées d'application de la texture sur le polygone.
Visiblement ici il ne s'agit pas de cela, donc vous devriez nous dire de quoi il s'agit, sans quoi nous ne pourrons faire grand chose pour vous, même avec la meilleure volonté du monde.
la chose la plus principale est vous être clair sur quoi vouloir vous faire
j'ai déjà répondu la question initiale du fil de discussion au sujet de la matrice de projection,
maintenant que vient faire cette formule que vous nous parachutez là comme çà ?
à quoi correspondent les paramètres ?
Je vous ai déjà dit de lire la doc sur ce sujet.
Lisez-là, puis s'il y a quoi que ce soit que vous n'y comprenez pas revenez pour le demander.
Avec une recherche google je trouve que la distance focale en opengl fait référence à la distance du centre de projection au plan de projection. Il s'agit juste d'une bête distance. Est-ce que votre problème se situe au niveau de la compréhension du français ? (le français n'est peut-être pas votre langue maternelle ?) Autrement je ne vois pas trop ce qui vous pose problème ?
Déjà avez-vous compris les réponses précédentes concernant la matrice de projection ? Avez-vous compris ce qu'est une matrice de projection ? Et comment elle est utilisée ? Avez-vous lu des documentations concernant les matrices de projection ? Avez-vous défini une matrice de projection dans votre code ? si oui comment ? si non quel type de projection souhaitez-vous utiliser ? orthogonale, perspective, autre ?
Partager