begin process at 2012 05 29 07:18:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

Glut (Moteur 3D) : Pb de déplacements


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Glut (Moteur 3D) : Pb de déplacements

dimanche 23 janvier 2005 à 16:19:47 | Glut (Moteur 3D) : Pb de déplacements

billwatterson

Bonjour,

* Je réalise actuellement un labyrinthe en 3D sous Glut dans lequel on doit se déplacer.
J'ai eu beau regarder les différentes sources sur ce sujet, je n'ai toujours pas compris le principe des déplacements.

* Les déplacements sont : soit j'avance/recule soit je tourne soit les deux.

* Pour cela j'utilise la fonction gluLookAt en sachant que la hauteur (axe Z) ne varie pas
(z = 0.5).
d'où : gluLookAt(posCamX,posCamY,0.5,ptVueX,ptVueY,0.5,0,0,1.0);

* pour avancer : 
pas=0.05;
posCamX = posCamX + pas*(ptVueX-posCamX);
posCamY = posCamY + pas*(ptVueY-posCamY);
ptVueX = ptVueX + pas*(ptVueX-posCamX);
ptVueY = ptVueY + pas*(ptVueY-posCamY); 
=> équivaut à une translation de la position et du point de vue en gardant la même distance entre les 2 points

* pour reculer : idem avec - au lieu du +

* pour tourner :

angle=PI/50; 
ptVueX = posCamX + (ptVueX-posCamX)*cos(angle) - (ptVueY-posCamY)*sin(angle);
ptVueY = posCamY + (ptVueX-posCamX)*sin(angle) + (ptVueY-posCamY)*cos(angle);
=> équivaut à une rotation de centre posCam

En avançant/reculant, ça marche mais au bout d'un moment, c'est comme si le pas de déplacement diminuait...(peu importe sa valeur)

Et pour la rotation, ça marche un peu comme ça veut...

Je sais que tout ça c'est des maths mais les maths et moi ça fait 4...
Si vous avez ne serait-ce qu'une ombre d'explication n'hésitez pas!!

Merci d'avance!!
dimanche 23 janvier 2005 à 20:53:24 | Re : Glut (Moteur 3D) : Pb de déplacements

Funto66

Bon je viens de te faire un mini-prog d'exemple avec GLUT téléchargeable ici :
http://funto.hollosite.com/main.cpp
http://funto.hollosite.com/Deplacements.exe

Le principe est simple (du moment que tu te fais un petit dessin et que tu connais le cercle trigonométrique ;)) : ça se résume en ces quelques lignes :

gluLookAt(pos_x, 2.0, pos_z,
              pos_x + cos(angle), 1.50, pos_z + sin(angle),
              0.0, 1.0, 0.0);

switch(key)
    {
    case GLUT_KEY_UP:
        pos_x += cos(angle)*0.1;
        pos_z += sin(angle)*0.1;
        break;
    case GLUT_KEY_DOWN:
        pos_x -= cos(angle)*0.1;
        pos_z -= sin(angle)*0.1;
        break;
    case GLUT_KEY_LEFT:
        angle -= 0.2;
        break;
    case GLUT_KEY_RIGHT:
        angle += 0.2;
        break;
    }

Déjà une première précision, j'utilise l'axe Y comme pointant vers le haut, donc tout se fait selon le plan (x, z). le point (pos_x, pos_z) correspond à la position de la caméra, la variable angle à l'angle de rotation de la caméra.
Lors d'un appui sur la touche fléche avant/arrière, on translate le point (pos_x, pos_z) selon un vecteur égal à 0.1*(cos(angle), sin(angle)), autrement dit selon un vecteur avec une norme petite et qui est colinéaire au vecteur qui va de la position de la caméra au point visé par la caméra.
Celui-ci se trouve logiquement en (pos_x + cos(angle), pos_z + sin(angle)) (fais un dessin si tu ne vois pas pourquoi).

J'espère avoir été clair ;)

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
dimanche 23 janvier 2005 à 22:07:30 | Re : Glut (Moteur 3D) : Pb de déplacements

billwatterson

C'est parfait, ça marche nickel !!

Un grand merci à Funto66

Mais autant compliquer la tâche :

Comment faire pour avancer et tourner en même temps ??
 Comment faire pour tourner avec la souris ??

Merci d'avance !!
mardi 25 janvier 2005 à 22:35:49 | Re : Glut (Moteur 3D) : Pb de déplacements

Funto66

Pour avancer et tourner en même temps, avec le clavier, ben il faudrait que tu puisses répondre à tous les évènements qd ils se produisent...
Bref je ne sais pas si c'est possible avec GLUT :(

Pour ce qui est de la souris, faut que tu fasses le déplacement en fonction d'une différence entre un point d'origine O où se trouve la souris et sa position actuelle...
Bref, essaie un peu par toi-même ;)

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/


Cette discussion est classée dans : angle, poscamx, poscamy, ptvuex, ptvuey


Répondre à ce message

Sujets en rapport avec ce message

une ScrollBar Circulaire... [ par Daroylan ] Bonjour a tous,Tout d'abord, je vous previens, je ne suis pas developpeur mais peut-etre un jour le deviendrais-je.....Quoiqu'il en soit, pour une ide Traver UNE SEULE ligne ! [ par Galmiza ] Salut,j'en ai marre, j'arrive pas a afficher plusieures lignes qui NE se touchent PAS bout a bout.Voici une partie du code qui se trouve dans une bouc Agnle à partir de deux droite [ par PunkDude424 ] Salut, je voudrais trouver l'angle entre deux droite et je ne sais pas comment faire, j'ai deux droite non parrallele (elle ne se touche pas) et je vo Sérialisation d'objet [ par agora_13 ] Bonjour,Je n'arrive pas à sérialiser les objets de ma classe icone dont voici le constructeur :CIcone CIcone::operator = (const CIcone& icone ){ m_ang Pb de raffraichissement avec glut [ par Dnasty7777 ] Salut a tous.J'ai créé une fenetre classique avec glut, j'arrive a afficher un cube, par contre j'ai un problème lorsque j'effectue une rotation glRot espace openGL [ par sebrs1 ] j'ai une petite question, voila je debute en openGL, mais je voudrais avoir un pti renseignement, est-ce que dans openGL, chaque axe de l'espace ne de Trouver un angle entre la droite formée par 2 pts et l'abscisse [ par feanor11 ] En partant de deux points (A(xa, ya) ; B(xb,yb)), j'aimerai que mon programme trouve, en fonction des coordonnées, l'angle orienté entre l'axe (Ox) (l TEXTURE SUR UNE SPHERE TOURNANTE [ par Batman60 ] bonsoirj'ai un problème de texture sur une spherela texture ne  tourne pas et ne prend pas la forme de la sphere ,mais la sphere tournevoic Petite question sur la "rotation" [ par albert0 ] Bonjour, Voila, j'ai codé un petit algo qui effectue la rotation d'un angle donné. Dison que j'ai une image de 256x256 pixels si je fait la rot Rose des vents [ par Kirikq ] Bonjour,Pour complêter mon logiciel de pilotage d'avion radio commandée (GDI windows & C), j'aimerai ajouter une rose des vents graphique pour que ce


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales