Qual è il processo di rasterizzazione vettoriale di Illustrator?


19

Attualmente sto cercando di capire alcune cose sulla rasterizzazione della grafica vettoriale e sui diversi modi in cui viene implementata in vari tipi di applicazioni.

Ho testato e confrontato alcuni programmi e ho notato che esiste una grande differenza nel modo in cui l'antialiasing si comporta nel processo di rasterizzazione. Sono particolarmente interessato al comportamento di rendering in Illustrator . Capirai perché leggendo oltre.

Immagine di base

Per i miei test, ho usato una composizione davvero semplice di triangoli organizzati in un esagono irregolare con colori diversi.

Software di grafica vettoriale

Ecco tre rendering della stessa grafica vettoriale in Illustrator, Affinity e Inkscape. (L'immagine prodotta in Affinity e Inkscape è esattamente la stessa.)

Immagini rese con i più diffusi strumenti di editing grafico

Come puoi vedere, c'è una linea bianca indesiderata su ciascuno dei bordi nell'immagine renderizzata con Affinity e Inkscape. L'antialiasing non riempie questa area con un colore solido che si traduce in un piccolo spazio tra le forme adiacenti.

Sebbene non vi sia spazio nel rendering di Illustrator, i bordi delle forme appaiono uniformi come il rendering Affinity.

Ecco un'immagine che mostra la stessa area di ogni immagine ingrandita.

Rendering di alto livello che mostra l'antialiasing

C'è una differenza molto sottile tra le due immagini. Il rendering Affinity è leggermente più fluido, ma è quasi impossibile vedere la differenza quando si guardano le immagini nelle loro dimensioni originali.

browser

Rendering in formato SVG

La visualizzazione della stessa grafica esportata come SVG in un browser è molto simile all'immagine raster prodotta da Affinity e Inkscape.

File SVG reso nel browser

Esistono differenze minuscole nell'antialiasing dei bordi (che non vale davvero la pena mostrare qui) ma la rasterizzazione SVG nei browser comuni si comporta praticamente allo stesso modo.

Rendering scomposto

Testando ulteriormente il rendering di Illustrator, ho provato a dividere parti della mia grafica ed esportarle singolarmente, quindi componendole di nuovo insieme con un software di editing raster.

Schema di ricomposizione dell'immagine

In teoria si tradurrebbe nella stessa immagine di averlo in un singolo pezzo, ma il risultato è leggermente diverso usando questo metodo.

Risultato dell'immagine ricomposta

Come mostrato, quando le due parti sono composte, c'è un piccolo spazio tra loro. Sebbene sia più sottile, è molto simile alla grafica resa in Affinity.

Rendering poligonale

Blender (software 3D)

SVG nella vista di Blender

Blender ti consente di importare file SVG e manipolarli come oggetti curva. Ecco l'immagine importata mostrata nel viewport 3D. (Per impostazione predefinita, il materiale sarà influenzato dalle luci della scena. Il controllo della proprietà senza ombre nel pannello delle proprietà del materiale consentirà il rendering delle forme con i loro colori originali.)

Ecco un rendering in SVG all'interno di Blender.

Rendering reale in Blender

Non ha alcun divario tra i triangoli. È molto probabile che altri software 3D funzionino allo stesso modo. Quindi Blender si comporta proprio come Illustrator , oppure? Forse è il contrario?

Le vere domande

  • Quale libreria di disegni vettoriali utilizza Illustrator dietro le quinte?
  • È possibile che Illustrator utilizzi una sorta di motore di rendering 3D? È open source? (probabilmente no?)
  • Qualcuno delle librerie di disegno vettoriale ben note come Cairo e Skia può ottenere lo stesso comportamento di rendering? (Nessuno spazio tra le forme)
  • C'è qualche libreria di disegno vettoriale meno conosciuta là fuori che ha lo stesso comportamento?

4
Anche altri renderer comuni hanno questo problema di conflazione. Vedi w3.impa.br/~diego/projects/GanEtAl14/sample.html?contour .
LHF

Risposte:


12

Per quanto ne so, Illustrator ha 2 o 3 rasterizzatori diversi. L'anteprima su schermo è anche soggetta allo stesso artefatto gap del tuo show sebbene sia ottimizzato per minimizzare l'effetto. Il tuo post sembra implicare che sei interessato all'output " ottimizzato per l'arte ".

Grafica ottimizzata rispetto all'anteprima dello schermo di Illustrator

Immagine 1 : le diverse modalità di rendering di Illustrator. Arte ottimizzata a sinistra e accennata a destra. Si noti che il suggerimento mostra un leggero sfondo. Non ho la nuova versione CC quindi non posso mostrare la terza.

Come funziona quindi l'ottimizzazione dell'arte

La modalità di rendering ottimizzata per immagini è semplicemente un'immagine non antialiasing resa a una risoluzione più elevata, che è stata quindi sottoposta a un filtro a riquadri . Questo si chiama super campionamento che è costoso. Un filtro box è semplicemente il valore medio dei campioni nel box (pixel). Questa è davvero una tecnologia simile a quella utilizzata dal filtro multi pixel utilizzato nel rendering del frullatore. Puoi fare la stessa cosa manualmente e ottenere gli stessi risultati.

In effetti il ​​rendering che ottieni form Illustrator non è davvero buono. Viene eseguito il rendering in uno spazio non lineare e non corretto e si possono ottenere risultati migliori passando a filtri di ordine superiore e calcolo nello spazio colore lineare. Tutti i metodi multi-campione mostrano lo stesso rendering corretto (dati sufficienti anche se matematicamente corretti).

inserisci qui la descrizione dell'immagine

Immagine 2 : filtro multi pixel, a sinistra illustratore nativo 'Art Optimized'. A destra stessa immagine a 16x16 pixel con filtro Lanczos multi lobo nello spazio lineare . Assicurati che lo zoom sia 1: 1.

Il problema

In effetti, hai fatto i conti con il vero problema dell'attuale generazione di renderer su schermo. Tentano di evitare il campionamento multiplo a favore del calcolo della copertura. Ma semplicemente non può funzionare perfettamente! Semplicemente perché la miscela alfa è:

c0=c1*α+c2*(1-α)

Quando incatenato non raggiunge mai 0 quando è incatenato su superfici semitrasparenti in modo che lo sfondo mostri una depressione. Inoltre non sa come viene distribuita la copertura, quindi non lo farà. Semplicemente non c'è modo di aggirare questo in un caso non sovrapposto come questo. ma se si consente la sovrapposizione delle forme, è possibile risolvere il calcolo della copertura (vedere qui ).

Altre domande Puoi ottenere lo stesso risultato in qualsiasi altro motore semplicemente eseguendo il multicampionamento di un'immagine non antialias. Non è possibile ottenere l'effetto sui rendering dello schermo senza eseguire il trucco di sovrapposizione perché ottimizzano per la velocità. Illustrator usa il 3D? Il nuovo CC potrebbe dipendere dalla tua interpretazione di cosa sia il 3D. Questo problema non ha nulla a che fare con il 3D solo sui metodi di ricostruzione del segnale, quindi non è applicabile alla domanda in realtà.


1
A proposito, per uno sguardo più dettagliato sul perché la miscelazione alfa non "fa la cosa giusta" in casi come questo, dai un'occhiata a questo documento: Interpretare Alpha di Andrew Glassner.
Nathan Reed,

@NathanReed Guarderà grazie, ma qui è semplicemente che anche se l'alfa ha funzionato correttamente la copertura non saprà quali parti coprono i pixel e quali no. Quindi Due strati con il 50% di alfa potrebbero significare completamente opachi o visibili solo uno strato perché gli oggetti riempiono una regione identica che non conosciamo.
joojaa,

2
@joojaa Sì, questo è fondamentalmente il punto che il documento sta ponendo: l'alfa può rappresentare l'opacità, la copertura o una combinazione di entrambi. :)
Nathan Reed il

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.