begin process at 2010 02 10 13:20:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

OpenGL

 > 

Bouger la caméra avec la souris (fps)


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

Bouger la caméra avec la souris (fps)

vendredi 20 avril 2007 à 22:01:59 | Bouger la caméra avec la souris (fps)

nisaloncaje

Bonjour, je souhaiterais que, lorsque que je bouge la souris, ma scène en OpenGL tourne de la même manière, comme dans un FPS.

J'ai donc le code suivant dans la fonction main :
  1. glutDisplayFunc(display);
  2. glutKeyboardFunc(keyboard);
  3. glutPassiveMotionFunc(souris_passif);
  4. glutIdleFunc(core);
  5. glutMainLoop();
ma fonction souris_passif étant :
void souris_passif(int x,int y){
float vitesse_souris=0.1f;
 
angle_cam.x+=float(y-Y_ORG)*vitesse_souris;
angle_cam.y+=float(x-X_ORG)*vitesse_souris;
 
// On met les angles dans l'intervalle [0,360]
if(angle_cam.x>=360.0)
angle_cam.x-=360.0;
 
if(angle_cam.y>=360.0)
angle_cam.y-=360.0;
 
if(angle_cam.x<0.0)
angle_cam.x+=360.0;
 
if(angle_cam.y<0.0)
angle_cam.y+=360.0;
 
 
// On repositionne le curseur de la souris
SetCursorPos(X_ORG,Y_ORG);
glutPostRedisplay(); //(J'ai essayé sans, ça ne change rien)
}
Le problème est le suivant : quand je lance mon programme j'ai le droit à un écran sans image
 
Que faire pour résoudre le problème
 
Merci d'avance
 
NC
vendredi 20 avril 2007 à 22:16:23 | Re : Bouger la caméra avec la souris (fps)

goast_tu

Tu es sur que le probleme vien de cette fonction? Il se peut que l'erreur est ailleur


Trafic web gratuit!!!
vendredi 20 avril 2007 à 22:55:21 | Re : Bouger la caméra avec la souris (fps)

nisaloncaje

oui : si je supprime passivemotionfunc (donc l'appel à la fonction), cela fonctionne.
samedi 21 avril 2007 à 10:47:00 | Re : Bouger la caméra avec la souris (fps)

goast_tu

t'as essayé d'enlever completement le corps de cette fonction, juste pour etre sur que c'est pas ton code de rotation qui marche mal?


Trafic web gratuit!!!
samedi 21 avril 2007 à 12:03:26 | Re : Bouger la caméra avec la souris (fps)

neodelphi

Membre Club
Tu utilises gluLookAt ? Que vois-tu exactement si tu retire passiveMotionFunc ? C'est peut-être un problème dans les transformations matricielles ?

neodelphi
samedi 21 avril 2007 à 15:45:39 | Re : Bouger la caméra avec la souris (fps)

nisaloncaje

si je supprime le corps de la fonction, tout est normal.

et j'utilise ceci pour positionner la caméra (à vrai dire je n'ai jamais bien compris la structure de glulookat) :
glLoadIdentity();
  glRotatef(angle_cam.x,1.0,0.0,0.0);
  glRotatef(angle_cam.y,0.0,1.0,0.0);
  glRotatef(angle_cam.z,0.0,0.0,1.0);
  glTranslatef(pos_cam.x,pos_cam.y,pos_cam.z);
  glScalef(1.5,1.5,1.5);
  glPushMatrix();

Mais ce qui est bizarre, c'est que l'écran est vide quand la fonction a le corps. En effet, c'est comme s'il n'y avait jamais dans le programme de demande d'affichage.
mercredi 19 mars 2008 à 11:47:22 | Re : Bouger la caméra avec la souris (fps)

Grizou0

Membre Club

Problème de déplacement avec la caméra:
void camera()
{
    Form1->UpX  = -sin(Form1->latitude)*sin(Form1->longitude);
    Form1->UpY = cos(Form1->latitude);
    Form1->UpZ = -sin(Form1->latitude)*cos(Form1->longitude);

    Form1->OeilX = Form1->Vise*cos(Form1->latitude)*sin(Form1->longitude)+Form1->X;
    Form1->OeilY = Form1->Vise*sin(Form1->latitude)+Form1->Y;
    Form1->OeilZ = Form1->Vise*cos(Form1->latitude)*cos(Form1->longitude)+Form1->Z;
    Form1->UpX  = -sin(Form1->latitude)*sin(Form1->longitude);
    Form1->UpY = cos(Form1->latitude);
    Form1->UpZ = -sin(Form1->latitude)*cos(Form1->longitude);
// Déplacement caméra
    glLoadIdentity();
    gluLookAt(Form1->X,Form1->Y,Form1->Z,
              Form1->OeilX,Form1->OeilY,Form1->OeilZ,
              Form1->UpX,Form1->UpY,Form1->UpZ);
}
 Pour un déplacement par exemple en avance:
void __fastcall TForm1::Avance()
{
    Form1->X+=(Form1->OeilX-Form1->X)/(2*Form1->Vise);
    Form1->Z+=(Form1->OeilZ-Form1->Z)/(2*Form1->Vise);
}



Cette discussion est classée dans : souris, cam, angle, fps, passif


Répondre à ce message

Sujets en rapport avec ce message

souris méchante !!! [ par vdox ] Je voudrais savoir comment faire pour gérer la souris en faisant un programme simple en C .Il me faudrais juste un petit programme que je puisse mettr code d'une souris en Vcpp [ par kinder ] Hi!Je recherche le code pour piloter une souris (ou un autre périphérique à la con pour en faire un "intérrupteur" on/off), branchée sur le port série Changer le curseur de souris... [BCB] :)) [ par CodeNeo ] Hello tout le mondeJe sais que c'est idiot comme question mais bon...J'ai commencer un casse brique en DirectX et j'ai créer un curseur de souris...Co Gestion de la souris OpenGL SANS GLUT [ par Xentor ] Comment faire pour connaitre le déplacement de la souris sans utiliser Glut ? (Savoir si on la déplace en haut, à gauche, etc...) J'ai fait plusieurs piloter une web cam [ par pipo ] qqun sait il si l'on peu detecter facilement les webcams branche au pc comme on detecte les joystick avec directX ?puis les piloter ?manu piloter une web cam [ par pipo ] qqun sait il si l'on peu detecter facilement les webcams branche au pc comme on detecte les joystick avec directX ?puis les piloter ?manu piloter une web cam [ par pipo ] qqun sait il si l'on peu detecter facilement les webcams branche au pc comme on detecte les joystick avec directX ?puis les piloter ?manu piloter une web cam [ par pipo ] qqun sait il si l'on peu detecter facilement les webcams branche au pc comme on detecte les joystick avec directX ?puis les piloter ?manu piloter une web cam [ par pipo ] qqun sait il si l'on peu detecter facilement les webcams branche au pc comme on detecte les joystick avec directX ?puis les piloter ?manu piloter une web cam [ par pipo ] qqun sait il si l'on peu detecter facilement les webcams branche au pc comme on detecte les joystick avec directX ?puis les piloter ?manu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,312 sec (4)

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