Historique des modifications - Message

Message #10266

Sujet: Modélisation du système solaire et problèmes de clipping


Type Date Auteur Contenu
Création du message 24-11-2011 16:15:32 Dexter9313
Bonjour à tous ! Je suis nouveau dans le monde d'Irrlicht et j'ai choisis ce moteur pour créer un équivalent libre d'Orbiter pour ceux qui connaissent (http://orbit.medphys.ucl.ac.uk/ pour les autres). Apparemment le créateur de ce programme n'a eu aucun mal à afficher les planètes/vaisseaux et autres bâtiments avec Direct3D, bien que je sois convaincu qu'il utilise quelques astuces.

Ayant programmé ma classe qui me permet de gérer les caractéristiques physiques des planètes, j'ai décidé de faire un petit test en graphique.
Prévoyant à l'avance que la farValue serait un obstacle pour afficher les distances réelles quand celles-ci sont très grandes, je place les planètes à une distance fixe de la caméra à partir d'une certaine distance par rapport à la planète en utilisant scale() pour réduire sa taille avec la distance, pour avoir un diamètre apparent réaliste (angle de vue sous lequel on voit un corps céleste). C'est fluide et on a vraiment l'impression de s'en éloigner alors qu'elle ne bouge pas.

Cette technique fonctionne terriblement bien pour afficher des objets très lointains, par contre, pour ce qui est des distances proches, je bloque...

J'ai vu qu'un autre membre avait aussi eu ce problème, cependant vous lui aviez conseillé de revoir ses échelles il me semble. Cependant, pour mon cas, je dois conserver les échelles puisque le programme se veut réaliste à ce niveau-là, ou alors il faut trouver une technique de contournement des contraintes techniques du moteur, comme je l'ai fait pour les grandes distances.
Quand je suis très proche d'une planète, en s'approchant donc de la nearValue (et quand celle-ci est inférieure à 1, c'est de toute manière le bordel quelle que soit la distance, donc je l'ai laissée à 5), les mouvements de caméra font "vibrer" désagréablement la planète, la rendant à nouveau fixe quand la caméra ne bouge plus. J'ai pris pour échelle 1 unité graphique = 100km. À 600km et au-delà de la planète ça va donc très bien, cependant, dans Orbiter, on est censé pouvoir se poser sur la planète !

Mes questions sont donc :
  • Peux-t-on améliorer le rendu avec des objets très grands (environ 60 unités graphiques de rayon pour la terre) et des nearValue très petites (pour pouvoir me poser sur la Terre et voir mon vaisseau à au moins un mètre il me faudrait donc une nearValue d'environ 0.00001, je doute que le moteur supporte ça...), comme changer la matrice de projection par exemple, ou reprogrammer une caméra soit-même ?
  • Si non, quelle serait la technique de redimensionnement de la planète à une distance inférieur à 600km de sa surface (peut-être mettre autre chose qu'une sphère, comme un arc de sphere simplement, ou autre chose qui donnerait l'illusion d'optique) de manière à garder une nearValue environ à 5, pour laquelle ça marche à peu près bien ?


Je pense bien que la solution sera l'illusion mais j'espère trouver une fonctionalité du moteur qui pourrait me simplifier la vie à ce niveau-là.
Bonne soirée et merci d'avance !

Retour

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
151 invités en ligne
membre en ligne: -
RSS Feed