Modeleur 3d : Probleme de back spin ds l affichage (opengl/Qt)
serialtom
Messages postés34Date d'inscriptionmercredi 9 mars 2005StatutMembreDernière intervention29 octobre 2009
-
16 mars 2005 à 11:07
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 2007
-
17 mars 2005 à 15:12
salut a tous
je vous ecris car j ai un souci... je realise actuellement un modeleur 3d et j ai un problème avec l une de mes fonctions. je veux effectuer une rotation autour d un point quelconque de mon objet. je double clique sur ce point puis j effectue une rotation ds mon code cela se deroule ainsi
(point cliqué de coord x,y,z)
translation(xyz)
rotation
translation(xyz)
les translation sont faites avec gltranslate et les rotations avec glmultmatrix(rotation matrix)
le probleme est que quand j effectue mon double click l objet est translaté automatiquement vers un autre point puis la fonction marche nickel ... c assez enervant ...
serialtom
Messages postés34Date d'inscriptionmercredi 9 mars 2005StatutMembreDernière intervention29 octobre 2009 16 mars 2005 à 11:21
une petite question subsidiaire comment faire pour agrandir le cone des pixels pour la selection... en effet je suis obligé de faire une dizaine de doubles clicks pour qu ma selection s effectue vraiment
barraq
Messages postés89Date d'inscriptionmercredi 25 juin 2003StatutMembreDernière intervention14 septembre 2007 17 mars 2005 à 10:04
Je suis pas un expert mais moi j'avais se meme probleme aussi, alors
déja comment est ta fenetre OpenGL ? tu travail en plein écran ? t si
oui c'est un autre problem.
Si non, ou est placé ta fenetre ? dans le coin gauche haut ?
car se qui se passe, quand tu prend les ccordonnée de la sourie, tu les
recupere en coordonnées écran ! donc si ta fenetre est qq par ailleur
sa ne marche pas, car le zero de ta fenetre n'est pas le meme zero que
ton ecran.... donc tu a une translation en effet....
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 17 mars 2005 à 12:13
Hey !, re SerialTom !, toujours des soucis avec ce modeleur ??....
et re - aussi Barraq.
Si j'ai bien compris tu clic sur un point, puis tu te translate en ce point, puis rotation, puis tu te remets a ta position ?, si tu fait ca alors teste avec :
glPushMatrix()
glLoadIdentity()
glTranslatef(....)
glMultMatrix(....)
glTranslatef(....)
glPopMatrix();
Suis pas sur que ce soit ca qu'il te faut mais essaye et dit si ca marche..., au pire poste le bout de code....
En attendant je regarde l'histoire de la selection plus grande.
Et au fait Barraq les coords ecran et coords fenetre dans OpenGL n'ont rien n'avoir d'ailleurs il utilise Qt et les height sont inverse.
@+,KeniiyK
Vous n’avez pas trouvé la réponse que vous recherchez ?
// there's interference between autorotation and mouse rotation so, to avoid it, when the autorotation is active we make it first, else we make it last because this is a static rotation matrix
// and the dynamic rotation matrix have a bad behaviour when they are not in first place of rotations
// for simulation the rotation aroud a point we can transtlate the frustrum by a vector OP, apply the modifications and reTranslate the frustrum by a vector -OP
if(isRotationActive ==
true)
{
if(AutoRotationTimer->isActive() == TRUE)
{
glMultMatrixf(CurrentAutoRotationMatrix);
//Matrix for the AutoRotation, dynamic in this case
}
else
{
glMultMatrixf(CurrentRotationMatrix);
//Matrix of the current rotation updated (when the left button is pressed), dynamic in this case
}
glMultMatrixf(MemoryRotationMatrix);
//Matrix of basic/former rotation(s), always static
lorsque je double clique je change les valeurs de (centerx_world, centery_world, centerz_world) et il se produit une petite translation de mon objet...
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 17 mars 2005 à 12:50
Si tu utilise le picking d'OpenGL il y a la methode gluPickMatrix(......) qui permet, entre autre, de preciser la taille de selection autour du pointeur de la souris.
Si tu n'utilise pas le picking d'OpenGL dis comment tu fais pour faire ta selection....
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 17 mars 2005 à 12:56
Je vais peut-etre etre un peu lourd mais deja, est-tu sur de tes matrice de rotation et que la 4eme colonne = (0 0 0 1) (transposée) ? et un autre truc (que tu sais surement deja) les matrices OpenGL sont rentrés colonnes par colonnes et non comme a "l'habitude" lignes par lignes.
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 17 mars 2005 à 13:03
Ok c'est la fonction de l'autre fois donc. Mais alors tu clique puis tu regardes si le point est dans une liste de points ? et ensuite si oui alors t'as ton point sinon tu continues a clické ?
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 17 mars 2005 à 13:26
Pour la selection plus grande (genre 3*3 pixels) ben tu fais :
glReadPixels(x-1,height()-y-1-1,1,1,....);
glReadPixels(x,height()-y-1-1,1,1 ,.....);
etc...
glReadPixels(x, height()-y, 1, 1,.....);
etc...
les 8 pixels autour + le central donc....
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 17 mars 2005 à 13:48
Je sais pas trop, mais au fait c'est quoi qui doit tourner autour du point ? la camera ou l'objet ? , je pense que c'est l'objet alors il faut que tu le dessine apres la rotation et avant le dernier/deuxieme glTranslatef non ?
KeniiyK.
TIENS BON ON VA Y ARRIVER !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 17 mars 2005 à 14:04
La rotation s'applique a la camera alors ? ben alors fais une classe camera et entretien la avec un repere local a elle meme et puis tu fais tes transformations s'pas ?