#0 

25-04-2008 15:12:19

littleben
Membre
Date d'inscription: 14-04-2008
Messages: 97

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


#1 

26-04-2008 23:40:59

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
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


#2 

30-04-2008 10:59:39

littleben
Membre
Date d'inscription: 14-04-2008
Messages: 97

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


#3 

30-04-2008 17:32:38

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

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

Code:

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


#4 

01-05-2008 15:35:00

Aranoth
Abonné
Lieu: Toulouse
Date d'inscription: 25-09-2006
Messages: 242
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


#5 

01-05-2008 20:27:02

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
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


#6 

01-05-2008 23:20:52

Aranoth
Abonné
Lieu: Toulouse
Date d'inscription: 25-09-2006
Messages: 242
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


#7 

02-05-2008 00:19:33

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
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


#8 

02-05-2008 15:45:49

Aranoth
Abonné
Lieu: Toulouse
Date d'inscription: 25-09-2006
Messages: 242
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é
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
85 invités en ligne
Aucun membre connecté
RSS Feed