7
votes

Algorithme antialiasing?

J'ai des textures que je crée et j'aimerais les antialias. J'ai accès à la couleur de chaque pixel, étant donné à cela comment pourrais-je utiliser la texture entière?

merci


0 commentaires

4 Réponses :


5
votes

"anti-aliasing" peut faire référence à une large gamme de techniques différentes. Aucun de ceux-ci ne serait généralement quelque chose que vous feriez à l'avance à une texture.

Peut-être que vous voulez dire Mip-Mapping? http://fr.wikipedia.org/wiki/mipmap


3 commentaires

Non, je ne cherche pas cela, je cherche à faire des bords déchiquetés look lisse


Si les artefacts sont déjà dans votre texture, essayez-les de les réduire à une taille plus petite. Ou chargez-les dans Photoshop et essayez d'utiliser les outils de flou pour améliorer le look. Il n'y a pas d'algorithme magique pour éliminer les erreurs d'aliasing après avoir été rendue.


Les bords déchiquetés sont le résultat d'une «rasterisation». Une antialiasing correcte est effectuée dans "le milieu" plutôt que après. Si vous le faites après sur le pixel déchiqueté déjà généré, vous obtenez probablement des floues plutôt que correctement une antialiasing.



1
votes

Il n'a pas très de sens de poser des questions sur l'antialiasing dans ce vague. Tout dépend de la nature des textures et de la façon dont ils seront utilisés.

Généralement, si vous n'avez pas de contrôle sur l'environnement d'affichage et que vos textures peuvent être éduquées, faites pivoter ou composées avec d'autres éléments que vous n'avez pas de contrôle, vous devez utiliser la transparence pour indiquer où votre image se termine et où il remplit seulement partiellement un pixel.

Il est également préférable d'éviter les arêtes et les caractéristiques pointues relatives à la quantité de mise à l'échelle qui pourrait être faite.


0 commentaires

5
votes

La méthode de base pour l'anti-aliasing est la suivante: pour un pixel p, échantillon des pixels autour de celui-ci. La nouvelle couleur de P est la moyenne de sa couleur d'origine avec celles des échantillons.

Vous pouvez échantillonner plus ou moins de pixels, modifier la taille de la zone autour du pixel pour échantillonner ou choisir de manière aléatoire quels pixels pour échantillonner.

Comme d'autres l'ont dit, cependant: l'anti-aliasing n'est pas vraiment quelque chose qui est fait à une image qui est déjà un bitmap de pixels. C'est une technique implémentée dans le moteur de rendu 2D / 3D.


1 commentaires

Pouvez-vous élaborer comment calculez-vous la "moyenne" des couleurs?



9
votes

Je suis désolé mais le véritable anti-aliasing ne consiste pas à obtenir la couleur moyenne des voisins comme commenté ci-dessus. Cela adoucira sans doute les bords, mais ce n'est pas anti-aliasing mais floue. Le véritable anti-aliasing ne peut tout simplement pas être fait correctement sur un bitmap, car il doit être calculé au moment de l'appoint pour indiquer quels pixels et / ou bords doivent être "ramollis" et lesquels ne doivent pas. Par exemple: Imaginez que vous dessinez une ligne horizontale qui doit comporter exactement 1 pixel épaisseur (disons «High») et doit être placé exactement sur une coordonnée entière d'écran. De toute évidence, vous le voudrez non linéaire et un algorithme anti-aliasing approprié le fera, attirant votre ligne comme une rangée parfaite de pixels solides entourés de pixels de couleur parfaits parfaits, sans mélange de tonalité. Mais si vous prenez cette même ligne une fois que cela a été dessiné (c'est-à-dire bitmap) et appliquez la méthode moyenne, vous serez floue au-dessus et au-dessous de la ligne, entraînant une ligne horizontale épaisse de 3 pixels, ce qui n'est pas le but. Bien sûr, tout pourrait être réalisé grâce au bon codage, mais d'une approche très différente et beaucoup plus complexe.


1 commentaires

L'aliasing est une violation du théorème d'échantillonnage de Shannon. En ce sens, le flou est une solution valide - elle supprime des composants à haute fréquence. Comme cela fait tourner tous les pixels de l'image sur la même valeur.