Rotation et origine

goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008 - 20 nov. 2004 à 22:22
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 - 24 nov. 2004 à 18:14
Salut,

Salut,
Je veut faire une fonction réseau sur mon jeu, donc il faut que je représente les persos ennemies.

Pour cela, je prends les coordonnés et jusque là tout va bien.
Mais il faut aussi je tienne compte de leur direction de vision, et pour celà je fait comme ça :

double aX=g_Camera.m_vView.x-g_Camera.m_vPosition.x; 
   double aZ=g_Camera.m_vView.z-g_Camera.m_vPosition.z; 
   double angle = atan(aZ/aX); 
   int angle2=(180*angle)/PI; 
    
   glPushMatrix(); 
   glRotatef(angle2,0,1,0); 

   Z=strtol(ClientZ,NULL,0); 
   X=strtol(ClientX,NULL,0); 

//je fais un test avec un carré pour l'instant 
   glBegin(GL_QUADS);    
   glTexCoord2i(0, 1);   glVertex3f(X-10, 1,Z); 
   glTexCoord2i(0, 0);   glVertex3f(X-10, 8,Z); 
   glTexCoord2i(1, 0);   glVertex3f(X+10, 8,Z); 
   glTexCoord2i(1, 1);   glVertex3f(X+10, 1,Z); 
   glEnd(); 
    
   glPopMatrix(); 


Donc voila, ça marche bien, mais le problème c'est que la rotation se fait par rapport à l'origine du repère(donc ici 0) mais si mon perso ennemie est pas en 0, ça ne va plus du tout !!!

Comment faire pour changer les origines du repères SVP ???

10 réponses

Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
21 nov. 2004 à 16:40
une fonction réseau!!!!
nan mais goutbouyo faut pas avoir les yeux plus gros que la tete si j'ose dire.

bon dee toute facon pour les rotations, il faut d'abord que tu translates ton perso en 0,0,0, puis que tu fasses ta rotation, puis que tu le refoutes a sa pos d'origine.

je ne comprend pas bien ce que ton code fait, ni le sens général de tout ce qui ce trouve avant le bout de code.

ou alors, si j'ai bien compris, ce n'est pas sur, mets ton rotate apres le translate.
0
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
21 nov. 2004 à 17:17
LOL !!!
Je fais juste une petite fonction pour réseau local ...
Je compte pas faire un counter strike !!!

En fait c'est bon j'ai réussi, en effet il fallait le replacer en 0 avant de faire la rotation.

Pour l'instant le réseau marche pas mal sauf que j'ai un décalage d'une seconde entre les 2 ordis ...
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
21 nov. 2004 à 17:59
ha oui ca c'est embetant ;)

mais qd meme ton trtuc m'embete.
Tu devrais faire ca:
glRotatef(perso.angle,0,1,0);
pour choisir sa direction;
glTranslatef(perso.pos.x,perso.pos.y,perso.pos.z);
pour sa position
et puis dessiner le perso en (0,0,0).
sinon tu vas pas t'en sortir, peut etrre que ca parche avec uun carré mais avec un md2 tu va galérer je pense.
0
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
21 nov. 2004 à 18:35
Oui t'as raison.
Mais en fait depusi j'ai fait des modifs et ça donne ça :

glTranslatef(X,10,Z);
glRotatef(anglef,0,1,0);

Pour l'instant je gère qu'un perso ennemie donc ça va ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
21 nov. 2004 à 18:37
Au fait, maintenant y a plus de décalage, et j'ai mis un MD2.
Pas de problème, mais va falloir que je gère les animations maintenant ...
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
21 nov. 2004 à 20:26
mais ca n'était pas déja fait tout ca?
0
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
21 nov. 2004 à 23:17
Qu'est ce qui était déjà fais ???

T'aurais pas une idée pour les animations de MD2 ???

En fait si le perso ennemi bouge je le fais courrir et s'il bouge pas je le rend immobile.

J'ai essayer d'enregistrer à chaque affichage la valeur X et Z du l'ennemie dans XOld et ZOld, ensuite si XOld=X alors ça veut idre qu'il bouge pas, donc je met l'anim immobile.

Le problème c'est que ça marche pas ...
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
23 nov. 2004 à 20:06
Aie!
"si XOld=X alors ça veut idre qu'il bouge pas, donc je met l'anim immobile."
ben non!
tes persos décrivent un carré, donc sur 2 des 4 cotés il Xold==X. il faut faire if(Xold!=X || Yold!=Y) Moveperso();
0
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
24 nov. 2004 à 15:20
EN fait j'ai réussi.
Mais comme j'envois les donnée sur le réseau, et que je les envoie pas à chaque frame il fallait mettre un petit écart pour que ça marche.
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
24 nov. 2004 à 18:14
ohoh! une petite interpolation linéaire hein? a quand l'interpolation quadratique? :D
0
Rejoignez-nous