InExtremis

Projet de programmation. Librairie 3D - TEMPS REEL - utilisant OpenGL et GLSL écrite avec le langage C++. Cette librairie représente mes études dans le domaine de la 3D temps réel et n'a pas d'autres ambitions pour l'instant. Ce travail est réalisé comme travail de fin d'études pour le département d'algorithmique de l'Université de Liège.

24.2.06

Reflets


Le système permet de définir des reflets statiques (entendre par là qu'ils ne sont pas le reflet d'objets de la scène, mais d'une autre scène statique, via une photographie). Le premier système géré est l'utilisation d'une image particulière qui reprend un peu plus qu'une demi-sphère de reflets, mais avec de sévères déformations comme on peut le constater. Cette image sert de référence comme source de couleur. Quand on doit déterminer quelle couleur prend un pixel d'une surface (et qu'elle est une surface réfléchissante), on calcule le vecteur reflet du vecteur de vision à la surface de l'objet (en considérant en fait la normale locale calculée en chaque point par interpolation). Cette opération a pour effet de définir un nouveau vecteur, ce vecteur est alors transformé en un second vecteur de dimension inférieuse (2D) afin de pouvoir faire correspondre chaque direction de l'espace (en fait quasi un demi-espace) avec un pixel de l'image de référence, et ce de manière cohérente.

Cette méthode fonctionne très bien, mais montre très vite ses limites. En effet, de par le fait que l'image de référence est unique et ne représente qu'un quasi demi-espace, l'espace pouvant être réfléchi est particulier à un angle de vue particulier, et les reflets ne sont donc pas satisfaisants si on se déplace. De plus (mais là c'est un problème avec mon implémentation de cette méthode) j'observe quelques artefects (défauts dans les images produites) assez embêtants.

On utilisera donc cette méthode pour générer des reflets rapidement mais à des endroits où, paradoxalement, on ne les regardera pas trop en détail.

0 commentaires:

Enregistrer un commentaire

Abonnement Publier les commentaires [Atom]

<< Accueil