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 : pb avec la gestion de camera ! [ Archives / OpenGL ] (AmK)

jeudi 22 juillet 2004 à 12:36:25 | pb avec la gestion de camera !

AmK

j'ai un petit problème ( voir gros ) avec la gestion de camera sous opengl , mais le pb ne vient pas de la , mon pb est purement c++ , ya qu"a voir les valeurs de positionX et positionY .... qui restent à zero !

voila les sources : http://site.voila.fr/allbrain/sourcesbis.zip

y'aurait t'il un sauveur ?

jeudi 22 juillet 2004 à 16:16:33 | Re : pb avec la gestion de camera !

Chouchou182

Salut

J'ai pas compris l'utilité de la variable Game::rienafoutre.....

Le vrai problème c'est que j'ai pas pu compiler :
LINK : error LNK2001: unresolved external symbol _crtMainStartup
Je ne sais pas d'où ça vient (j'ai jamais rencontré cette erreur avant ...)

Si quelqu'un connais, merci de prévenir.

A++

Chouchou

jeudi 22 juillet 2004 à 16:25:10 | Re : pb avec la gestion de camera !

LordBob

Membre Club
Chouchou182 << bah visiblement a premiere vu, tu as un erreurs parce que tu n'as pas ajouter une librairie a ton projet (librairie qui est necessaire a la compilation) !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."

jeudi 22 juillet 2004 à 21:51:27 | Re : pb avec la gestion de camera !

Chouchou182

Salut

Je me doute bien qu'il manque une librairie mais laquelle ?
Etrangement j'ai pu compiler en mode release (en debug, voir erreur plus haut).

Voyons comment est initialisé lobjet gh_Camera qui semble bugger ; comme ceci :
Camera gh_Camera;

Quel est le constructeur par défaut ?
(0, 0, 0, 0.....0, 0 )

On a donc une caméra positionnée en l'origine qui regarde vers l'origine. La direction et le sens du regard (vecteurDirection - vecteurPosition ) donnent le sens de déplacement de la caméra.

Or un vecteur nul n'a ni direction ni sens, donc pas très utile pour un déplacement.

Ceci est un premier problème ; car la caméra ce déplace désormais (après modification) mais sur l'image, rien ne semble changer (seul l'objet camera donne de bons résultats via les printf...)

Je n'ai malheureusement pas trouvé...

A++

Chouchou

vendredi 23 juillet 2004 à 19:26:10 | Re : pb avec la gestion de camera !

AmK

ben non regarde dans main.h et tu verras que j'ai passé des paramètres au constructeur !
voila sinon j'ai trouvé l'origine du pb , le constructeur de camera était appelé trois fois , comme le montraient les printf ! et donc en virant l'héritage , apparement le constructeur n'est appelé que deux fois !
maintenant j'ai un autre pb avec gluLookAt les valeurs changent mais ...... aucune influence sur la sphere :(

samedi 24 juillet 2004 à 16:49:29 | Re : pb avec la gestion de camera !

AmK

lol en fait c'est evident avant avec l'héritage le constructeur par defaut de camera était appellé via l constructeur de vecteur !
enfin bref , c'était la cause du pb !

lundi 26 juillet 2004 à 13:05:15 | Re : pb avec la gestion de camera !

Chouchou182

Hello

A quoi sert PushMatrix ?
A placer la caméra en l'origine du repère...

Rajoute gh_Camera.placerCamera(); apres le glPushMatrix et ça marche !!

A++

Chouchou

mardi 27 juillet 2004 à 13:17:37 | Re : pb avec la gestion de camera !

AmK

ça ne marche toujours pas :(
bref je suis obligé de passer les varPos dans le glTranslate !

vendredi 30 juillet 2004 à 03:05:16 | Re : pb avec la gestion de camera !

xarier

salut
Amk-->He cher ami je v voir ca demain est posé une sources
de la gestion de camera complete avec opengl :D

aller @+
Life is Short

vendredi 30 juillet 2004 à 10:42:40 | Re : pb avec la gestion de camera !

Chouchou182

Salut

J'ai effectivement écrit une grosse bétise. glPushMatrix() ne modifie pas la matrice active.

Pourtant les modifications que j'ai apportées, à savoir le constructeur par défaut et un nouvel appel à gluLookAt() ont fait marcher l'application. C'est pourquoi j'ai voulu expliquer le pourquoi de la réussite.

Or mon explication était erronée mais mes modifications fonctionnaient (et je ne sais toujours pas pourquoi).

Personnellement je n'utilise pas gluLookAt() mais une composition de translations et rotations (ce qui revient au final au même) mais ainsi je sais quelles transformations j'applique à ma scène.

J'ai vu ta correction et je pense que tes calculs pour récupérer Z et faire une translation supplémentaire ne doivent pas être. Imagine quand ta caméra bougera dans les trois coordonnées de l'espace.

Une petite amélioration : remplace
if(scaled==0)
scaled=1;
else if(scaled==1)
scaled=0;

par :
scaled = 1 - scaled ;

Un petit exemple en C aui gère une caméra

#include <GL/glut.h>
#include <stdio.h>
#pragma comment (lib, "opengl32")
#pragma comment (lib, "glut32")

struct Camera
{
float x, y, z ;
} camera ;

static float spin = 0.0f ;

void ComputeCamera()
{
glTranslatef(camera.x, camera.y, camera.z) ;
}

void display(void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity() ;
ComputeCamera() ;
glRotatef(spin, 0.0f, 1.0f, 0.0f) ;
glutWireSphere(1.0f, 20, 16) ;
glFlush ();
}

void init (void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glEnable(GL_DEPTH_TEST) ;
glColor3f(1.0f, 0.0f, 0.0f) ;
camera.x = 0.0f ;
camera.y = 0.0f ;
camera.z = -10.0f ;
}

void Reshape(int w, int h)
{
glViewport(0, 0, w, h) ;
glMatrixMode(GL_PROJECTION) ;
glLoadIdentity() ;
glFrustum(-1.0f, 1.0f, -1.0f, 1.0f, 1.0f, 10.0f) ;
glMatrixMode(GL_MODELVIEW) ;
}

void keybord(unsigned char key, int i, int j )
{
switch ( key )
{
case 27:
exit(0) ;
break ;
case 'R':
case 'r':
spin+=10.0f ;
break ;
case 'x':
camera.x += 1.0f ;
break ;
case 'X':
camera.x -= 1.0f ;
break ;
case 'y':
camera.y += 1.0f ;
break ;
case 'Y':
camera.y -= 1.0f ;
break ;
case 'z':
camera.z += 1.0f ;
break ;
case 'Z':
camera.z -= 1.0f ;
break ;
}
printf("x : %3.1f, y : %3.1f, z : %3.1f\n", camera.x, camera.y, camera.z) ;
glutPostRedisplay() ;
}

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (250, 250);
glutInitWindowPosition (100, 100);
glutCreateWindow ("hello");
init ();
glutDisplayFunc(display);
glutReshapeFunc(Reshape) ;
glutKeyboardFunc(keybord) ;
glutMainLoop();
return 0;
}


1 2

Cette discussion est classé dans : pb, gestion, camera, voir


Répondre à ce message

Sujets en rapport avec ce message

gestion camera [ par chucky_666 ] Voila mon pb :je modelise un terrain 3D et g fixe une camera au dessus avec gluLookAt().Je me sert de la souris pour effectuer des rotation de la came qui peut m'aider a resoudre un pb sur la gestion des pipes [ par vitocor ] voici le sujetecrire un prog en C qui simule la commande ls-l/wc-l à l'aide de 2 processus.merci pour votre aidebye Pb de gestion de nom des joueur [ par sebclick ] Slt,je debute en c++....je suis en train de créer un petit jeu de pendu....pour vous quel est la meilleure façon pour récuperer le nom des joueurs, sa pb de gestion de browser pour selectionner un chemin [ par bebel6 ] Re Bonjour, g encore un tit truc à demander, désolé je suis pas fort aujourd'hui ( prkoi je dis aujourd'hui ??? lol )je cherche simplement à ouvrir un pb de camera [ par mauvaisdawa ] je suis sur un projet de simulation d'helicoptère. j'ai un probleme concernant mes caméras. celle du dessus, ya aucun probleme, mais celle de derrière Gestion des collisions [ par DarklordBioopo ] Bonjour, Je voudrais savoir comment faire pour avoir une gestion des collisions avec des boites englobantes.Pour le moment mon jeu ne gere les collisi pb de config de VC++ 6 pour des fichiers unicodes [ par BionicSniper194 ] Salut a tous,un pot m'a recement passer un de ses code, et j'ai voulu l'utiliser mais au moment de la compilation j'ai un message du type :"XXXXXX.h   pb avec glReadPixels pas de capture [ par breton51 ] bonjourje debute e c++ et j'ai un petit pb pour faire une capture d'ecran j'utilise glReadPixels qui est sencer me retourner le tableau de pixel "data pb frame ( wxWidet) [ par kyript ] Bonjour a tousj'ai donc un gros  soucisexplication:Lors du lancement du programme, je lit dans un fichier .txt et j'insere le text "IP, Port"  dans 2


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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