Apa itu proses rasterisasi vektor Illustrator?

18

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.

Gambar dasar

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.)

Gambar yang diberikan dalam alat editing grafik populer

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.

Tampilan kelas atas menunjukkan anti-aliasing

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.

File SVG dirender di browser

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.

Skema komposisi ulang gambar

Secara teori itu akan menghasilkan gambar yang sama seperti memiliki dalam satu bagian, tetapi hasilnya sedikit berbeda dengan menggunakan metode ini.

Hasil gambar yang dikomposisi ulang

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)

SVG dalam viewport Blender

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.

Render aktual di 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?
Astaga
sumber
4
Penyaji umum lainnya juga memiliki masalah keterasingan ini. Lihat w3.impa.br/~diego/projects/GanEtAl14/sample.html?contour .
lhf

Jawaban:

11

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 ".

Seni dioptimalkan versus pratinjau layar ilustrator

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).

masukkan deskripsi gambar di sini

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:

c0=c1α+c2(1-α)

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.

joojaa
sumber
1
BTW, untuk melihat lebih rinci mengapa alpha blending tidak "melakukan hal yang benar" dalam kasus-kasus seperti ini, lihat makalah ini: Menafsirkan Alpha oleh Andrew Glassner.
Nathan Reed
@NathanReed Akan terlihat thnx, tapi di sini sederhananya bahkan jika alpha bekerja dengan cakupan yang benar tidak akan tahu bagian mana yang menutupi piksel dan mana yang tidak. Jadi Dua lapisan dengan 50% alfa dapat berarti sepenuhnya buram atau hanya satu lapisan yang terlihat karena objek mengisi wilayah yang sama yang tidak kita ketahui.
joojaa
2
@ joojaa Ya itulah intinya yang dibuat oleh makalah ini: alpha dapat mewakili opacity, coverage, atau kombinasi keduanya. :)
Nathan Reed