Atualmente, estou tentando entender algumas coisas sobre a rasterização de gráficos vetoriais e as diferentes maneiras como ela é implementada em vários tipos de aplicativos.
Testei e comparei alguns programas e notei que há uma grande diferença na maneira como o anti-aliasing se comporta no processo de rasterização. Estou especialmente interessado no comportamento de renderização no Illustrator . Você verá o porquê lendo mais.
Para os meus testes, usei uma composição muito simples de triângulos organizados em um hexágono irregular com cores diferentes.
Softwares de gráficos vetoriais
Aqui estão três renderizações do mesmo gráfico de vetor no Illustrator, Affinity e Inkscape. (A imagem produzida no Affinity e no Inkscape é exatamente a mesma.)
Como você pode ver, há uma linha branca indesejada em cada uma das bordas da imagem renderizada com Affinity e Inkscape. O anti-aliasing não preenche essa área com uma cor sólida, o que resulta em um pequeno espaço entre as formas adjacentes.
Embora não haja espaço na renderização do Illustrator, as bordas das formas parecem tão suaves quanto a renderização de afinidade.
Aqui está uma imagem mostrando a mesma área de cada imagem aumentada.
Há uma diferença muito sutil entre as duas imagens. A renderização Affinity é um pouco mais suave, mas é quase impossível ver a diferença ao observar as imagens em seus tamanhos originais.
Navegadores
Renderização SVG
A exibição dos mesmos gráficos exportados como SVG em um navegador é muito semelhante à imagem rasterizada produzida pelo Affinity e pelo Inkscape.
Existem diferenças muito pequenas no anti-aliasing de bordas (que não valem a pena mostrar aqui), mas a rasterização SVG em navegadores comuns se comporta da mesma maneira.
Renderização decomposta
Testando a renderização do Illustrator um pouco mais, tentei dividir partes dos meus gráficos e exportá-los individualmente e depois compor novamente com um software de edição raster.
Em teoria, isso resultaria na mesma imagem de uma peça única, mas o resultado é um pouco diferente usando esse método.
Como mostrado, quando as duas partes são compostas, há um pequeno espaço entre elas. Embora seja mais sutil, é muito semelhante ao gráfico renderizado no Affinity.
Renderização de polígono
Blender (software 3D)
O Blender permite importar arquivos SVG e manipulá-los como objetos de curva. Aqui está o gráfico importado mostrado na viewport 3D. (Por padrão, o material será afetado pelas luzes da cena. A verificação da propriedade sem sombra no painel de propriedades do material permitirá que as formas sejam renderizadas com suas cores originais.)
Aqui está uma renderização feita do SVG dentro do Blender.
Não existe nenhum espaço entre os triângulos. É provável que outros softwares 3D funcionem da mesma maneira. Então o Blender se comporta exatamente como o Illustrator , ou não? Talvez seja o contrário?
As verdadeiras perguntas
- Qual biblioteca de desenhos vetoriais o Illustrator usa nos bastidores?
- Será possível que o Illustrator faça uso de uma espécie de mecanismo de renderização em 3D? É de código aberto? (provavelmente não?)
- Alguma das bibliotecas conhecidas de desenho vetorial, como Cairo e Skia, pode obter o mesmo comportamento de renderização? (Nenhuma diferença entre as formas)
- Existe alguma biblioteca de desenho vetorial menos conhecida por aí que tenha o mesmo comportamento?
fonte
Respostas:
Tanto quanto eu posso dizer, o Illustrator tem 2 ou 3 rasterizadores diferentes. A visualização na tela também é propensa ao mesmo artefato de lacuna que o seu programa, embora esteja sintonizada para minimizar o efeito. Sua postagem parece indicar que você está interessado na saída " otimizada para arte ".
Imagem 1 : Os diferentes modos de renderização do illustrator. Arte otimizada à esquerda e sugerida à direita. Observe que a dica mostra um ligeiro fundo. Eu não tenho a nova versão CC, então não posso mostrar a terceira.
Como a arte otimizada funciona então
O modo de renderização otimizado para arte é simplesmente uma imagem sem suavização processada em resolução mais alta, que foi submetida a uma filtragem de caixa . Isso é chamado de super amostragem, que é caro. Um filtro de caixa é simplesmente o valor médio das amostras na caixa (pixel). Esta é realmente uma tecnologia semelhante à usada pelo filtro de vários pixels usado na renderização do seu liquidificador. Você pode fazer a mesma coisa manualmente e obter os mesmos resultados.
De fato, o renderizador que você obtém ilustrador de formulários não é realmente bom. É renderizado no espaço não linear e não corrigido, e você pode obter melhores resultados trocando para filtros de ordem superior e computando no espaço de cores linear. Todos os métodos de múltiplas amostras exibem a mesma renderização correta (dadas amostras suficientes, mesmo que matematicamente corretas).
Imagem 2 : Filtragem de vários pixels, no ilustrador esquerdo nativo 'Art Optimized'. À direita, a mesma imagem em 16x16 pixels com filtro Lanczos com vários lobos no espaço linear . Verifique se o zoom é 1: 1.
O problema
De fato, você se deparou com o problema real da geração atual de renderizadores na tela. Eles tentam evitar a amostragem múltipla a favor do cálculo da cobertura. Mas simplesmente não pode funcionar perfeitamente! Simplesmente porque a mistura alfa é:
Quando encadeado nunca atinge 0 quando encadeado sobre superfícies semitransparentes, o plano de fundo mostra a calha. Além disso, ele não sabe como a cobertura é distribuída e, portanto, fará errado. Simplesmente não há maneira de contornar isso em um caso não sobreposto como esse. mas se você permitir que as formas se sobreponham, o cálculo da cobertura poderá ser resolvido (veja aqui ).
Outras perguntas Você pode obter o mesmo resultado em qualquer outro mecanismo simplesmente multisampling uma imagem sem antialias. Você não pode obter o efeito nas renderizações da tela sem fazer o truque de sobreposição, porque elas otimizam a velocidade. O ilustrador usa 3D? O novo CC pode depender da sua interpretação do que é 3D. Esse problema não tem nada a ver com o 3D apenas sobre os métodos de reconstrução de sinal, portanto não é aplicável à questão.
fonte
E apenas para acrescentar: é chamado de artefato "conflação" e foi para isso que o AntiGrain Geometry usou o rasterizador de formas compostas , veja:
flash_rasterizer.png http://agg.sourceforge.net/antigrain.com/demo/flash_rasterizer.png
Além disso, é isso que a NV Path Rendering afirma melhorar:
Uma introdução ao NV_path_rendering (p. 67) ou NV_path_rendering FAQ (# 29).
fonte