J'essaie actuellement de comprendre certaines choses sur la pixellisation des graphiques vectoriels et les différentes façons dont elle est implémentée dans différents types d'applications.
J'ai testé et comparé quelques programmes et j'ai remarqué qu'il existe une différence majeure dans le comportement de l' anti-aliasing dans le processus de tramage. Je m'intéresse particulièrement au comportement de rendu dans Illustrator . Vous verrez pourquoi en lisant plus loin.
Pour mes tests, j'ai utilisé une composition très simple de triangles organisés en hexagone irrégulier avec différentes couleurs.
Logiciels graphiques vectoriels
Voici trois rendus du même graphique vectoriel dans Illustrator, Affinity et Inkscape. (L'image produite dans Affinity et Inkscape est exactement la même.)
Comme vous pouvez le voir, il y a une ligne blanche indésirable sur chacun des bords de l'image rendue avec Affinity et Inkscape. L'anticrénelage ne remplit pas cette zone d'une couleur unie, ce qui entraîne un petit écart entre les formes adjacentes.
Bien qu'il n'y ait pas d'espace dans le rendu Illustrator, les bords des formes sont aussi lisses que le rendu Affinity.
Voici une image montrant la même zone de chaque image mise à l'échelle.
Il y a une différence très subtile entre les deux images. Le rendu Affinity est un tout petit peu plus fluide, mais il est presque impossible de voir la différence en regardant les images dans leur taille d'origine.
Navigateurs
Rendu SVG
L'affichage des mêmes graphiques exportés au format SVG dans un navigateur ressemble beaucoup à l'image raster produite par Affinity et Inkscape.
Il existe de très petites différences dans l'anti-aliasing des bords (qui ne valent pas vraiment la peine d'être présentées ici), mais la pixellisation SVG dans les navigateurs courants se comporte à peu près de la même manière.
Rendu décomposé
En testant le rendu d'Illustrator un peu plus loin, j'ai essayé de fractionner des parties de mes graphiques et de les exporter individuellement, puis de les recomposer avec un logiciel d'édition raster.
En théorie, cela donnerait la même image que de l'avoir en une seule pièce, mais le résultat est légèrement différent en utilisant cette méthode.
Comme indiqué, lorsque les deux parties sont composées, il y a un petit espace entre elles. Bien qu'il soit plus subtil, il est très similaire au graphique rendu dans Affinity.
Rendu de polygone
Blender (logiciel 3D)
Blender vous permet d'importer des fichiers SVG et de les manipuler comme des objets courbes. Voici le graphique importé affiché dans la fenêtre 3D. (Par défaut, le matériau sera affecté par les lumières de la scène. La vérification de la propriété Shadeless dans le panneau des propriétés du matériau permettra de rendre les formes avec leurs couleurs d'origine.)
Voici un rendu fait du SVG dans Blender.
Il n'a pas d'espace entre les triangles. D'autres logiciels 3D sont très susceptibles de fonctionner de la même manière. Donc, Blender se comporte exactement comme Illustrator , n'est-ce pas? C'est peut-être l'inverse?
Les vraies questions
- Quelle bibliothèque de dessins vectoriels Illustrator utilise-t-il en arrière-plan?
- Serait-il possible qu'Illustrator utilise une sorte de moteur de rendu 3D? Est-ce open source? (probablement pas?)
- L'une des bibliothèques de dessins vectoriels bien connues telles que Cairo et Skia peut-elle obtenir le même comportement de rendu? (Pas d'espace entre les formes)
- Existe-t-il une bibliothèque de dessins vectoriels moins connue qui a le même comportement?
la source
Réponses:
Autant que je sache, Illustrator a 2 ou 3 rastériseurs différents. L'aperçu à l'écran est également sujet aux mêmes artefacts d'espace que votre émission, bien qu'il soit réglé pour minimiser l'effet. Votre message semble impliquer que vous êtes intéressé par la sortie " optimisée pour l'art ".
Image 1 : Les différents modes de rendu de l'illustrateur. Art optimisé à gauche et laissé entendre à droite. Notez que l'indication montre un léger arrière-plan. Je n'ai pas la nouvelle version CC donc je ne peux pas montrer la troisième.
Comment fonctionne l'optimisation de l'art alors
Le mode de rendu optimisé pour l'art est simplement une image sans crénelage rendue à une résolution plus élevée, qui a ensuite été soumise à un filtrage de boîte . C'est ce qu'on appelle le super échantillonnage qui est coûteux. Un filtre de boîte est simplement la valeur moyenne des échantillons dans la boîte (pixel). Il s'agit en effet d'une technologie similaire à celle utilisée par le filtre multi-pixels utilisé dans votre rendu Blender. Vous pouvez faire la même chose manuellement et obtenir les mêmes résultats.
En fait, le rendu que vous obtenez sous forme d'illustrateur n'est pas vraiment bon. Son rendu dans l'espace non linéaire et non corrigé et vous pouvez obtenir de meilleurs résultats en remplaçant les filtres d'ordre supérieur et en calculant dans l'espace colorimétrique linéaire. Toutes les méthodes multi-échantillons présentent le même rendu correct (avec suffisamment d'échantillons, même mathématiquement correct).
Image 2 : Filtrage multi pixels, à gauche illustrateur natif 'Art Optimized'. À droite, même image à 16x16 pixels avec filtre Lanczos à lobes multiples dans un espace linéaire . Assurez-vous que votre zoom est de 1: 1.
Le problème
En fait, vous avez accepté le vrai problème de la génération actuelle de moteurs de rendu à l'écran. Ils essaient d'éviter le multi-échantillonnage en faveur du calcul de la couverture. Mais cela ne peut tout simplement pas fonctionner parfaitement! Tout simplement parce que le mélange alpha est:
Lorsqu'il est enchaîné n'atteint jamais 0 lorsqu'il est enchaîné sur des surfaces semi-transparentes, le fond est donc visible. De plus, il ne sait pas comment la couverture est distribuée et il le fera mal. Il n'y a tout simplement aucun moyen de contourner cela dans un cas qui ne se chevauche pas comme celui-ci. mais si vous autorisez le chevauchement des formes, le calcul de la couverture peut être résolu (voir ici ).
Autres questions Vous pouvez obtenir le même résultat dans n'importe quel autre moteur en multipliant simplement simplement une image non anticrénelée. Vous ne pouvez pas obtenir l'effet sur les rendus d'écran sans faire l'astuce de chevauchement car ils optimisent la vitesse. L'illustrateur utilise-t-il la 3D? Le nouveau CC peut dépendre de votre interprétation de ce qu'est la 3D. Ce problème n'a rien à voir avec la 3D uniquement sur les méthodes de reconstruction du signal, donc ce n'est pas vraiment applicable à la question.
la source
Et juste pour ajouter: il est appelé artefact de "fusion" et c'est pour cela qu'AntiGrain Geometry a utilisé le rasterizer de formes composées , voir:
flash_rasterizer.png http://agg.sourceforge.net/antigrain.com/demo/flash_rasterizer.png
C'est également ce que NV Path Rendering prétend améliorer:
Une introduction à NV_path_rendering (p. 67) ou à la FAQ NV_path_rendering (# 29).
la source