Obecnie próbuję zrozumieć kilka rzeczy na temat rasteryzacji grafiki wektorowej i różnych sposobów jej implementacji w różnych typach aplikacji.
Przetestowałem i porównałem kilka programów i zauważyłem, że istnieje zasadnicza różnica w zachowaniu antyaliasingu w procesie rasteryzacji. Szczególnie interesuje mnie zachowanie renderowania w programie Illustrator . Zobaczysz dlaczego, czytając dalej.
Do moich testów użyłem bardzo prostej kompozycji trójkątów ułożonych w nieregularny sześciokąt o różnych kolorach.
Oprogramowanie do grafiki wektorowej
Oto trzy rendery tej samej grafiki wektorowej w programach Illustrator, Affinity i Inkscape. (Obraz utworzony w Affinity i Inkscape jest dokładnie taki sam.)
Jak widać, na każdej krawędzi obrazu renderowanego za pomocą Affinity i Inkscape znajduje się niepożądana biała linia. Wygładzanie nie wypełnia tego obszaru jednolitym kolorem, co powoduje małą przerwę między sąsiednimi kształtami.
Chociaż w renderowaniu w programie Illustrator nie ma przerwy, krawędzie kształtów wyglądają tak gładko, jak renderowanie koligacji.
Oto obraz pokazujący ten sam obszar każdego obrazu w powiększeniu.
Istnieje bardzo subtelna różnica między tymi dwoma obrazami. Renderowanie powinowactwa jest nieco gładsze, ale prawie niemożliwe jest dostrzeżenie różnicy, gdy patrzy się na obrazy w ich oryginalnych rozmiarach.
Przeglądarki
Renderowanie SVG
Wyświetlanie tej samej grafiki wyeksportowanej jako SVG w przeglądarce wygląda bardzo podobnie do obrazu rastrowego utworzonego przez Affinity i Inkscape.
Istnieją bardzo małe różnice w wygładzaniu krawędzi (które naprawdę nie są tutaj warte pokazania), ale rasteryzacja SVG w popularnych przeglądarkach zachowuje się prawie tak samo.
Renderowanie z rozkładem
Testując renderowanie programu Illustrator nieco dalej, próbowałem podzielić części mojej grafiki i wyeksportować je indywidualnie, a następnie skomponować z powrotem za pomocą oprogramowania do edycji rastrowej.
Teoretycznie daje to ten sam obraz, co posiadanie go w jednym kawałku, ale wynik jest nieco inny przy użyciu tej metody.
Jak pokazano, kiedy dwie części są złożone, między nimi jest niewielka szczelina. Chociaż jest bardziej subtelny, jest bardzo podobny do grafiki renderowanej w Affinity.
Renderowanie wielokątów
Blender (oprogramowanie 3D)
Blender pozwala importować pliki SVG i manipulować nimi jako obiektami krzywej. Oto zaimportowana grafika pokazana w rzutni 3D. (Domyślnie na materiał wpływ będą miały światła na scenie. Zaznaczenie właściwości bezcieniowej w panelu właściwości materiału pozwoli na renderowanie kształtów w ich oryginalnych kolorach).
Oto rendering wykonany z SVG w Blenderze.
Nie ma żadnej przerwy między trójkątami. Inne oprogramowanie 3D prawdopodobnie będzie działać w ten sam sposób. Więc Blender zachowuje się tak jak Illustrator , czy tak? Może jest na odwrót?
Prawdziwe pytania
- Z jakiej biblioteki rysunków wektorowych korzysta program Illustrator za scenami?
- Czy to możliwe, że program Illustrator korzysta z pewnego rodzaju silnika renderowania 3D? Czy to jest oprogramowanie typu open source? (prawdopodobnie nie?)
- Czy którakolwiek ze znanych bibliotek do rysowania wektorów, takich jak Kair i Skia, może osiągnąć takie samo zachowanie renderowania? (Brak odstępu między kształtami)
- Czy istnieje jakaś mniej znana biblioteka rysunków wektorowych, która ma takie samo zachowanie?