ElapsedTime, Mouvement & Animations !

ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010 - 6 sept. 2005 à 15:21
ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010 - 10 oct. 2005 à 12:50
Salut, j'ai un petit problème qui me semble venir de ma variable ElapsedTime contenant le temps qui s'est écoulé depuis la dernière frame. Enfaite quand je n'utilise pas cette variable pour les animations celles-ci sont fluide mais dépendent du FrameRate, c'est pourquoi je doit utiliser la variable ElapsedTime, pour que les mouvements et animations ne dépendent que du temps. Mon problème c'est que qu'en j'utilise la variable ElapsedTime les mouvements de mon personnage (je fais un First Person Shooter) saccade ou parfoit vont trop vite, de brusques avancé ou des ralentissement, qui ne se passent pas si je ne met pas la variable ElapsedTime. La variable ElapsedTime est calculé grace à la fonction DXUtil_Timer (TIME_GETELAPSEDTIME) fournit avec le DirectX9 App Wizard, je n'utilise pas le App Wizard j'y est juste pris cette fonction qui me parraissait bien pratique pour calculer le temps. Si quelqu'un sait comment faire pour que les mouvements et animations ne saccade plus à cause de ElapsedTime, sa serait simpa de m'en faire pars. Merci d'avance ++

Oxyde

29 réponses

ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010
12 sept. 2005 à 14:28
Arghhh non j'avais fais un message de fou il a pas été pris en compte...
Bon je résume pour le mouvement de la souris c'est bon je me suis débrouillé mais par contre pas de ElapsedTime dans celui-ci juste une variable modifiable dans les paramatres du jeu MouseSensitivity est-ce que sa suffit ?
Sinon j'ai toujours un problème de déplacement clavier sa commence vraiment à me soulé, j'ai changer ma fonction qui calcul le temps pour un timeGetTime() j'ai fai la modif que ma conseillé MoDDiB mais j'ai un petit ramage environ toute les secondes. Je n'arrive pas à comprendre pourquoi je crois que je vais mettre mon code source sur le net !
Si quelqu'un à déja eu des saccades comme sa et qu'il à pu le résoudre n'hésitez pas.

Oxyde
0
ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010
12 sept. 2005 à 14:44
Bon je me tais, le problème est résolu je ne diré pas la solution étant donné que sa ne risque pas d'arriver à quelqu'un d'autre qu'un noob comme moi de plus le problème ne venait pas du code source ... mais d'un programme externe, noooooon ne me tapé paas.
(Merci pour votre aide)

Enfin j'aimerai quand même savoir si la vue souris doit etre reglementé par un ElapsedTime, voici mon code, sachant que MoveMouse contient le déplacement de la souris et que celle-ci est replacé au milieu de l'écran à chaque fois qu'elle en est déplacé :


if( MoveMouse.y != 0 )


{


D3DXMatrixRotationAxis( &matRot, &Right, D3DXToRadian((
float)MoveMouse.y )* MouseSensitivity);


D3DXVec3TransformCoord( &Dir, &Dir, &matRot );


D3DXVec3TransformCoord( &Up, &Up, &matRot );


}



if( MoveMouse.x != 0 )


{


D3DXMatrixRotationAxis( &matRot, &D3DXVECTOR3(0,1,0), D3DXToRadian((
float)MoveMouse.x )* MouseSensitivity );


D3DXVec3TransformCoord( &Dir, &Dir, &matRot );


D3DXVec3TransformCoord( &Up, &Up, &matRot );


}




MoveMouse.x = 0;


MoveMouse.y = 0;

Merci d'avance d'aider le noob de service ;)

Oxyde
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
12 sept. 2005 à 16:38
Ne t'inquiètes pas les erreurs a la c** ça arrive à tout le monde ...
avec Directplay j'ai passé 3 semaine a débugger un temps qui n'était
pas identique sur le server et les client tout ca a cause d'un oublie
d'un break dans une switch qui n'avait rien à voir avec le temps..

Enfin bref essais ca :

D3DXMatrixRotationAxis( &matRot, &D3DXVECTOR3(0,1,0), D3DXToRadian((
float)MoveMouse.x )* MouseSensitivity * time_elapsed * TACONSTANTE );
0
ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010
12 sept. 2005 à 18:02
Enfaite j'ai l'impression que plus je démarre mon programme plus sa ram, je pense que cela provient d'un fuite mémoire non ?

Oxyde
0

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

Posez votre question
cali70 Messages postés 71 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 19 mars 2008
12 sept. 2005 à 19:05
Heu ca me parait bien ce qu'a écrit MoDDiB mais ca serrait pas MouseSensitivity la constante justement ???
0
cali70 Messages postés 71 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 19 mars 2008
12 sept. 2005 à 19:11
Ouais t'as surement oublié de détruire un objet ou de liberer la méoire quelquepart, regardes dans ton gestionnaire des taches si la ram utilisée augmente dans le temps pendant que ton programme tourne...
0
ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010
9 oct. 2005 à 18:52
Bon sa faisait un moment que je n'avais pas prog à cause de cette erreur que j'ai toujours !!!
Maintenant je suis sur à 100% qu'il y a un bug avec (car dès fois pas très visible), enfaite j'ai une variable qui retiens le nombre de frame le plus faible en 1 millisecond et en le multipliant par mille pour que sa donne 1 seconde, sa m'indique que il y a très peu de frame (15 frame par seconde) mais ceci ne dure que quelque millisecondes (plus de 50 en tout cas plusque visible a l'oeil). Je commence vraiment à perdre espoir, c'est jamais arrivé à quelqu'un sa ? Avez-vous une solution ou bien votre propre fonction de calcule de temps, moi j'utilise timeGetTime()
Voila merki ++
Oxyde
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
10 oct. 2005 à 09:57
retiens le nombre de frame le plus faible en 1 millisecond

-> heu je te suis pas la ca veut dire quoi ca ?

_______________________

Omnia vincit labor improbus
0
ionstorm356 Messages postés 38 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 28 juin 2010
10 oct. 2005 à 12:50
Argh c'est vrai que c'est assez chaud à expliquer, bah disont que mon
prog fait 4000 frame par seconde, donc il en fait 4 frames par
milliseconde, et bien souvent il n'en fai pluque 0.020 frame par
milliseconde, le nombre de frame par milliseconde chute beaucoup
pendant quelques millisecondes (environ 100 je pense) et il fait sa
environ toutes les secondes. Un petit ramage est visible a l'oeil nu
environ tt les secondes. Je crois que le problème vient aussi de la
précision du temps et de la vitesse de mon pc. Je crois que j'ai trop
de frame par seconde et qu'il n'y est même pas une milliseconde par
frame, car comme dit précedement avec un fps de 4000 j'ai 4 frame pour
une milliseconde et vu que la précision du timeGetTime() et de la
millisecond alors d'une frame à une autre mon ElapsedTime vaut 1/4 de
milliseconde mais vu que timeGetTime ne calcule pas les microsecondes
je doit avoir quelques fois un ElaspedTime = 0 et c'est surement de sa
que vient le problème. Si vous pensez qu'il y a autre chose ou me
confirmé que le timeGetTime pose problème avec les grands FPS n'hésitez
pas à m'en faire part.

Merci @+


Oxyde
0
Rejoignez-nous