[3D] Cherche differents algos de flitrage

Cherche differents algos de flitrage [3D] - Algo - Programmation

Marsh Posté le 19-11-2002 à 14:34:46    

Salut a tous, voila je cherche des sites, des tutoriaux, ou n'importe quelle doc en general sur les differents types de filtrage de texture ( bilineaire, trilineaire, anisotropique), ainsi que de la doc sur les anti-aliasing.
 
SVP pas de "va voire sur google" parce que je n'y trouve que des vagues explications a la prof de physique de 4e  :pfff: .

Reply

Marsh Posté le 19-11-2002 à 14:34:46   

Reply

Marsh Posté le 19-11-2002 à 14:55:30    

jusqu'au trilinéaire, tu trouveras de la bonne doc.
par contre effectivement pour l'anisotropic et l'anti-aliasing, je n'est pas vu de doc limpide.
 
quel est ton niveau en prog 3D (je veux dire indépendant d'une carte 3D), t'es-tu déjà fait une routine de triangle ?
 
sinon pour les filtrages c'est plus simple à expliquer par dessin, que par équation....

Reply

Marsh Posté le 19-11-2002 à 15:04:41    

G un ptit peu fait le bourrin un programmant un ptit moteur affichant des triangle plein en nivo de gris le tout en asm 68K pour TI92+, mais la je veux surtout des algo pour mon TIPE.
 
Quand tu dit "tu trouveras de la bonne doc" t'aurais pas des liens stp ?

Reply

Marsh Posté le 19-11-2002 à 16:16:50    

ton niveau de gris tu le faisait en fonction d'un coefficient que tu interpolais le long du triangle, le triangle était en dégradé, ou il était de couleur unie ?

Reply

Marsh Posté le 19-11-2002 à 16:21:27    

http://www.math.mcgill.ca/~loisel/
 
va voir Zed3d, y'a un .DOC dans le zip qui contient pas mal d'infos.

Reply

Marsh Posté le 19-11-2002 à 18:43:38    

Les face etaient en gris uniforme (4 nivo gris Roxxxx). Le nivaux de gris etait proportionnel au produit scalaire de la normale et de l'unique source (directionnelle).
Je te remerci pour le lien je V voire ca tout de suite .

Reply

Marsh Posté le 19-11-2002 à 20:12:20    

oki du lambert de chez lambert :D

Reply

Marsh Posté le 19-11-2002 à 20:32:58    

mwai enfin fo bien comprendre qu'avec un 68000 à 10MHz et un ecran 240x128 capable d'afficher 4 nivo de gris, c un peu limité pour faire de la vraie 3D. Le but CT surtout de comprendre le fonctionnement d'un moteur 3D temps réel.

Reply

Marsh Posté le 19-11-2002 à 20:40:50    

ha mé tout à fait...   :jap:  

Reply

Marsh Posté le 19-11-2002 à 21:14:29    

ben t'appelles quoi pas detaille ?
 
filtrage lineaire = tu prends deux samples (couleur ou quoi que ce soit pourvu que ce soit numerique), tu fais une interpolation lineaire (c = ta + (1-t)b) entre les deux. Voila.
 
filtrage bilineaire = tu prends quatre samples, tu fais deux interpolations lineaires suivant un jeu de deux coordonnees u et v (ramenees a l'ecran et interpolees en tenant compte de la perspective): e = v(ua+(1-u)b) + (1-v)(uc+(1-u)d)
 
filtrage trilineaire =  tu prends huit samples, tu fais trois interpolations lineaires suivant un jeu de trois coordonnees u, v et w (pareil attention a la perspective), je te detaille pas la formule (cf linaire et bilinaire).
 
filtrage anisotropique: lorsque tu fais le filtrage trilineaire en general tu interpoles entre deux niveaux de mipmaps differents (tu pourrais aussi faire du filtrage quadrilineaire entre deux niveaux de mipmaps d'une texture 3D). La facon dont tu choisis ces niveaux de mipmaps est un compromis entre le flou et la precision (le fameux mipmap bias que tu peux selectionner dans tes drivers). Ce compromis est optimale en cas d'aspect 1x1 pour ta texture (1 texel sur 1 texel dans les deux directions est egal au meme nombre de pixels dans les deux directions sur ton ecran) tout simplement parce que en calculant tes mipmaps tu ne fais pas varier l'aspect de ta texture.  
Par contre des que tu as un aspect different (observation de biais ou textures coordinates non isotropiques), tu es oblige de choisir entre le flou et les interferences (soit la peste et le cholera de l'affichage graphique).
Le probleme c'est que le mipmap classique est adapte a un mipmaping isotropique (qui ne change pas l'aspect de ta texture). il faut donc deux solutions: un mipmap adaptatif (decrit dans un papier sur la page de SGI) qui ferait varier l'aspect en plus de la taille des textures. Seul probleme, le hardware ne supporte pas ce genre de mipmapping et donc il fallait selectionner l'aspect lors de l'envoi de la geometrie a la carte. ce qui le limitait a un petit nombre de surfaces dans la scene (le sol dans un simulateur de vol).
Une autre solution est de prendre beaucoup plus de samples que lors d'un filtrage trilineaire classique (jusqu'a un rapport 1 sur 8), et de calculer la valeur du texel envoye a l'ecran en fonction du rapport texels/pixels. En fait ca correspond a peu pres a calculer les mipmaps adaptatifs sur la carte et par pixel et ca ne peut se faire que de facon hardware. (la qualite de l'affichage depend de la formule utilisee pour calculer la valeur du texel en fonction des 8 samples utilises et de l'emplacement des 8 samples sur la texture). Au maximum on passe donc de 8 samples par pixels a 64 samples par pixels.  
 
Pour l'antialising, il y a aussi plusieurs methodes disponibles.
La plus simples mais aussi couteuse, est le supersampling.
Qui consiste a rendre dans une destination 2fois, 3fois ou 4 fois plus grande que le buffer d'affichage reel. Puis d'appliquer une formule de filtrage (tu veux que je rentre dans les details ?) pour obtenir une image "subsamplee" soit echantillonee a une resolution moindre.
L'inconveniant de cette methode c'est qu'elle applique du supersampling meme aux endroits ou ce n'est pas forcement necessaire et qui couvrent une bonne partie de l'ecran: pour supprimer l'aliasing et le flou sur la texture on applique des traitements qui font lire jusqu'a 64 samples de texture pour un pixel, et si derriere on fait du supersampling x4, ben ca fait au final 256 lectures de texture pour un pixel final et un resultat qui ne sera pas meilleur!
Les seuls endroits ou l'aliasing pose probleme c'est au bord des polygones ou pour les polygones petits par rapport a l'ecran. Pour les polygones petits a l'ecran le supersampling apporte un mieux mais ne fait que repousser le probleme. Pour les bords des polygones le supersampling apporte un mieux mais a quel cout!
C'est pour ca que certains hardware implementent le edge antialiasing qui consiste a rendre flou les bords des polygones pour limiter l'effet d'escalier.
Le Parhelia lui propose un adaptative supersampling, qui n'effectue le supersampling que sur les bords des polygones.
 
Enfin bref c'est un vaste domaine le graphisme,
si tu veux en apprendre un peu plus sur les algorithmes qui pour certains existent depuis des annees ou des decennies, tu peux consulter les bouquins "graphic gems", il y en a toute une serie.
 
LeGreg

Reply

Marsh Posté le 19-11-2002 à 21:14:29   

Reply

Marsh Posté le 19-11-2002 à 21:37:09    

:jap: Je te remerci LeGreg pour toutes ces explications qui me sont d'un grand secour, bien que j'ai legerement decroché pour le trilinéaire (ou trouves tu une 3e coordonnée sur la texture ?)
Sinon pourrais-tu me donner plus de renseignement sur ce livre dont tu me parle (reference exactes)?
Et encore merci de me consacrer de ton précieux temps.  :jap:

Reply

Marsh Posté le 20-11-2002 à 00:36:00    

pour le trilinéaire, le long de ton triangle, tu as donc déjà à la base les coordonnées u,v de ta texture.
 
donc en gros:
 
en fait par pixel, tu calcules un coefficient on va dire 'm' qui évolues en fonction de la profondeur interpolée (y'a des logs dans le bordel). m étant flottant, la valeur arrondie par défaut te donne le numéro de mipmap à utiliser comme mipmap de base, puis la partie fractionnaire te "donne" la proportion de mélange vers le mipmap de rang suivant et donc plus flou.
 
la troisième coordoonée qui te donne le(s) "mipmap(s)" à utiliser est donc liée à la profondeur.
 
----
 
d'ailleurs en fait, pour la correction de perspective, on interpole toutes les grandeurs/z, puis pour obtenir la grandeur correspondante pour chaque pixel, on multiplie la grandeur/z par z (qui est lui-même interpolé sous une forme 1/z)...


Message édité par bjone le 20-11-2002 à 00:39:09
Reply

Marsh Posté le 20-11-2002 à 19:41:13    

Merci Bjone, je vais lire la doc mais pour l'instant j'avais pas trop le temps (elle est tout de meme assez consequente tout comme ma charge de travail et malheureusement le temps n'est pas extensible (ie : domage ca pourrait etre pratique))
 
Edit : d'aillieur pour pouvoir la lire a tout moment si je suis je suis au lycée je l'ai mis sur mon server apache  :D


Message édité par highseb le 20-11-2002 à 19:51:01
Reply

Marsh Posté le 21-11-2002 à 16:14:26    

d'ailleurs même sans trilinéaire, ce coefficient est évalué (par pixel), dans le cas du bilinéaire avec mipmapping.... (et tu peux même avoir du point sampling avec mipmapping)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed