Page 1 of 1

[RESOLU] Planète cheloux dans le planetarium

Posted: 11 Jun 2005, 23:28
by NeoET
C'est quand je suis en mode planetarium et que je verrouille disons Jupiter et ben si je lance l'animation, donc le temps normal, la planète n'apparait plus ronde on dirait qu'on lui a bouffé ses contours avec une sci sauteuse :lol: .
Petre ça vient de mon pc ? :?:

Posted: 12 Jun 2005, 05:11
by Franck
En fait, ce problème d’affichage ne correspond pas à un bug… Pour dessiner le système solaire sur l’écran de l’ordinateur, il ne suffit pas de placer les objets 3D dans un repère orthonormé en respectant les positions. Ca ne marche malheureusement pas aussi simplement que cela.
Directx impose bien des contraintes.
Tout d’abord, la carte vidéo n’est capable de tracer que des objets situés dans un intervalle de distance (par rapport à la caméra). Si l’objet est trop proche de la caméra, une partie ou la totalité de l’objet disparaît. De la même façon, si l’objet est trop loin, là encore il disparaît totalement (et même si son diamètre apparent est important !)…
Comment expliquer cela ? Pour placer les points définissant les objets dans le champ de l’écran, il y a un grand nombre de calculs trigonométriques à effectuer. L’emploi de matrices permet de réduire le nombre de calculs nécessaires mais cela demeure une tâche lourde pour le processeur central. Aussi, la carte vidéo vient le seconder (les cartes vidéos sont des championnes du calcul matriciel) dans les calculs de projection.
Pour réduire le coût des circuits, les constructeurs ont cependant décidé qu’elles réaliseraient ces calculs en simple précision et c’est là que ce situe le problème.
Si ce choix ne pose aucun problème dans un jeu (le monde virtuel défini a une taille relativement limité), c’est bien différent pour un logiciel d’astronomie.

Et oui, les ordinateurs calculent faux ! C’est la triste vérité ! et tout particulièrement les cartes vidéos qui ne connaissent que la simple précision !

(Un exemple. Si je prends un nombre réel assez grand sur un ordinateur (par exemple 1555554444454545422354545.0) et que je lui additionne un million, un milliard, 100 milliards de fois la valeur 0.00000000001, et bien il sera toujours égal à sa valeur de départ, c'est-à-dire 1555554444454545422354545.0 !!!! Cela vient de la façon dont sont codés les nombres réels dans nos machines. La vitesse impose d’ignorer dans le codage certaines décimales peu significatives)

Donc, il faut toujours maintenir les objets dans un certain intervalle de distance par rapport à la caméra pour éviter les erreurs de calculs et pour qu’ils (les objets) restent visibles. Il faut alors jouer sur leurs dimensions pour conserver les diamètres apparents coûte que coûte…

Ainsi, lorsqu’on se rapproche de Hubble, on doit se rapprocher d’un objet tout petit (20 mètres) situé à proximité d’un objet immense (la terre). La carte graphique devient folle. La différence de taille des objets est telle que des approximations apparaissent dans les calculs effectués par la carte graphique (c’est l’exemple donné précédemment : je me rapproche d’un mètre par exemple de Hubble qui est situé à 149657875254.0 m du soleil ).
Dans WinStars, pour remédier à cela, Hubble devient de plus en plus grand à mesure que l’on s’approche de lui et cela pour le maintenir dans l’intervalle de visibilité et éviter que des morceaux disparaissent…
Mais rien n’y paraît sur l’écran, tout est fait pour que l’illusion des proportions soit parfaite et que le rendu soit optimal…

Mais lorsque les valeurs des matrices deviennent trop petits ou trop grandes (c’est surtout le cas lorsque l’on réduit le champ de vision – càd que l’on augmente le grossissement – comme vous sur Jupiter) alors il devient impossible de maintenir l’objet dans l’intervalle de visibilité et des parties de la sphère ne sont alors pas dessinées…
Le programme est calibré pour que les cartes modernes ne posent pas ce problème, même avec des grossissements élevés. Mais le problème sera plus visible sur des cartes vidéos anciennes (comme les nVidia TNT/TNT2, les PowerVR etc) qui ont une précisions numériques particulièrement médiocres.
A mesure que le grossissement augmente, la précision dans certaines matrices devient de + en + faible, les approximations s’amplifient mutuellement et la carte n’est alors plus en mesure de tracer tous les polygones d’une sphère, et Jupiter semble tout craquelé …

Franck

Posted: 12 Jun 2005, 12:19
by NeoET
Oui mon pc est tout vieux mais merci de ces supers explications Franck 8)

Posted: 12 Jun 2005, 20:28
by danardf
Moi j'en ai un.

Je clic sur suivi, je lance l'animation ( 1i/5mn) et au bout d'un moment, jupiter disparaît!

pfffouff
A pu

Annnavait, mais annapu :lol:

Posted: 12 Jun 2005, 20:30
by Franck
La planète était peut-être passée sous l'horizon ? (le programme ne suis pas les objets sous l'horizon...)

Franck

Posted: 12 Jun 2005, 20:36
by danardf
Haaaa peut être

Tu as raison, c'est peut être çà.
J'essais de savoir ce que j'ai pris hier soir!
J'avais jupiter et deux lunes. (IO et Europa)
"voir mon site en prmière page"