Що таке процес растризації вектора Illustrator?


19

На даний момент я намагаюся зрозуміти кілька речей щодо растеризації векторної графіки та різних способів її реалізації в різних типах додатків.

Я перевірив і порівняв кілька програм , і зауважив , що є велика різниця в тому , як згладжування поводиться в процесі растеризації. Мене особливо цікавить поведінка візуалізації в Illustrator . Ви побачите чому, читаючи далі.

Базове зображення

Для мого тестування я використав дійсно просту композицію з трикутників, організованих у неправильний шестикутник з різними кольорами.

Програмне забезпечення векторної графіки

Ось три візуалізації однієї і тієї ж векторної графіки в Illustrator, Affinity та Inkscape. (Зображення, створене в Affinity та Inkscape, точно однакове.)

Зображення, надані в популярних інструментах графічного редагування

Як ви бачите, на кожному з країв на зображенні, зображеному Affinity та Inkscape, є небажана біла лінія. Згладжування не заповнює цю область суцільним кольором, що призводить до невеликого зазору між суміжними формами.

Хоча в візуалізації Illustrator немає розриву, краї фігур виглядають так само гладко, як візуалізація Affinity.

Ось зображення, що показує однакову площу кожного масштабного зображення.

Високомасштабний візуалізатор, що демонструє антизбудження

Існує дуже тонка різниця між двома зображеннями. Відображення Affinity - це крихітніше плавніше, але майже неможливо побачити різницю, дивлячись на зображення в оригінальних розмірах.

Браузери

Візуалізація SVG

Відображення тієї ж графіки, експортованої як SVG у веб-переглядачі, виглядає дуже схоже на растрове зображення, створене як Affinity, так і Inkscape.

SVG-файл, відображений у браузері

Існують дуже невеликі відмінності в розширенні країв (які насправді не варто показувати тут), але растерізація SVG у звичайних браузерах поводиться майже однаково.

Розкладений візуалізація

Тестуючи рендеринг Illustrator трохи далі, я спробував розділити частини моєї графіки та експортувати їх окремо, потім скласти їх назад разом із програмним забезпеченням для редагування растрових.

Схема рекомпозиції зображень

Теоретично це призведе до того ж зображення, що і його в цілому, але результат дещо інший за допомогою цього методу.

Результат перекомпонованого зображення

Як показано, коли дві частини складені, між ними існує невеликий проміжок. Хоча він і більш тонкий, він дуже схожий на графіку, представлену в Affinity.

Візуалізація багатокутника

Blender (програмне забезпечення 3D)

SVG у вікні перегляду Blender

Blender дозволяє імпортувати файли SVG та обробляти їх як криві об'єкти. Ось імпортна графіка, показана у вікні 3D перегляду. (За замовчуванням на сцену впливатимуть світильники. Перевірка властивості без тіней на панелі властивостей матеріалу дозволить надати фігурам їх оригінальні кольори.)

Ось візуалізація, зроблена з SVG всередині Blender.

Фактична візуалізація в Blender

У ній немає розриву між трикутниками. Інші програмні засоби для 3D-програм, ймовірно, працюють так само. Тож Блендер поводиться так само, як Illustrator , чи так? Може, це навпаки?

Справжні питання

  • Яку бібліотеку векторних малюнків використовує Illustrator за кадром?
  • Чи можливо, що Illustrator використовує якусь двигун 3D-рендерінгу? Це відкритий код? (напевно, ні?)
  • Чи може будь-яка з відомих векторних бібліотек малювання, таких як Каїр і Скія, досягти однакової поведінки візуалізації? (Немає проміжку між формами)
  • Чи є там менш відома бібліотека векторних малюнків, яка має таку саму поведінку?

4
Інші звичайні рендери також мають цю проблему зіткнення. Див. W3.impa.br/~diego/projects/GanEtAl14/sample.html?contour .
lhf

Відповіді:


12

Наскільки я можу сказати, Illustrator має 2 або 3 різних растризатора. Екранний попередній перегляд також схильний до того ж розриву, що і артефакт, як і ваше шоу, хоча його налаштовано для мінімізації ефекту. Здається, ваша публікація означає, що ви зацікавлені у результатах " оптимізованого мистецтва ".

Мистецтво оптимізоване порівняно з попереднім переглядом екрана ілюстратора

Зображення 1 : Різні режими візуалізації ілюстратора. Мистецтво оптимізоване ліворуч і натякало праворуч. Зауважте, що натяк показує незначний фон наскрізь. У мене немає нової версії CC, тому я не можу показати третю.

Як тоді працює оптимізоване мистецтво

Режим візуалізації, оптимізований під мистецтво, - це просто немасляне зображення, що відображається з більшою роздільною здатністю, яке потім піддається фільтруванню в коробці . Це називається супер вибіркою, що дорого коштує. Фільтр коробки - це просто середнє значення зразків у вікні (піксель). Це справді подібна технологія, як і те, що використовує багатопіксельний фільтр, який використовується у вашому візуалізації блендера. Можна зробити те ж саме вручну і отримати однакові результати.

Насправді візуалізація, яку ви отримаєте, не є дуже хорошою. Його відображається в нелінійному просторі і не виправляється, і ви можете отримати кращі результати, заміняючи фільтри вищого порядку та обчислюючи лінійний кольоровий простір. Усі багатопробні методи демонструють однакове правильне відображення (дано достатньо зразків, навіть математично правильних).

введіть тут опис зображення

Зображення 2 : Мультипіксельна фільтрація, ліворуч на ілюстраторі "Оптимізовано мистецтво". Праворуч те саме зображення розміром 16x16 пікселів з багатопроменевим фільтром Ланцоса в лінійному просторі . Переконайтесь, що ваш масштаб 1: 1.

Проблема

Ви насправді зіткнулися з реальною проблемою нинішнього покоління екранних рендерів. Вони намагаються уникати багаторазового вибірки на користь розрахунку покриття. Але це просто не може працювати ідеально! Просто тому, що альфа-суміш:

c0=c1α+c2(1-α)

Коли ланцюг ніколи не досягає 0, коли він прикутий до напівпрозорих поверхонь, тому фон показує корито. Крім того, він не знає, як розподіляється покриття, тому це зробить неправильно. Просто в цьому випадку не обійтися в такому випадку, що не перекривається. але якщо ви дозволяєте фігурам перекриватися, то розрахунок покриття можна вирішити (Дивіться тут ).

Інші запитання Ви можете отримати такий же результат у будь-якому іншому двигуні, просто провівши мультисемплінг зображення, яке не має антиаліас. Ви не можете отримати ефект на візуалізації екрану, не виконавши фокус накладання, оскільки вони оптимізовані для швидкості. Чи використовує ілюстратор 3D? Новий CC може залежати від вашої інтерпретації того, що таке 3D. Ця проблема не має нічого спільного з 3D, що стосується лише методів відновлення сигналу, так що насправді це не стосується питання.


1
BTW, для більш детального ознайомлення з тим, чому альфа-змішування не робить «правильних дій» у подібних випадках, ознайомтеся з цим документом: Інтерпретація Альфи Ендрю Гласнера.
Натан Рід

@NathanReed буде виглядати thnx, але тут просто, що навіть якщо альфа працював правильним покриттям, ти не знаєш, які частини охоплюють пікселі, а які ні. Таким чином, два шари з 50% альфа можуть означати повністю непрозорий або видимий лише один шар, оскільки об'єкти заповнюють однакову область, яку ми просто не знаємо.
joojaa

2
@joojaa Так, це в основному суть, яку ставить документ: альфа може представляти або непрозорість, покриття, або комбінацію обох. :)
Натан Рід

4

І лише додати: це називається артефактом "конфліктування", і саме для цього AntiGrain Geometry використовував комбінований розсіювач фігур , див .:

flash_rasterizer.png http://agg.sourceforge.net/antigrain.com/demo/flash_rasterizer.png

Крім того, це те, що NV Path Rendering вимагає покращити на:

Вступ до NV_path_rendering (стор. 67) або NV_path_rendering FAQ (# 29).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.