Dossier de maintenance




Les limites
 

1. Les angles pas toujours respectés

Donnez un angle de rotation au mouvement de la caméra et laissez tourner l'applet... Vous remarquerez que l'orientation de la caméra ne suit pas sa trajectoire : l'angle position varie plus vite que l'angle vitesse. Ce bug traduit un défaut d'orthogonalité de notre monde. On retrouve ce défaut dans la méthode soleilDansLeChampDeVision : la méthode renvoie true encore un peu après que le soleil soit sorti du champ de vision de la caméra, les tests reposant sur un calcul d'angle.

L'une des raisons de ce défaut d'orthogonalité est sans doute l'utilisation d'angles décimaux en radians. Le passage des angles (décimaux) aux pixels (entiers) se fait par les fonctions trigonométriques et un arrondi des décimaux en entiers. C'est probablement en explorant cette piste qu'on pourrait résoudre le problème. Nous n'avons malheureusement pas eu le temps de nous y atteler.
 

2. Une taille de fenêtre limitée

Dans l'état actuel des choses, la taille de la fenêtre d'affichage est plutôt limitée. Il est possible de l'agrandir, mais cela implique d'augmenter le nombre de pixels à calculer proportionnellement à la surface d'affichage, ce qui conduit à réduire considérablement la vitesse de l'animation. On verra dans le paragraphe des améliorations comment rendre la taille de la fenêtre et la résolution de l'image indépendants.
 

3. Le bug "out of memory"

Laissez tourner l'applet un certain temps... votre viewer d'applet devrait vous signaler une erreur de type "Out of Memory". Nous cherchons encore comment résoudre le problème.
 

4. Le bug des fenêtres non carrées

Changez la taille de la fenêtre (paramètres dimX et dimY) et mettez une fenêtre non carrée. Vous verrez apparaître quelques défauts visuels mineurs. Ce bug reste pour l'instant inexpliqué.


--------------------------------- Retour au sommaire de cette page ---------------------------------

Les améliorations
 

1. L'améliorations du rendu

Pour développer notre projet, nous sommes pencher plus particulièrement sur l'optimisation de la rapidité de calcul et l'ajout d'effets additionnels (eau, vague, brouillard, lens flare). Une autre voie aurait pu être exploitée : celle de l'amélioration du rendu des images fixes (lissage des textures par filtrage bilinéaire, interpolation des hauteurs du paysage pour l'anti-aliasage quand on se rapproche trop près du paysage). Nous vous renverrons au projet d'Emmanuel Labbe et David Lemoing pour ces champs d'investigation.
 

2. L'interpolation bilinéaire pour l'affichage du ciel

La technique d'interpolation bilinéaire, on l'a vu dans le dossier de réalisation donne des résultats peu satisfaisants pour l'affichage des montagnes. Cela est justement du aux montagnes : c'est aux sommets et sur les arrêtes des montagnes que la méthode provoque des défaut d'affichage. Par contre sur une surface sans sommet et sans arrêtes (comme un plan par exemple !) la technique donne des résultats tout à fait satisfaisants. Il serait bon de l'implémenter pour l'affichage de notre ciel.
 

3. Des rectangles au lieu des pixels

Jusqu'ici, pour l'affichage, nous prenons comme unité de surface le pixel. Cette unité est de taille fixe ce qui relie la résolution de notre image et la taille de la fenêtre d'affichage directement. Pour rendre la résolution de l'image indépendante de la taille de la fenêtre d'affichage, une solution serait de prendre comme unité de surface des rectangles (classe Rectangle dans Java 1.2) plutôt que des pixels. Chaque rectangle-unité serait rempli d'une couleur unique. La taille des rectangles serait fonction de la résolution voulue et de la taille de la fenêtre affiché à l'écran.

Pour une petite fenêtre et une grande résolution, un rectangle-unité serait à l'écran de la taille d'un pixel. Pour une grande fenêtre et une faible résolution, l'affichage serait plus grossier, mais les calculs gagneraient en rapidité.

--------------------------------- Retour au sommaire de cette page ---------------------------------

Les extensions
 

1. Navigation en temps réel par l'utilisateur

Enfin avant de passer à un projet de simulateur de vol complet (!), l'une des extensions immédiates possibles est d'ajouter un mode de navigation au clavier ou à la souris. En effet, tous les paramètres de mouvement et de position de la caméra nécessaires sont disponibles. La navigation consisterait simplement à modifier les paramètres de vitesse pendant l'exécution du programme.


--------------------------------- Retour au sommaire de cette page ---------------------------------




Auteurs : Benjamin POCHAT et Vincent PRAT(site personnel)