Non-Photorealistic Rendering

Istilah “non-fotorealistik rendering” mungkin diciptakan oleh David Salesin dan Georges Winkenbach di kertas tahun 1994. Banyak peneliti menemukan terminologi yang akan memuaskan; beberapa istilahsebagai berikut:

Istilah “photorealism” berarti sesuatu yang berbeda untuk grafik peneliti daripada yang dilakukannya untuk seniman, yang merupakan sasaran konsumen NPR teknik. Bagi para seniman, mengacu pada sebuah sekolah lukisan yang berfokus pada mereproduksi efek lensa kamera, dengan segala distorsi dan hiper-refleksi yang melibatkan. Untuk grafik peneliti, hal ini merujuk ke gambar yang secara visual dapat dibedakan dari kenyataan. Bahkan, grafik peneliti benjolan jenis distorsi visual yang digunakan oleh pelukis photorealist ke non-photorealism.

Menggambarkan sesuatu dengan apa yang bukan merupakan masalah. Perbandingan setara mungkin adalah “non-gajah biologi”, atau “non-geometris matematika”. NPR peneliti telah menyatakan bahwa mereka mengharapkan istilah pada akhirnya akan menghilang, dan digantikan dengan istilah yang lebih umum “komputer grafis”, dengan “fotorealistik grafis” digunakan untuk menggambarkan grafik komputer tradisional.

Banyak teknik yang digunakan untuk membuat ‘non-fotorealistik’ gambar tidak teknik rendering. Mereka adalah pemodelan teknik, atau pasca-teknik pemrosesan. Sedangkan yang terakhir datang untuk dikenal sebagai ‘rendering berbasis gambar’, sketsa teknik berbasis model, tidak bisa secara teknis termasuk dalam pos ini, yang sangat merepotkan bagi penyelenggara konferensi.

Konferensi pertama pada Non-fotorealistik Animation dan Rendering termasuk diskusi tentang nama-nama alternatif yang mungkin. Di antara yang diusulkan adalah “ekspresif grafis”, “artistik rendering”, “non-realistis grafis”, “seni berbasis rendering”, dan “psikografis”. Semua istilah ini telah digunakan dalam makalah penelitian tentang berbagai topik, tetapi istilah NPR tampaknya telah tetap diambil terus.

Pengenalan Non-fotorealistik 3D Rendering:

Siluet dan Outline

Dalam catatan ini, kita survei beberapa alat dasar yang digunakan untuk keperluan non-fotorealistik render 3D. Kami akan mendeteksi terutama berfokus pada objek garis besar bentuk: siluet, batas-batas, dan lipatan. (Hatching dan shading, yang juga sangat penting untuk berkomunikasi bentuk)  Algoritma dalam bagian ini dapat dibagi menjadi algoritma yang beroperasi dalam ruang gambar (2D), dan algoritma yang beroperasi di dunia ruang (3D).

Gambar-ruang non-fotorealistik rendering menggunakan algoritma yang diberikan (dan, dengan demikian, mencicipi) gambar, dan dibatasi oleh ketepatan gambar. Namun, ruang gambar siluet deteksi  cukup banyak untuk aplikasi. Contohnya  algoritma yang beroperasi di 3D dijelaskan dalam Bagian 3.

Beberapa siluet algoritma yang paling sederhana diperkenalkan oleh Gooch et al. Sebuah metode yang terkait dengan Raskar dan Cohen  memungkinkan variabel-segmen garis panjang lebih jelas.

Menguraikan Dengan Garis Tepi Deteksi

Sebuah cara yang sangat sederhana untuk menghasilkan gambar garis dari sebuah scan 3D untuk membuat scan dari sudut pandang yang diinginkan, mendeteksi tepi dalam gambar, dan menampilkan tepinya. Namun, tepi biasanya aphotograph tidak sesuai dengan tepi siluet yang kita ingin menggambarkan. Misalnya, permukaan yang sangat terstruktur akan menghasilkan banyak sisi yang tidak relevan dengan objek bentuk. Demikian pula, tidak ada tepi yang terdeteksi antara dua objek yang saling tumpang tindih dengan warna yang sama.

Peta Kedalam

Cara yang lebih baik untuk menghasilkan siluet adalah untuk membuat gambar, ekstrak kedalaman peta, dan menerapkan tepi detektor ke peta kedalam (Gambar 1 (a, b)). Gambar kedalaman peta di mana intensitas dari suatu pixel adalah sebanding dengan kedalaman titik dalam scan. Gagasan di balik metode ini adalah bahwa variasi kedalaman antara piksel yang berdekatan biasanya kecil melalui satu objek, tetapi besar antara obyek.

Memetakan Normal

Sebuah masalah dengan metode ini adalah bahwa hal ini tidak mendeteksi batas antara objek-objek yang berada dikedalaman yang sama, juga tidak mendeteksi lipatan. (Dalam istilah yang lebih formal, itu hanya dapat mendeteksi permukaan diskontinuitas.) Kita dapat menambah siluet tepi dihitung dengan kedalaman peta dengan menggunakan permukaan normal juga. Kami akan melakukan ini dengan menggunakan peta normal, gambar yang mewakili permukaan normal pada setiap titik pada objek. Nilai-nilai di masing-masing (R, G, B) warna komponen dari sebuah titik pada peta normal sesuai dengan (x, y, z) permukaan normal pada titik. Untuk menghitung peta normal untuk sebuah objek dengan paket grafis, kita dapat menggunakan berikut

prosedur. Pertama, kita menetapkan objek warna putih, dan properti bahan untuk meredakan refleksi. Kami kemudian letakkan lampu merah pada sumbu X, lampu hijau pada sumbu Y, dan cahaya biru pada sumbu Z, semua menghadap ke objek. Selain itu, kami menempatkan lampu dengan intensitas negatif pada sisi yang berlawanan masing-masing sumbu. Kami kemudian menjadikan adegan untuk menghasilkan peta normal. Setiap cahaya akan menerangi titik pada benda sebanding dengan perkalian titik dari permukaan normal dengan cahaya’s sumbu. (Jika lampu negatif tidak tersedia, lalu dua rendering berlalu akan dibutuhkan.) Contoh ditunjukkannpada Gambar 1 (c, d). Kemudian kita dapat mendeteksi tepi di peta normal. Tepi ini mendeteksi perubahan dalam orientasi permukaan, dan dapat dikombinasikan dengan tepi peta kedalaman untuk menghasilkan gambar siluet yang cukup baik (Gambar 1 (e)). Metode-metode ini bersama-sama mendeteksi C0 dan C1 diskontinuitas pada gambar.

Gambar 1: Garis Besar gambar dengan image processing. (a) Kedalaman peta. (b) tepi peta kedalaman. (c) Normal peta. (d) tepi peta normal. (e) tepi gambar gabungan. (Lihat juga Pelat Warna bagian catatan saja.)

Jika kita berniat hanya untuk membuat gambar sebagai garis gelap, maka tepi gambar ini cukup. Jika kami ingin membuat siluet sebagai kurva dengan semacam atribut, seperti cat tekstur atau ketebalan yang berbeda-beda, atau jika kita ingin memodifikasi garis kualitas, maka kita harus mengubah ekstrak kurva dari tepi peta. Metode untuk melakukan hal ini dijelaskan oleh Curtis dan Correa et al. Saito dan Takahashi juga mendiskusikan beberapa heuristik untuk memodifikasi tampilan dari tepi gambar. Untuk banyak aplikasi, teknik yang telah dijelaskan dalam bagian ini cukup. Namun, mereka melakukan pembatasan berdasarkan bahwa informasi penting tentang scan 3D dibuang selama rendering, dan informasi ini tidak dapat direkonstruksi dari gambar 2D saja. Misalnya, permukaan yang sangat foreshortened akan tampak terputus-putus. Ini berarti bahwa Anda harus membuat manual tweak parameter pengolahan gambar untuk setiap model. Selain itu, terdapat  yang mendasar keterbatasan; Gambar 1 (f) menunjukkan patologis kasus sulit untuk algoritma ini: tidak satu pun dari permukaan atau tekstur functionals kita gambarkan akan mencari sudut lipatan. Dalam bagian berikutnya, kita menggambarkan garis menghitung algoritma yang tepat.

Gambar 2: efek menggunakan deteksi tepi. (a) Normal peta yang dibagi Venus model.  (b) gambar gaya ukiran kayu yang dihasilkan dari tepi peta normal. Tajam dalam mesh menghasilkan tanda menetas. (c) sumi-e gaya gambar. Streak baris disebabkan oleh sampling dalam kedalaman buffer.

Gambar 3: Garis deteksi model yang lebih kompleks. (a) Kedalaman peta. (b) Kedalaman tepi peta. (c) Normal peta. (d) Normal tepi peta. (e) Gabungan kedalaman dan normal tepi peta.

Apa itu Silhouette?

Sebelum kita melanjutkan, kita perlu membuat definisi formal siluet. Untuk poligonal jerat, siluet terdiri dari semua sisi yang menghubungkan kembali menghadap (tak terlihat) poligon yang menghadap ke depan (mungkin terlihat) poligon. Untuk permukaan halus, siluet dapat didefinisikan sebagai permukaan orang.

poin xi dengan permukaan ni normal tegak lurus ke tampilan vektor (Gambar 4):

ni * (xi – C ) = 0

di mana C adalah pusat kamera. Perhatikan bahwa definisi ini tidak menyebutkan visibilitas; sebuah titik yang tersumbat oleh objek lain mungkin masih menjadi titik siluet. Dalam hampir setiap kasus, kita render hanya tertarik pada segmen yang terlihat siluet kurva, atau di render tak kasat mata bagian dengan garis yang berbeda kualitas. Dalam diskusi ini, kami akan berfokus pada proyeksi perspektif. Untuk proyeksi ortogonal, semua tampilan vektor sejajar, dan persamaan dapat ditulis sebagai ,di mana tampilan v adalah vektor.

Gambar 4: Untuk permukaan halus, siluet adalah himpunan titik-titik yang normal permukaan tegak lurus ke tampilan vektor.

Poligonal Meshes

Untuk poligonal mesh, siluet persis seperangkat tepi jala yang menghubungkan menghadap ke depan poligon dan back-menghadap poligon. Metode yang biasa digunakan untuk menghitung siluet adalah iterate atas setiap mesh tepi dan periksa normal dari wajah yang berdekatan. Ini harus dilakukan loop setiap kali perubahan posisi kamera. Pengujian setiap mesh tepi cukup mahal. Kita dapat mempercepat oleh pengujian ini hanya beberapa pinggirnya. Markosian et al. menggambarkan algoritma acak yang dapat menemukan sebagian besar terlihat siluet pinggiran di tingkat interaktif. Algoritma mereka didasarkan pada pengamatan yang hanya sebagian kecil dari tepi jala terlihat siluet tepi. Dengan demikian, kita dapat secara acak memilih beberapa tepi untuk pengujian, daripada menguji seluruh mesh. Silakan lihat kertas mereka untuk mendapatkan rincian tentang yang tepi untuk menguji. Algoritma ini tidak dijamin untuk menemukan setiap siluet tepi, tetapi akan menemukan paling mendekati. Untuk proyeksi ortografi, mungkin untuk secara efisien menemukan siluet menggunakan peta Gaussian.

Permukaan Halus

Dalam bagian ini, kami akan menjelaskan metode untuk menghitung siluet permukaan halus. Ini sering diinginkan untuk menghasilkan gambar-gambar permukaan yang mulus, bukan hanya polyhedral. Dua yang paling populer representasi permukaan NURBS dan pembagian permukaan. Keduanya representasi ini didasarkan pada mesh polyhedral; yang sebenarnya mendekati permukaan halus (atau interpolates) sebuah mesh. Selanjutnya, adalah mungkin untuk menghitung permukaan normal dan prinsip lekukan pada setiap permukaan point2. Diskusi kita di sini akan difokuskan pada representasi permukaan ini. Untuk diskusi implisit permukaan, lihat.

Gambar 5: (a) A poligonal mesh (b) permukaan halus didefinisikan oleh mesh

Untuk mempermudah, kami hanya akan membahas permukaan diperkirakan dengan segitiga mesh (Gambar 5). Sebuah segiempat mesh dapat dikonversi menjadi sebuah segitiga mesh dengan memisahkan masing-masing segiempat menjadi dua segitiga. Atau, ide-ide ini dapat diperluas untuk poligonal jerat, namun lebih banyak lagi kasus harus ditangani. Langkah pertama  untuk menghitung perkalian titik normal di ni normal dari permukaan halus dengan tampilan vektor pada setiap mesh vertex :

Kami lalu menghitung tanda perkalian titik untuk setiap vertex:

Ingat bahwa tujuan kita adalah untuk menemukan titik-titik permukaan dengan . Karena jumlah ini bervariasi untuk permukaan halus, kita hanya bisa melihat semua pasangan dari simpul yang berdekatan yang berbeda tanda-tanda. Diberi tepi mesh antara titik xi dan xj, jika , maka harus ada siluet titik pada tepi. (Hal ini dapat ditunjukkan dengan mencatat bahwa permukaan tampilan normal dan vektor baik terus-menerus di atas permukaan, sehingga perkalian titik mereka juga harus terus-menerus. Pasti ada yang nol-penyeberangan antara positif dan ni lai negatif dari fungsi kontinu.) Kita dapat perkiraan posisi titik siluet oleh interpolating linear yang vertecies:

Gambar 6: Aproksimasi kurva siluet untuk permukaan yang halus. Permukaan yang halus diwakili oleh sebuah segitiga mesh yang dekat ke permukaan. (a) Silhouette poin dihitung pada masing-masingtepi oleh interpolasi linear. Sebuah segmen garis dibuat dengan menghubungkan titik-titik. (b) Jalur segmen dihubungkan untuk membentuk kurva piecewise-linier.

Kita dapat menghubungkan titik-titik ke dalam siluet siluet kurva. Misalkan suatu segitiga mesh mengandung tanda perubahan. Karena sebuah segitiga hanya berisi tiga vertecies, hanya ada satu unik kasus (Gambar 6 (a)): satu dhuwur memiliki tanda berlawanan dari dua lainnya vertecies. Dalam kasus ini, dua sisi segitiga memiliki tanda perubahan, dan yang lainnya tidak. Untuk perkiraan siluet ini segitiga, kita hanya dapat menghitung siluet titik pada dua sisi, dan menghubungkan mereka dengan garis segmen. Kami kemudian ulangi ini untuk setiap segitiga dengan tanda perubahan, dan menghubungkan semua pasang baris segmen yang berbagi titik akhir (Gambar 6 (b)). Ini menghasilkan piecewise-pendekatan linear siluet permukaan halus.

Jika mesh memiliki segitiga besar, maka pendekatan siluet akan sangat kasar. Juga mungkin untuk siluet dari permukaan halus akan terjawab sepenuhnya oleh metode ini. Solusi ini adalah untuk memperbaiki jala, dalam kata lain, untuk menghasilkan sebuah mesh dengan segitiga kecil yang sesuai yang sama permukaannya halus. Metode khusus pencabangan tergantung pada jenis permukaan digunakan. Subdivisi dapat diterapkan berulang kali, sampai resolusi yang diinginkan tercapai. Selanjutnya, jika kita hanya tertarik pada jala siluet, maka kita dapat menggunakan pembagian adaptif memperbaiki permukaan hanya dekat siluet. Kriteria subdivisi yang jelas adalah untuk membagi setiap segitiga yang telah mengandung sebuah siluet. Namun, ini akan kehilangan siluet yang terkandung seluruhnya dalam satu segitiga. Sebuah kondisi yang cukup untuk membagi sebuah segitiga jika ada perubahan tanda di mana pun di mesh kontrol untuk sebuah segitiga. (Jika tidak, mesh control nya 1-1 dalam gambar pesawat, dan tidak bisa menghasilkan siluet.)

Gambar 7: (a) Silhouette dari permukaan yang halus. (b) pandangan Side siluet. Perubahan visibilitas dalam gambar ini disebabkan oleh katup.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: