#1 

25-04-2008 13:12:19

littleben
Membres
Date d'inscription:
Messages: 97
IP: 88.139.196.150
Courriel

Bonjour.

Je suis en train de créer un simulateur de vol pour un drone.
Pour rendre le vol réel, je souhaite savoir comment faire pour établir une échelle au niveau des distances, du temps et de la vitesse, de telle sorte que lors du vol le drone parcours la bonne distance pour un temps donné et une vitesse donnée, ou qu'il se déplace à la bonne vitesse pour une distance donnée et un temps donné, etc........ En fait je veux que ce soit le plus réaliste possible.

Merci pour vos lumières.


Hors ligne


#2 

26-04-2008 21:40:59

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.38.100.79
Courriel  Site web

Il te faut modéliser sur une échelle de base, une unité de ton modeleur = 1 mètre sous irrlicht par exemple.
Ensuite il te faut effectuer un calcul du temp écoulé entre chaque boucle (TimeElapsed), et t'en servir de coef de déplacement pour tes objets mobile.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#3 

30-04-2008 08:59:39

littleben
Membres
Date d'inscription:
Messages: 97
IP: 88.139.196.150
Courriel

Est-ce que vous ne connaitriez pas des exemples tout faits par hasard ? Pourriez vous également m'indiquer des sites de référence et de qualité traitant du sujet ? Merci.


Hors ligne


#4 

30-04-2008 15:32:38

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.38.102.228
Courriel  Site web

Attention, cette méthode comportant des variables statique, il ne faut l'appeler qu'une seule fois !

f32 IrrTimeElapsed(IrrlichtDevice* device)
{
	static u32 LastCycle,LoopTime;
	f32 Result=0.0f;
	LastCycle = device->getTimer()->getRealTime() - LoopTime;
	LoopTime = device->getTimer()->getRealTime();
	Result = (LastCycle/1000.0f);
	if (Result > 1.0f){Result=1.0f;}
	if (Result < 0.0f){Result = 0.0f;}
	return Result;
}

dans ta boucle principale tu as un truc du genre :

while(Exit==false)
{
f32 TimeElapsed = IrrTimeElapsed(Mondevice);
//Déplacement de ton objet = MaVitesse * TimeElapsed
}


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#5 

01-05-2008 13:35:00

Aranoth
Membres
Avatar de Aranoth
Date d'inscription:
Messages: 242
IP: 90.55.108.211
Courriel  Site web

Sinon, plus facile : le FPS c'est le ratio x images/ 1 seconde.

Nous on veut savoir le temps utilisé pour afficher une image.... x secondes / 1 image

Allez, petite règle de trois...... 1 / FPS !

Hors ligne


#6 

01-05-2008 18:27:02

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.38.230.32
Courriel  Site web

Une des règles d'or, c'est de ne jamais se baser sur le FPS pour des calculs de mouvement...


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#7 

01-05-2008 21:20:52

Aranoth
Membres
Avatar de Aranoth
Date d'inscription:
Messages: 242
IP: 90.55.60.212
Courriel  Site web

Au nom de quoi ?

Je ne vois pas de raison pratique de ne pas utiliser cette méthode...
Ce que tu fais dans ton code c'est juste recalculer l'inverse du FPS... tu refais un calcul qui a déjà été fait

Hors ligne


#8 

01-05-2008 22:19:33

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.38.230.32
Courriel  Site web

Tout simplement parceque comme sur la pluspart des moteurs 3D irrlicht affiche de l'entier et en convertissant comme tu le préconises, tu perds en précision...Après tu fais comme tu veux, à bon entendeur smile.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#9 

02-05-2008 13:45:49

Aranoth
Membres
Avatar de Aranoth
Date d'inscription:
Messages: 242
IP: 81.250.41.80
Courriel  Site web

La perte de précision ne pose aucun problème pour 99% des cas.
De plus bon nombre de moteurs calculent le FPS en tant qu'entier, dans ce cas elle est carrément nulle.

Je ne sais pas comment procède Irrlicht cependant, et le problème ne se pose même pas pour moi puisque je fais l'inverse ( FPS = 1 / EllapsedTime )

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
117 invités en ligne
membre en ligne: -
RSS Feed