Saat ini saya mencoba memahami beberapa hal tentang rasterisasi grafik vektor dan berbagai cara penerapannya dalam berbagai jenis aplikasi.
Saya menguji dan membandingkan beberapa program dan memperhatikan bahwa ada perbedaan besar dalam cara berperilaku anti-aliasing dalam proses rasterisasi. Saya terutama tertarik pada perilaku rendering di Illustrator . Anda akan melihat alasannya dengan membaca lebih lanjut.
Untuk pengujian saya, saya menggunakan komposisi segitiga yang sangat sederhana yang disusun dalam segi enam yang tidak beraturan dengan warna yang berbeda.
Perangkat lunak grafik vektor
Berikut adalah tiga render grafik vektor yang sama di Illustrator, Affinity, dan Inkscape. (Gambar yang dihasilkan dalam Affinity dan Inkscape persis sama.)
Seperti yang Anda lihat ada garis putih yang tidak diinginkan di setiap tepi pada gambar yang diberikan dengan Affinity dan Inkscape. Anti-aliasing tidak mengisi area ini dengan warna solid yang menghasilkan celah kecil antara bentuk yang berdekatan.
Meskipun tidak ada celah dalam render Illustrator, tepi bentuk terlihat sehalus render Affinity.
Berikut adalah gambar yang menunjukkan area yang sama dari setiap gambar yang ditingkatkan.
Ada perbedaan yang sangat halus antara kedua gambar. Render Affinity sedikit lebih halus tetapi hampir tidak mungkin untuk melihat perbedaan ketika melihat gambar dalam ukuran aslinya.
Browser
Rendering SVG
Menampilkan gambar yang sama yang diekspor sebagai SVG di peramban terlihat sangat mirip dengan gambar raster yang dihasilkan oleh Affinity dan Inkscape.
Ada perbedaan yang sangat kecil di tepi anti-aliasing (yang tidak benar-benar layak ditampilkan di sini) tetapi rasterisasi SVG di browser umum berperilaku hampir sama.
Membusuk membusuk
Menguji rendering Illustrator sedikit lebih jauh, saya mencoba memisahkan bagian-bagian dari gambar saya dan mengekspornya secara individu kemudian menyusunnya kembali bersama-sama dengan perangkat lunak pengeditan raster.
Secara teori itu akan menghasilkan gambar yang sama seperti memiliki dalam satu bagian, tetapi hasilnya sedikit berbeda dengan menggunakan metode ini.
Seperti yang ditunjukkan, ketika dua bagian tersusun, ada celah kecil di antara mereka. Meskipun lebih halus, namun sangat mirip dengan grafik yang dibuat dalam Affinity.
Rendering poligon
Blender (perangkat lunak 3D)
Blender memungkinkan Anda untuk mengimpor file SVG dan memanipulasi mereka sebagai objek kurva. Berikut adalah grafik yang diimpor yang ditunjukkan pada viewport 3D. (Secara default material akan dipengaruhi oleh lampu di tempat kejadian. Memeriksa properti shadeless di panel properti material akan memungkinkan bentuk yang akan diberikan dengan warna aslinya.)
Ini adalah render yang dibuat dari SVG di dalam Blender.
Tidak ada celah di antara segitiga. Perangkat lunak 3D lainnya sangat mungkin bekerja dengan cara yang sama. Jadi Blender berperilaku seperti Illustrator , atau bukan? Mungkin sebaliknya?
Pertanyaan sesungguhnya
- Pustaka gambar vektor mana yang Illustrator gunakan di belakang layar?
- Mungkinkah Illustrator menggunakan semacam mesin rendering 3D? Apakah ini open source? (mungkin tidak?)
- Bisakah salah satu perpustakaan gambar vektor terkenal seperti Kairo dan Skia mencapai perilaku rendering yang sama? (Tidak ada celah antara bentuk)
- Apakah ada perpustakaan gambar vektor yang kurang dikenal di luar sana yang memiliki perilaku yang sama?
sumber
Jawaban:
Sejauh yang saya tahu Illustrator memiliki 2 atau 3 rasterizer berbeda. Pratinjau layar juga rentan terhadap artefak kesenjangan yang sama dengan acara Anda meskipun disetel untuk meminimalkan efek. Kiriman Anda tampaknya menyiratkan bahwa Anda tertarik pada hasil " seni yang dioptimalkan ".
Gambar 1 : Mode render ilustrator yang berbeda. Seni dioptimalkan di kiri dan diisyaratkan di kanan. Perhatikan bahwa petunjuk menunjukkan sedikit latar belakang. Saya tidak punya versi CC yang baru jadi saya tidak bisa menampilkan yang ketiga.
Bagaimana seni dioptimalkan bekerja saat itu
Mode render yang dioptimalkan seni hanyalah gambar tanpa antialiaksi yang diberikan pada resolusi yang lebih tinggi, yang kemudian mengalami penyaringan kotak . Ini disebut super sampling yang mahal. Filter kotak hanyalah nilai rata-rata sampel dalam kotak (piksel). Ini memang teknologi yang serupa dengan apa yang digunakan filter multi piksel dalam penggunaan blender render Anda. Anda dapat melakukan hal yang sama secara manual dan mendapatkan hasil yang sama.
Sebenarnya rendering yang Anda dapatkan dari form ilustrator tidak terlalu bagus. Ini diberikan dalam ruang nonlinier dan tidak diperbaiki untuk dan Anda bisa mendapatkan hasil yang lebih baik dengan bertukar ke filter orde tinggi dan komputasi dalam ruang warna linier. Semua metode multi sampel menunjukkan rendering yang benar sama (diberikan sampel yang cukup bahkan benar secara matematis).
Gambar 2 : Pemfilteran multi piksel, pada ilustrator kiri asli 'Art Optimized'. Di sebelah kanan gambar yang sama pada 16x16 piksel dengan filter Lanczos berlobus banyak dalam ruang linear . Pastikan zoom Anda 1: 1.
Masalah
Anda telah benar-benar menerima masalah sebenarnya dari generasi saat ini di layar renderers. Mereka mencoba menghindari multi-sampel yang mendukung perhitungan cakupan. Tapi itu tidak bisa berfungsi dengan sempurna! Hanya karena campuran alfa adalah:
Ketika dirantai tidak pernah mencapai 0 ketika dirantai di atas permukaan semitransparan sehingga latar belakang menunjukkan palung. Juga tidak tahu bagaimana cakupan didistribusikan sehingga akan melakukan kesalahan. Tidak ada jalan keluar dalam kasus non-tumpang tindih seperti ini. tetapi jika Anda membiarkan bentuk tumpang tindih maka perhitungan cakupan dapat diselesaikan (Lihat di sini ).
Pertanyaan lain Anda bisa mendapatkan hasil yang sama di mesin lain hanya dengan multisampling gambar yang tidak di-antialias. Anda tidak bisa mendapatkan efek rendering pada layar tanpa melakukan trik tumpang tindih karena mereka mengoptimalkan untuk kecepatan. Apakah ilustrator menggunakan 3D? CC baru mungkin tergantung pada interpretasi Anda tentang apa itu 3D. Masalah ini tidak ada hubungannya dengan 3D hanya tentang metode rekonstruksi sinyal sehingga tidak berlaku untuk pertanyaan sebenarnya.
sumber
Dan hanya untuk menambahkan: itu disebut artefak "conflation" dan inilah yang digunakan AntiGrain Geometry untuk bentuk senyawa rasterizer, lihat:
flash_rasterizer.png http://agg.sourceforge.net/antigrain.com/demo/flash_rasterizer.png
Juga, inilah yang diklaim NV Path Rendering untuk ditingkatkan:
Pengantar NV_path_rendering (hlm. 67) atau FAQ NV_path_rendering (# 29).
sumber