Was ist der Vektor-Rasterisierungsprozess von Illustrator?

18

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.

Basisbild

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.)

Bilder, die mit gängigen Grafikbearbeitungswerkzeugen gerendert wurden

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.

Gehobenes Rendering mit Anti-Aliasing

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.

SVG-Datei im Browser gerendert

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.

Schema für die Neuzusammenstellung von Bildern

Theoretisch würde es dasselbe Bild ergeben wie ein einziges Stück, aber das Ergebnis ist bei dieser Methode etwas anders.

Ergebnis des neu zusammengestellten Bildes

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)

SVG im Blender-Ansichtsfenster

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.

Tatsächliches Rendern 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?
Geeyoam
quelle
4
Andere gebräuchliche Renderer haben ebenfalls dieses Konfliktproblem. Siehe w3.impa.br/~diego/projects/GanEtAl14/sample.html?contour .
lhf

Antworten:

11

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 .

Kunstoptimiert gegen Bildschirmvorschau des Illustrators

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).

Bildbeschreibung hier eingeben

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:

c0=c1α+c2(1-α)

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.

joojaa
quelle
1
Übrigens, für einen genaueren Blick darauf, warum Alpha-Blending in solchen Fällen nicht "das Richtige tut", lesen Sie dieses Dokument: Interpretation von Alpha von Andrew Glassner.
Nathan Reed
@ NathanReed Wird dankend aussehen, aber hier ist es einfach so, dass selbst wenn Alpha richtig funktioniert hat, die Abdeckung nicht weiß, welche Teile die Pixel bedecken und welche nicht. So können zwei Ebenen mit 50% Alpha bedeuten, dass sie vollständig undurchsichtig sind oder nur eine Ebene sichtbar ist, da Objekte identische Bereiche ausfüllen, die wir gerade nicht kennen.
Joojaa
2
@joojaa Ja, das ist im Grunde der Punkt, den das Papier anstrebt: Alpha kann entweder Opazität, Deckkraft oder eine Kombination aus beidem darstellen. :)
Nathan Reed