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.
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).
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.
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.
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.
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.
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)
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.
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?
fuente
Respuestas:
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 ".
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).
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:
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.
fuente
Y solo para agregar: se llama artefacto de "fusión" y esto es para lo que AntiGrain Geometry utilizó el rasterizador de formas compuestas , ver:
flash_rasterizer.png http://agg.sourceforge.net/antigrain.com/demo/flash_rasterizer.png
Además, esto es lo que NV Path Rendering afirma mejorar:
Una Introducción a NV_path_rendering (p. 67) o NV_path_rendering FAQ (# 29).
fuente