Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Bouger la caméra avec la souris (fps) [ Linux / OpenGL ] (nisaloncaje)

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é 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...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.