Elliptical Filtering (Traduction)

De FdWiki
Aller à : navigation, rechercher

Documentation Maya

Note de traduction

Ce qui suit est une traduction de la documentation officielle Maya: High quality texture filtering with elliptical filtering

Filtrage de texture de haute qualité avec le filtrage elliptique

Utilisez le filtrage elliptique pour un filtrage et un anti-aliasing de haute qualité sur vos textures. Au lieu d'utiliser le sampling par point, le filtrage elliptique utilise une zone défini (une ellipse) pour effectuer une recherche sur la texture. Cette ellipse contient de nombreux pixels; les couleurs de ces pixels sont moyennés et c'est la couleur résultante qui est utilisé.

Pour utiliser le filtrage elliptique, la texture doit, dans un premier temps, être préfiltré dans un format pyramidal. Dans la mesure ou il est très long de moyenner tout les pixels d'une zone défini; Maya utilise cet map pyramidale (ou mipmap). Par exemple, une texture 1K contient plusieurs versions de la même map à différentes résolutions: 1024, 512, 64, 32, 8, 4, 2, 1.

Maya recherche la résolution à utiliser dans la texture pyramidale en se basant sur deux aspects:

  • La taille de l'ellipse (sur la surface de l'objet).
  • Le facteur de qualité du filtrage elliptique.

Par exemple, si vous rendez un plan (sol) avec une texture, les ellipses à l'horizon couvrent une plus grande surface que les ellipses proches de la camera. Quand les ellipses couvre une large surface sur l'objet (point loin de la camera), Maya utilise la résolution la plus basse de la map pyramidale pour éviter le flickering de la texture.

Texture Elliptical Filter On Ground.jpg

Par exemple, une ellipse situé à l'horizon peut couvrir une large zone sur la surface de l'objet, et Maya utilisera la résolution 2x2 de la map pyramidale. En revanche, les ellipses proches de la camera couvre une zone beaucoup plus petite. Si le facteur de qualité est défini à 8, Maya cherchera, le niveau de la map pyramidale correspondant à la taille de l'éllipse sur 8 pixels de l'écran. Dans ce cas, le minor radius de l'ellipse est utilisé pour déterminer la densité de texels (pixels d'une texture) qui, à son tour, détermine le niveau (de la map pyramidale) à utiliser.

Appliquer le filtrage elliptique sur vos textures

  1. Sélectionnez mental ray comme moteur de rendu. Cette fonctionnalité est uniquement disponible dans mental ray for Maya.
  2. Dans l'Attribute Editor de votre node de file, sélectionnez Mipmap comme Filter Type. Le filtrage elliptique est une extension du filtrage mipmap.
  3. Ouvrez la section mental ray dans Attribute Editor de votre node de file. Sélectionnez Advanced Elliptical Filtering pour activer le filtrage elliptique.
  4. Utilisez le slider Anti-aliasing Level pour gérer votre filtrage. Maya utilise la taille de l'ellipse sur la surface de l'objet pour déterminer la résolution à utiliser dans la map pyramidal.

Par exemple, un Anti-aliasing Level de 64 veut dire que 64 pixels de la texture (des texels) doivent rentrer dans le minor radius de l'ellipse (en l'UV space de l'objet).

Quand vous modifiez cette valeur, vous devez choisir une balance entre la qualité et la vitesse. Si le minor radius est très large, Maya cherchera une résolution de la map pyramidale plus élevé, ce qui entraînera une augmentation du nombre de pixels lu/chargé par Maya.

Par conséquent, vous devrez sélectionner un nombre qui équilibre la balance entre le temps de recherche et la qualité de l'anti-aliasing.

Convertissez vos texture en un format optimisé pour le filtrage elliptique (pyramidal ou multi-resolutions) en cochant Convert File to Optimized Format. Cette option est automatiquement activé quand vous activez Advanced Elliptical Filtering.

Cette option est un override de l'option global Use optimized textures (auto-conversion) de la fenêtre des préférences (dans la section Rendering). L'option global convertit toute les textures de votre scène en un format optimisé, tandis que cette option (dans le node de file) convertit uniquement la texture sélectionné. Pour overrider les options des préférences globales, cochez Override Global Auto-Conversion Settings.

Documentation Mental Ray

Note de traduction

Ce qui suit est une traduction de la documentation officielle Mental Ray: Elliptical Projection Filter Lookup

Le filtrage par projection elliptique

Cette méthode fut implémenté dans mental ray de manière à fournir un filtrage des textures de haute qualité, de loin supérieure au filtrage pyramidale expliqué plus tôt. Il élimine la plupart (si ce n'est pas tout) l'aliasing des textures "à haute fréquence" (bruité). Quand, par exemple, vous utilisez des textures de damier sur un rectangle, il ya beaucoup moins de flou à l'horizon (la compression de la texture est forte). En utilisant les textures mipmaps (expliqué plus tôt), le flou sur de tels compressions est parfois encore visible.

La principale raison de ce flou excessif vient de l'approximation de la zone de projection des pixel en carré. Avec le filtrage elliptique, un cercle est projetée dans l'espace texture autour du point samplé ce qui donnera une forme projetée en ellipse. Au lieu d'utiliser une forme simple, comme un carré, pour faire l'approximation des texels, une rassemblement de tout les texels présent dans l'ellipse est faite. Faire une moyenne de tout les texels dans cette ellipse peut être très long, c'est pourquoi mental ray utilise des textures préfiltrées en pyramides. Il y a de nombreux paramètres, expliqué plus loin, qui controlent la forme de l'ellipse et la selection du niveau (de map pyramidale) à utiliser.

Quand la projection elliptique est utilisé, la partie la plus couteuse en calcul est la transformation matriciel: espace écran vers espace texture. Cette matrice est utilisé, dans le code du filtrage, pour "transformer" le cercle (dont le centre est le point samplé) en espace texture. Mental ray fournit deux fonctions pour construire cette matrice quand les coordonnées de texture (UV) sont disponibles; voir mi_texture_filter_project dans le chapitre "Écrire des shaders". Si elles ne sont pas disponibles ou que, par exemple, la projection direct du cylindre est utilisé, il est plus facile de calculer cette matrix.

L'algorithme de filtrage suivante est appliqué: Dans un premier temps, un cercle, placé sur le sample courant, est transformé en ellipse en utilisant la matrice de transformation fournit. Ensuite, l'excentricité de l'ellipse est calculé (rayon majeur divisé par le rayon mineur). Si l'excentricité est plus grande que le maximum spécifié, le rayon mineur est ajusté (agrandit) pour être sur que cette excentricité maximum tiens toujours. La raison de cet agrandissement est que l'encerclement des texels à utiliser est fait dans le niveau de la map pyramidale en se basant sur la longueur de l'axe mineur de l'ellipse. Il y a un autre paramètre qui définit le nombre de texels maximum autorisé que le rayon mineur peut couvrir (ndt: l'équivalent du Anti-aliasing Level dans Maya). Si ce nombre est dépassé sur le niveau le plus élevé (zéro), on descend d'un niveau dans la map. Dans le niveau suivant, le rayon mineur a la moitié de sa taille, etc... Basiquement, agrandir le rayon mineur quand l'excentricité est dépassé, veut dire qu'on remonte dans la map pyramidale. Donc, pour de très grandes ellipses, mental ray les rends "plus grosses" et utilise des niveaux plus élevé (s'éloignant de zéro) dans la map pyramidale. Pour revenir à notre plan mappé par une texture de damier, à l'horizon, les cercles sont projettés en ellipses à la fois très grandes et très minces, qui couvrent des centaines de texels, et, en utilisant la technique ci-dessus, mental ray va simplement chercher dans les niveaux supérieurs de la map pyramidale.

Il y a un autre paramètre qui modifie la taille du cercle à projeter. Généralement le rayon est à 0.5:

  • Le rendre plus grand augmente le flou.
  • Le rendre plus petit augmente l'aliasing.

Les fonctions de projection prennent un autre paramètre qui est le décalage maximum du centre du sample par rapport aux deux autres points qui doivent être sélectionnés. Les deux autres points devrait être à l'interieur du pixel, mais dans la mesure ou mental ray utilise également la current intersection primitive (le triangle) pour déterminer les textures de coordonnées (UV), une plus petite valeur que 0.5 (les coins du pixel) est adapté car mental ray peut "toucher" le plan du triangle en dehors de la zone du triangle. Généralement, 0.3 donne de bons résultats. Quand les coordonnées UV sont calculé en utilisant la projection de cylindre, il est possible d'optenir les coordonnées UV plus rapidement et également plus précisément.

Vidéo

Liens externes