Jakkolwiek dążyliśmy do tego, żeby opcje dotyczące plików wyjściowych nie wymagały żadnych dodatkowych wyjaśnień, to jednak tutaj ujawniamy wszystkie pikantne szczegóły:
Generowane przez nas obrazy wektorowe składają się z kształtów, które z kolei składają się z nie-samoprzecinających się pętli. Pętle to sekwencje krzywych, w ramach których każda krzywa rozpoczyna się w miejscu zakończenia poprzedniej, a ostatnia krzywa kończy w miejscu rozpoczęcia pierwszej krzywej. Tworzymy linie, łuki kołowe i eliptyczne, oraz krzywe Beziera drugiego i trzeciego stopnia.
Kształt zawsze zawiera dokładnie jedną „pozytywną” pętlę, definiującą obszar wymagający wypełnienia kolorem tego kształtu. Czasami kształty mogą również zawierać pętle „negatywne”, reprezentujące wycięcia, których nie należy wypełniać kolorem kształtu. Pętle negatywne muszą być całkowicie zawarte w pozytywnej pętli kształtu i nie mogą się ze sobą stykać.
W przypadku obrazów wejściowych zawierających rysunki liniowe lub innego rodzaju obrysowe figury geometryczne, takich jak rysunki CAD, wykresy, schematy techniczne itp. naturalnym oczekiwaniem jest uzyskanie pliku wyjściowego złożonego z obrysowych figur geometrycznych. Ten styl wektoryzacji nazywa się trasowaniem linii środkowych. Jako że obecnie nie obsługujemy trasowania linii środkowych, wszystkie obrysowe figury geometryczne są oddawane w postaci wąskich wypełnionych kształtów.
Zwróć uwagę, że sekcja Styl obrysu dotyczy modelowania obrysów ścieżek tworzących wypełnione kształty. Ten proces nie jest związany z trasowaniem linii środkowych.
Jeżeli obraz wektorowy zawiera dwa kształty, które przylegają do siebie i ich granice są zbieżne, wiele aparatów renderowania wektorowego i tak rysuje je zostawiając między nimi widoczną wąską białą linię. Ta wada aparatów renderowania jest na tyle powszechna, że raczej nie zostanie wkrótce usunięta.
Aby obejść ten problem, zaprojektowaliśmy rozwiązanie, które nazywamy Wypełnianiem odstępów. Polega ono na rysowaniu wąskiej linii pod granicą między dwoma kształtami z użyciem koloru będącego średnią dwóch kolorów graniczących ze sobą kształtów. Dzięki temu tło przestaje być widoczne, co skutecznie rozwiązuje problem.
Obrysy rysowane z zachowaniem stałej szerokości bez względu na poziom powiększenia nazywane są obrysami nieskalowalnymi. Funkcja ta jest w pełni obsługiwana w formacie SVG i w naszym narzędziu do rasteryzacji wektorowej PNG, oraz częściowo w formacie EPS, PDF i DXF.
SVG obsługuje dowolne szerokości nieskalowalnych obrysów i jest powszechnie obsługiwany przez przeglądarki i edytory SVG z wyjątkiem Adobe Illustrator, który ignoruje styl nieskalowalny, a obrys skaluje się wraz z poziomem zbliżenia. Nasze narzędzie do rasteryzacji wektorowej PNG również oferuje pełną obsługę nieskalowalnych obrysów.
EPS i PDF obsługują nieskalowalne obrysy jedynie przy nieokreślonej minimalnej szerokości wyświetlania, rozumianej generalnie jako szerokość piksela lub węższa. Adobe oficjalnie odradza ich stosowanie, a testy narzędzia Illustrator 2023 wskazują na znaczne wady w zakresie obsługi tego stylu.
DXF również obsługuje nieskalowalne obrysy o minimalnej szerokości wyświetlania, a ten styl obrysu występuje w plikach DXF bardzo powszechnie.
Generalnie, zalecamy stosowanie nieskalowalnego obrysu tylko w formatach SVG, DXF i PNG.
Obrazy wektorowe składają się z kształtów rysowanych w konkretnej kolejności, odzwierciedlającej zwykle ich kolejność w pliku definiującym obraz wektorowy.
Kolejność rysowania niektórych kształtów można zmienić nie naruszając wyglądu obrazu wektorowego. Rozważmy na przykład dwie oddzielne kropki w ramach prostokąta. Prostokąt musi zostać narysowany przed kropkami, natomiast każdą z kropek można narysować przed drugą z nich bez wpływu na wygląd obrazu wektorowego.
Dowolny zestaw kształtów, których wewnętrzna zmiana kolejności nie zmieni wyglądu obrazu może stanowić tę samą Warstwę. Warstwy muszą być rysowane w określonej kolejności, natomiast w ramach danej Warstwy można dowolnie zmieniać kolejność kształtów lub grupować je bez zmiany wyglądu obrazu.
Obsługujemy szereg różnych formatów eksportowanych plików, natomiast nie wszystkie funkcje działają dla każdego z tych formatów.
SVG 1.1 to zdecydowanie najszerzej stosowana wersja SVG, ale dla celów naszych plików wyjściowych od SVG 1.0 różni się ona tylko nagłówkiem.
Żadna z tych wersji nie oferuje formalnej obsługi obrysów nieskalowalnych, które zostały wprowadzone w SVG Tiny 1.2 i stanowią część niewydanej jeszcze specyfikacji SVG 2.0. W praktyce, jako że większość głównych przeglądarek i edytorów obsługuje nieskalowalne obrysy, są one dopuszczalne we wszystkich naszych plikach wyjściowych SVG.
Encapsulated Postscript (EPS) to starszy format stworzony przez Adobe i stosowany głównie do drukowania. Nie obsługuje on grupowania ani przezroczystości, a nieskalowalne obrysy obsługuje jedynie w ograniczonym zakresie.
Obecnie eksportujemy pliki EPS w wersji 3, będącej najczęściej używaną wersją.
Portable Document Format (PDF) firmy Adobe jest głównie stosowany jako format wymiany dla dokumentów, natomiast oferuje on również dość funkcjonalne możliwości w zakresie grafiki wektorowej. PDF nie obsługuje grupowania, a nieskalowalne obrysy obsługuje w ograniczonym zakresie.
Eksportujemy pliki PDF w wersji 1.4, będącej najwcześniejszą wersją obsługującą przezroczystość.
DXF czyli Drawing Exchange Format stworzony przez AutoCAD to szeroko stosowany format wymiany plików CAD. Specyfikacja DXF obsługuje co prawda warstwy (grupy) i wszystkie dostępne typy krzywych, natomiast zakres obsługi po stronie czytników DXF jest mocno zróżnicowany.
Eksportujemy pliki DXF w wersji AC1021 (2007).
Format PNG (Portable Network Graphics) to rastrowy format obrazu obsługujący przezroczystość. PNG jest formatem bitmapowym a nie wektorowym, ale obsługujemy eksportowanie do tego formatu ze względu na jego powszechne stosowanie w różnych rodzajach generowanych przez nas obrazów.
Na tę chwilę nie obsługujemy arbitralnych współczynników skalowania. Generowany plik wyjściowy PNG jest dokładnie 4x szerszy i wyższy niż obraz wejściowy, z limitem do 4 megapikseli. Ograniczenia te zostaną w przyszłości usunięte.
Wynikiem procesu wektoryzacji jest zestaw ścieżek definiujących kształty występujące w danym obrazie. Najbardziej naturalnym rozwiązaniem jest wypełnienie tych kształtów ich odpowiednimi kolorami w taki sposób, aby uzyskany obraz wyglądał dokładnie tak wejściowa mapa bitowa, ale z ostrzejszymi granicami i możliwością skalowania bez utraty jakości.
Jednak dla niektórych aplikacji bardziej interesujące są same ścieżki i w takim przypadku sensowniejsze może być obrysowywanie kształtów lub też granic między kształtami.
Obrysuj wszystkie krzywe kształtu tak samo jak przy wypełnianiu, ale stylem rysowania zdefiniowanym przez styl obrysu zamiast niejawnego stylu wypełniania.
Jeśli dwa kształty stykają się ze sobą, krawędź między nimi zostanie obrysowana dwukrotnie: raz dla każdego kształtu.
W przypadku wycięć każda krawędź generuje zawsze dwa obrysy. Kształty ułożone warstwowo generują jeden obrys pomiędzy danym kształtem a kształtami całkowicie w nim zawartymi, oraz dwa obrysy pomiędzy kształtami, które sąsiadują ze sobą ale nie zawierają się wzajemnie.
Obrysuj jednorazowo wszystkie krawędzie między kształtami.
W przeciwieństwie do funkcji Obrysuj kształty, która zwykle obrysowuje każdą krawędź dwukrotnie (po jednym razie dla każdego otaczającego ją kształtu), ten styl rysowania obrysowuje każdą krawędź pomiędzy kształtami tylko raz.
Przydaje się to przy grawerowaniu laserowym, cięciu winylu i tym podobnych.
Kształty obrazu wektorowego możemy wyobrażać sobie jako ułożone warstwowo jedne na drugich, albo stanowiące swoje wzajemne wycięcie. Jesteśmy w stanie wygenerować oba rodzaje.
Umieść kształty w wycięciach w kształtach poniżej. Oznacza to, że wszystkie kształty stanowią jedną warstwę i nie nakładają się na siebie.
Upraszcza to działanie Wypełniania odstępów, pozwalając na umieszczenie wszystkich obrysów wypełniających odstępy w pojedynczej warstwie pod wszystkimi kształtami. Wymaga to jednak większej ilości obrysów wypełniających odstępy, które są potrzebne wszędzie tam, gdzie kształty sąsiadują ze sobą i stykają się ze sobą, w przeciwieństwie do kształtów ułożonych warstwowo.
Konieczność uwzględnienia krzywych określających wycięcia sprawia również, że plik będzie większy.
W zależności od danego obrazu i preferencji użytkownika, może to również ułatwić lub utrudnić edytowanie rezultatu w edytorze grafiki wektorowej. Stosowanie wycięć ułatwia szczególnie oddzielanie od siebie poszczególnych elementów obrazu, jako że wizualny kształt danego elementu nie jest zależny od innego, ułożonego na nim elementu. Jeśli natomiast celem jest zachowanie spójności wszystkich części obrazu, wycięcia utrudniają edycję precyzyjnego kształtu elementu, jako że edytowanie kształtu wymagać będzie dokonania stosownych zmian w wycięciu, w którym znajduje się dany kształt.
Nakładaj kształty warstwowo. Wyobraź sobie wielowarstwowy tort, z mniejszymi piętrami ułożonymi na większych.
Opcja ta minimalizuje zwykle rozmiar pliku oraz liczbę obrysów wypełniających odstępy. Utrudnia ona jednak działanie Wypełniania odstępów, ponieważ obrysy wypełniające odstępy muszą zostać wplecione między kształty, których dotyczą i kształt je zawierający. Nakładanie ma również czasami skutek uboczny w postaci drobnych fragmentów obrysów wypełniających odstępy, które wystają poza obrysowywane kształty. Problem ten możemy rozwiązać stosując obrysy nieskalowalne lub wycinając obrysy wypełniające odstępy. Zalecamy stosowanie obrysów nieskalowalnych wszędzie tam, gdzie jest to możliwe.
W opcji kształtów ułożonych warstwowo łatwiej jest również edytować granicę między danym kształtem a kształtem ułożonym pod nim, jako że granica ta nie została powielona w wycięciu. Trudniejsze może być natomiast oddzielanie wybranego elementu obrazu, ponieważ wygląd każdego kształtu zależy od ułożonych na nim kształtów.
Formaty plików wektorowych takie jak SVG obsługują tworzenie grup złożonych z wielu kształtów. Grupowanie pozwala na jednoczesne wprowadzanie zmian we wszystkich kształtach ujętych w grupie, dlatego jest przydatne przede wszystkim z punktu widzenia organizacyjnego i łatwości edytowania.
Format SVG zapewnia pełną obsługę grup. Grupowania nie obsługuje natomiast ani EPS ani PDF. DXF oferuje obsługę warstw, które są podobne do grup.
Ta sekcja kontroluje sposób grupowania kształtów.
Grupuj kształty według koloru ich wypełnienia.
Jeżeli Nakładanie kształtów odbywa się w trybie Wycięcia, wszystkie kształty danego koloru zostaną ujęte w jednej grupie.
Jeżeli Nakładanie kształtów odbywa się w trybie Ułożone warstwowo, zgrupowanie wszystkich kształtów danego koloru nie jest zwykle możliwe, jako że wszystkie części grupy muszą zajmować tę samą pozycję w kolejności rysowania obrazu wektorowego. Z tego względu w obrazach Ułożonych warstwowo grupujemy wyłącznie kształty danego koloru zajmujące wspólnie tę samą Warstwę.
Pogrupuj wszystkie kształty mające ten sam element nadrzędny.
Jeżeli dany kształt całkowicie zawiera się w innym kształcie, kształt zewnętrzny uważany jest za nadrzędny wobec kształtu wewnętrznego. Elementem nadrzędnym dla wszystkich kształtów, które nie są całkowicie wpisane w inny kształt jest sam obraz wektorowy, a kształty te stanowią wspólnie jedną grupę.
Pogrupuj kształty według Warstwy ich kolejności rysowania.
Warstwy kolejności rysowania to grupy kształtów, których wewnętrzną kolejność rysowania można zmieniać dowolnie bez zmiany wyglądu obrazu.
Obsługujemy specjalną identyfikację określonych parametryzowanych kształtów takich jak okręgi, elipsy, prostokąty, trójkąty równoramienne i gwiazdy, w każdym przypadku z opcją dowolnych kątów obrotu i zaokrąglonych narożników. Dopasowywanie tych powszechnie występujących kształtów pozwala uzyskać kształty z doskonałą geometrią i jednolitym traktowaniem narożników. Niektóre formaty eksportowanego pliku oferują natywną obsługę wybranych kształtów, którą wykorzystujemy aby ułatwić edytowanie uzyskiwanych plików.
Oferujemy szczegółową kontrolę w zakresie rodzajów krzywych, które mogą zostać wyeksportowane. Każdy format pliku oraz inne wybrane opcje mają również swoje własne ograniczenia w kontekście dopuszczalnych typów krzywych i stosowane są zawsze opcje najbardziej restrykcyjne.
Obsługiwane przez format SVG, DXF i nasze narzędzie do rasteryzacji wektorowej PNG, krzywe Beziera drugiego stopnia są definiowane przez dwa punkty krańcowe i pojedynczy punkt kontrolny. Kierunek stycznej krzywej w punkcie krańcowym jest zawsze równoległy do linii łączącej ten punkt krańcowy z punktem kontrolnym.
Jeśli krzywe Beziera drugiego stopnia są wyłączone, bazujemy na krzywych Beziera trzeciego stopnia, łukach eliptycznych i liniach, w tej kolejności.
Obsługiwane przez wszystkie formaty eksportowanych plików, krzywe Beziera trzeciego stopnia są definiowane przez dwa punkty krańcowe i dwa punkty kontrolne. Kierunek stycznej krzywej w punkcie krańcowym jest zawsze równoległy do linii łączącej ten punkt krańcowy z odpowiadającym mu punktem kontrolnym.
Jeżeli krzywe Beziera trzeciego stopnia są wyłączone, bazujemy na liniach.
Łuki kołowe, definiowane przez środek, promień, kąt początkowy i kąt rozwarcia, są obsługiwane przez format SVG, DXF i nasze narzędzie do rasteryzacji wektorowej PNG.
Jeżeli łuki kołowe są wyłączone, bazujemy na łukach eliptycznych, krzywych Beziera trzeciego stopnia i liniach, w tej kolejności.
Obsługiwane przez format SVG, DXF i nasze narzędzie do rasteryzacji wektorowej PNG, łuki eliptyczne są definiowane przez środek, oś główną i oś mniejszą, kąt obrotu, kąt początkowy i kąt rozwarcia.
Jeżeli łuki eliptyczne są wyłączone, bazujemy na krzywych Beziera trzeciego stopnia i liniach, w tej kolejności.
W przypadku jeśli jedna z krzywych wymaga zamiany na jeden lub więcej odcinków, jakość dopasowania można kontrolować w tej sekcji.
Jak wspomniano powyżej, wadą prawie wszystkich aparatów do rasteryzacji obrazów wektorowych jest dopuszczanie, aby kolor tła był widoczny między stykającymi się ze sobą kształtami, nawet jeśli w pierwotnej geometrii nie występują żadne odstępy. Zazwyczaj pokazuje się to jako cienkie białe linie krojące wynik na kawałki układanki.
Aby rozwiązać ten problem, możesz włączyć Wypełnianie luk, które umieszcza małe pociągnięcia za i między dotykającymi kształtami, używając średniego koloru dwóch przedmiotowych kształtów. Zapobiega to wyświetlaniu tła.
Jeżeli dla stylu rysowania wybrano tryb Obrysuj kształty lub Obrysuj krawędzie, styl obrysów można kontrolować w tej sekcji.