Ich versuche derzeit, ein paar Dinge über die Rasterisierung von Vektorgrafiken und die unterschiedlichen Implementierungsweisen in verschiedenen Anwendungstypen zu verstehen.
Ich habe einige Programme getestet und verglichen und festgestellt, dass es einen großen Unterschied im Verhalten von Anti-Aliasing im Rasterungsprozess gibt. Mich interessiert besonders das Rendering-Verhalten in Illustrator . Sie werden sehen, warum, indem Sie weiterlesen.
Für meine Tests habe ich eine sehr einfache Zusammensetzung von Dreiecken verwendet, die in einem unregelmäßigen Sechseck mit verschiedenen Farben angeordnet sind.
Vektorgrafiken-Software
Hier sind drei Darstellungen derselben Vektorgrafik in Illustrator, Affinity und Inkscape. (Das in Affinity und Inkscape erzeugte Bild ist genau das gleiche.)
Wie Sie sehen, befindet sich an jedem Rand des mit Affinity und Inkscape gerenderten Bildes eine unerwünschte weiße Linie. Das Anti-Aliasing füllt diesen Bereich nicht mit einer durchgehenden Farbe, was zu einer kleinen Lücke zwischen benachbarten Formen führt.
Obwohl im Illustrator-Rendering keine Lücke vorhanden ist, sehen die Kanten der Formen so glatt aus wie beim Affinity-Rendering.
Hier ist ein Bild, das den gleichen Bereich von jedem Bild zeigt, das vergrößert wurde.
Es gibt einen sehr feinen Unterschied zwischen den beiden Bildern. Das Rendern mit Affinität ist ein bisschen weicher, aber es ist fast unmöglich, den Unterschied zu erkennen, wenn Sie die Bilder in ihrer Originalgröße betrachten.
Browser
SVG-Rendering
Die Anzeige derselben als SVG exportierten Grafiken in einem Browser ähnelt stark dem von Affinity und Inkscape erzeugten Rasterbild.
Es gibt sehr kleine Unterschiede beim Kanten-Anti-Aliasing (die es nicht wirklich wert sind, hier gezeigt zu werden), aber die SVG-Rasterisierung in gängigen Browsern verhält sich ziemlich ähnlich.
Zerlegtes Rendering
Um das Rendering von Illustrator weiter zu verbessern, habe ich versucht, Teile meiner Grafiken zu teilen und einzeln zu exportieren und sie dann mit einer Raster-Bearbeitungssoftware wieder zusammenzusetzen.
Theoretisch würde es dasselbe Bild ergeben wie ein einziges Stück, aber das Ergebnis ist bei dieser Methode etwas anders.
Wie gezeigt, besteht zwischen den beiden Teilen eine winzige Lücke. Obwohl es subtiler ist, ist es der in Affinity gerenderten Grafik sehr ähnlich.
Polygon-Rendering
Mixer (3D-Software)
Mit Blender können Sie SVG-Dateien importieren und als Kurvenobjekte bearbeiten. Hier sehen Sie die importierte Grafik im 3D-Ansichtsfenster. (Standardmäßig wird das Material durch Lichter in der Szene beeinflusst. Wenn Sie die schattenlose Eigenschaft im Materialeigenschaftsfenster aktivieren, können die Formen mit ihren ursprünglichen Farben gerendert werden.)
Hier ist ein Render aus dem SVG in Blender.
Es gibt keine Lücke zwischen den Dreiecken. Andere 3D-Software funktioniert wahrscheinlich genauso. Blender verhält sich also genau wie Illustrator oder doch? Vielleicht ist es umgekehrt?
Die wirklichen Fragen
- Welche Vektorzeichenbibliothek verwendet Illustrator hinter den Kulissen?
- Könnte es sein, dass Illustrator eine Art 3D-Rendering-Engine verwendet? Ist es Open Source? (wahrscheinlich nicht?)
- Kann eine der bekannten Vektorzeichenbibliotheken wie Cairo und Skia dasselbe Renderverhalten erzielen? (Keine Lücke zwischen den Formen)
- Gibt es eine weniger bekannte Vektorzeichnungsbibliothek, die das gleiche Verhalten aufweist?
quelle
Antworten:
Soweit ich das beurteilen kann, hat Illustrator 2 oder 3 verschiedene Rasterizer. Die Vorschau auf dem Bildschirm ist auch anfällig für die gleichen Lückenartefakte wie Ihre Show, obwohl sie so eingestellt ist, dass der Effekt minimiert wird. Ihr Beitrag scheint darauf hinzudeuten, dass Sie an der " kunstoptimierten " Ausgabe interessiert sind .
Bild 1 : Die verschiedenen Render-Modi des Illustrators. Kunst links optimiert und rechts angedeutet. Beachten Sie, dass der Hinweis einen leichten Hintergrund zeigt. Ich habe keine neue CC-Version, daher kann ich die dritte nicht anzeigen.
Wie funktioniert denn Kunstoptimierung?
Der kunstoptimierte Rendermodus ist einfach ein nicht vorgespanntes Bild, das mit einer höheren Auflösung gerendert und anschließend einer Box-Filterung unterzogen wurde . Dies wird als Super-Sampling bezeichnet, was teuer ist. Ein Box-Filter ist einfach der Mittelwert der Samples in der Box (Pixel). Dies ist in der Tat eine ähnliche Technologie wie der Multi-Pixel-Filter, der in Ihrem Mischpult-Rendering verwendet wird. Sie können dasselbe manuell ausführen und dieselben Ergebnisse erzielen.
Tatsächlich ist der Render, den Sie mit Form Illustrator erhalten, nicht wirklich gut. Es wird im nichtlinearen Raum gerendert und nicht korrigiert, und Sie können bessere Ergebnisse erzielen, indem Sie auf Filter höherer Ordnung tauschen und im linearen Farbraum rechnen. Alle Multi-Sample-Methoden zeigen das gleiche korrekte Rendering (bei genügend Samples auch mathematisch korrekt).
Bild 2 : Multi-Pixel-Filterung, auf der linken Seite Illustrator native 'Art Optimized'. Rechts das gleiche Bild bei 16x16 Pixeln mit mehrlappigem Lanczos-Filter im linearen Raum . Stellen Sie sicher, dass Ihr Zoom 1: 1 ist.
Das Problem
Sie haben sich tatsächlich mit dem eigentlichen Problem der aktuellen Generation von Onscreen-Renderern auseinandergesetzt. Sie versuchen, Mehrfachstichproben für die Deckungsberechnung zu vermeiden. Aber es kann einfach nicht perfekt funktionieren! Einfach weil Alpha Blend ist:
Bei Verkettung wird bei Verkettung über semitransparenten Oberflächen niemals 0 erreicht, sodass der Hintergrund eine Talsohle aufweist. Außerdem weiß es nicht, wie die Abdeckung verteilt ist, so dass es es falsch machen wird. In einem nicht überlappenden Fall wie diesem führt kein Weg daran vorbei. Wenn Sie jedoch zulassen, dass sich die Formen überlappen, kann die Deckungsberechnung gelöst werden (siehe hier ).
Andere Fragen Sie können dasselbe Ergebnis in jeder anderen Engine erzielen, indem Sie einfach ein nicht antialiasisiertes Bild mit mehreren Abtastungen versehen. Sie können den Effekt nicht auf Bildschirmrenderings erzielen, ohne den Überlappungstrick auszuführen, da sie für die Geschwindigkeit optimiert sind. Verwendet der Illustrator 3D? Der neue CC hängt möglicherweise von Ihrer Interpretation von 3D ab. Dieses Problem hat nichts mit 3D zu tun, nur mit Signalrekonstruktionsmethoden. Daher ist es für die Frage nicht wirklich relevant.
quelle
Und um es noch hinzuzufügen: Es heißt "Conflation" -Artefakt und genau dafür hat AntiGrain Geometry den Rasterizer für zusammengesetzte Formen verwendet . Siehe:
flash_rasterizer.png http://agg.sourceforge.net/antigrain.com/demo/flash_rasterizer.png
Dies ist auch das, was NV Path Rendering verbessern soll:
Eine Einführung in die häufig gestellten Fragen zu NV_path_rendering (S. 67) oder NV_path_rendering (# 29).
quelle