¿Cuál es el proceso de rasterización vectorial de Illustrator?


19

Actualmente estoy tratando de entender algunas cosas sobre la rasterización de gráficos vectoriales y las diferentes formas en que se implementa en varios tipos de aplicaciones.

Probé y comparé algunos programas y noté que hay una gran diferencia en la forma en que se comporta el suavizado en el proceso de rasterización. Estoy especialmente interesado en el comportamiento de representación en Illustrator . Verá por qué leyendo más.

Imagen base

Para mis pruebas, utilicé una composición realmente simple de triángulos organizados en un hexágono irregular con diferentes colores.

Software de gráficos vectoriales

Aquí hay tres renders del mismo gráfico vectorial en Illustrator, Affinity e Inkscape. (La imagen producida en Affinity e Inkscape es exactamente la misma).

Imágenes renderizadas en herramientas populares de edición gráfica

Como puede ver, hay una línea blanca no deseada en cada uno de los bordes de la imagen renderizada con Afinidad e Inkscape. El suavizado no llena esta área con un color sólido, lo que resulta en un pequeño espacio entre las formas adyacentes.

Aunque no hay espacio en el renderizado de Illustrator, los bordes de las formas se ven tan suaves como el renderizado de Affinity.

Aquí hay una imagen que muestra la misma área de cada imagen mejorada.

Render exclusivo que muestra anti-aliasing

Hay una diferencia muy sutil entre las dos imágenes. El render de Affinity es un poco más suave, pero es casi imposible ver la diferencia al mirar las imágenes en su tamaño original.

Navegadores

Representación SVG

La visualización de los mismos gráficos exportados como SVG en un navegador es muy similar a la imagen ráster producida por Affinity e Inkscape.

Archivo SVG representado en el navegador

Hay diferencias muy pequeñas en el suavizado de bordes (que realmente no vale la pena mostrar aquí), pero la rasterización SVG en los navegadores comunes se comporta más o menos igual.

Render descompuesto

Al probar Illustrator un poco más, intenté dividir partes de mis gráficos y exportarlos individualmente para luego volver a componerlos con un software de edición de trama.

Esquema de recomposición de imagen

En teoría, resultaría en la misma imagen que tenerla en una sola pieza, pero el resultado es ligeramente diferente con este método.

Resultado de la imagen recompuesta

Como se muestra, cuando las dos partes están compuestas, hay un pequeño espacio entre ellas. Aunque es más sutil, es muy similar al gráfico representado en Affinity.

Representación poligonal

Blender (software 3D)

SVG en la vista de Blender

Blender le permite importar archivos SVG y manipularlos como objetos de curva. Aquí está el gráfico importado que se muestra en la vista 3D. (De forma predeterminada, el material se verá afectado por las luces en la escena. Al marcar la propiedad sin sombra en el panel de propiedades del material, se podrán representar las formas con sus colores originales).

Aquí hay un render hecho del SVG dentro de Blender.

Render real en Blender

No tiene ningún espacio entre los triángulos. Es muy probable que otros softwares 3D funcionen de la misma manera. Entonces Blender se comporta igual que Illustrator , ¿o no? Tal vez es al revés?

Las verdaderas preguntas

  • ¿Qué biblioteca de dibujo vectorial usa Illustrator detrás de escena?
  • ¿Podría ser posible que Illustrator utilice una especie de motor de renderizado 3D? ¿Es de código abierto? (¿probablemente no?)
  • ¿Puede alguna de las conocidas bibliotecas de dibujo vectorial como Cairo y Skia lograr el mismo comportamiento de representación? (Sin espacio entre formas)
  • ¿Existe alguna biblioteca de dibujo vectorial menos conocida que tenga el mismo comportamiento?

44
Otros renderizadores comunes también tienen este problema de fusión. Consulte w3.impa.br/~diego/projects/GanEtAl14/sample.html?contour .
lhf

Respuestas:


12

Por lo que puedo decir, Illustrator tiene 2 o 3 rasterizadores diferentes. La vista previa en pantalla también es propensa a la misma brecha que su programa, aunque está ajustada para minimizar el efecto. Su publicación parece implicar que está interesado en la salida de " arte optimizado ".

Arte optimizado versus vista previa de la pantalla del ilustrador

Imagen 1 : Los diferentes modos de renderizado de ilustrador. Arte optimizado a la izquierda e insinuado a la derecha. Tenga en cuenta que insinuado muestra un ligero fondo a través. No tengo la nueva versión CC, así que no puedo mostrar la tercera.

¿Cómo funciona entonces el arte optimizado?

El modo de renderizado optimizado de arte es simplemente una imagen sin antialias renderizada a una resolución más alta, que luego ha sido sometida a un filtro de caja . Esto se llama supermuestreo, que es costoso. Un filtro de caja es simplemente el valor medio de las muestras en la caja (píxel). Esta es, de hecho, una tecnología similar a la que utiliza el filtro de múltiples píxeles en el renderizado de su licuadora. Puede hacer lo mismo manualmente y obtener los mismos resultados.

De hecho, el renderizado que obtienes de Illustrator no es realmente bueno. Se procesa en un espacio no lineal y no se corrige, y puede obtener mejores resultados al cambiar a filtros de orden superior y calcular en un espacio de color lineal. Todos los métodos de múltiples muestras exhiben la misma representación correcta (dadas suficientes muestras incluso matemáticamente correctas).

ingrese la descripción de la imagen aquí

Imagen 2 : Filtrado de múltiples píxeles, en el ilustrador izquierdo 'Art Optimized'. A la derecha, la misma imagen a 16x16 píxeles con filtro Lanczos multilobulado en espacio lineal . Asegúrese de que su zoom sea 1: 1.

El problema

De hecho, ha llegado a un acuerdo con el problema real de la generación actual de renderizadores en pantalla. Intentan evitar el muestreo múltiple a favor del cálculo de la cobertura. ¡Pero simplemente no puede funcionar perfectamente! Simplemente porque la mezcla alfa es:

C0 0=C1α+C2(1-α)

Cuando encadenado nunca llega a 0 cuando está encadenado sobre superficies semitransparentes para que el fondo muestre el canal. Tampoco sabe cómo se distribuye la cobertura, por lo que lo hará mal. Simplemente no hay forma de evitar esto en un caso no superpuesto como este. pero si permite que las formas se superpongan, el cálculo de cobertura se puede resolver (consulte aquí ).

Otras preguntas Puede obtener el mismo resultado en cualquier otro motor simplemente con el muestreo múltiple de una imagen sin antialias. No puede obtener el efecto en las representaciones de pantalla sin hacer el truco de superposición porque optimizan la velocidad. ¿Illustrator usa 3D? El nuevo CC puede depender de su interpretación de lo que es 3D. Este problema no tiene nada que ver con 3D solo con los métodos de reconstrucción de señales, por lo que no es aplicable a la pregunta realmente.


1
Por cierto, para una visión más detallada de por qué la combinación alfa no "hace lo correcto" en casos como este, consulte este documento: Interpretación alfa de Andrew Glassner.
Nathan Reed

@NathanReed Se verá thnx, pero aquí es simplemente que, incluso si alfa funcionó correctamente, la cobertura no sabrá qué partes cubren los píxeles y cuáles no. Entonces, dos capas con 50% de alfa podrían significar completamente opacas o solo una capa visible porque los objetos llenan una región idéntica que simplemente no conocemos.
joojaa

2
@joojaa Sí, ese es básicamente el punto que señala el artículo: alfa puede representar opacidad, cobertura o una combinación de ambos. :)
Nathan Reed

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.