7 7.1
Bayangon don Tekstur Pendahuluan Pembuatan bayangan dan pemetaan tekstur merupakan dua tambahan utama terhadap bayangan sederhana yang mencoba meningkatkan kenyataan obyek bayangan tiga-dimensi. Dua perluasan tersebut diimplementasikan oleh bermacam-macam algoritma dan, dengan pengecualian perhitungan bayangan dalam pelacakan sinar dan radiosity, tidak satupun fenomena yang digabungkan dalam model pencahayaan/pencerminan teoritis. Tidak seperti bayangan, tidak ada teknik khusus yang lebih dominan dan pilihan sebuah metode yang sesuai, khususnya dengan algoritma tekstur, yang dimotivasi oleh keinginan akan pengaruh yang dapat dtlihat. Algoritma bayangan dibedakan oleh dua hal yakni metode yang digunakan dan jenis bayangan yang dihasilkan. Metode yang digunakan dalam algoritma tekstur tersebut juga bermacam:-macamsehingga mereka hanya dapat dikategorisasikan sesuai dengan pengaruh akhir. Meskipun beberapa tinjauan mengenai kedua bidang tersebut akan diberikan, bab "iniakan memusatkan perhatian pada pengimplementasian metode yang telah tenar.
7.2
Fungsi bayangan Bayangan merupakan sesuatu yang penting, dan agak diabaikan, penambahan terhadap kumpulan teknik yang digunakan untuk memvisualisasikan obyek tigadimensi dalam grafik komputer. Bayangan sederhana (lihat Bagian 7.3) dapat digunakan untuk membuyarkan pengaruh penglihatan dari obyek yang mengambang di atas tanah, dan mereka jauh lebih murah untuk menghitung dan lebih perlu bagi gambar yang sederhana daripada, misalnya, ketelitian pemodelan pencahayaan ambient. 301
302
Pengantar Komputer Graftk
Gambar 7.1 Intensitas cahaya yang dipantulkan daIam luasan yang berbayang: pengaruh umbra dan penumbra disebabkan oleh ukuran relatif sebuah sumber dan sebuah obyek.
Plate 9 mendemonstrasikan pengaruh ini, dimana bayangan tampak melayani dua fungsi. Pertama, mereka "melabuh" bola ke bidang hijau, meniadakangraftk obyek komputer kelihatan mengambang di ruang; kedua, mereka menekankan perubahan arah sumber cahaya. Bayangan berubah-ubah sebagai fungsi dari pencahayaan lingkungan. Mereka dapat bertebing keras atau bertebing halus dan berisi sebuah luasan 'umbra' dan 'un umbra'. Ukuran relatifumbra/penumbra adalah fungsi dari ukuran dan bentuk sumbercahayadanjaraknya dari obyek (Gambar 7.1). 'Umbra' adalah bahwa bagian dari sebuah bayangan sepenuhnya terpotong dari sumber cahaya, sedangkan 'penumbra' adalah sebuah luasan yang menerima cahaya dari sumber. Sebuah 'penumbra' mengitari sebuah 'umbra' dan di sana selalu ada perubahan intensitas yang berangsur-angsur dari 'penumbra' menuju 'umbra'. Di dalam graftk komputer, jika kita tidak memodelkan sumber pencahayaan, kemudian
biasanyakita menganggapsumber cahaya titik padajarak yangjauh, dan ang-
Bayangan dan Tekstur
303
gaplah dalam kasus yang paling sederhana bahwa obyek tersebut menghasilkan 'umbrae' dengan edge yang tajam. Ini masih hanya perkiraan. Meskipun sumber cahaya pada jarak yang jauh hampir menghasilkan sinar-sinar yang sejajar, di sana masih ada cahaya yang berada di belakang obyek karena hamburan dan bayangan akan berkurang. Pengaruh inijuga bermacam-macamterhadap bayangan yang dibuat. Pengaruh ini, yang menentukanmutu sebuah bayangan, memungkinkan kita untuk mengambil kesimpulan yang berhubungan dengan sifat alami dari sumber cahaya, dan mereka jelas penting bagi kita sebagai manusia yang merasakan lingkungan tiga-dimensi. Sebagai contoh, bayangan yang kita lihat di luar tergantung pada waktu dan apakah langit mendung atau tidak. Sejauh ini kita kita hanya membicarakan sumber primer tunggal. Begitu kita memiliki sumber jarnak, semua dengan intensitas yang berbeda, dan permukaan yang memantulkan (yang dapat diperlakukan sebagai sumber sekunder), kemudian bayangan harus dianggap sebagai bagian dari masalah pencahayaan global. Sebagai gantinya, sesuatu yang anggun namun sangat mahal, metode untuk menghasilkan bayangan diberikan sebagai bagian dari algoritma pelacakan cahaya dalam Bab 8.
7.2.1
Grofikkomputer don bayongon Sejumlah dampak dari bayangan digali dalam fenomena yang dihasilkan komputer. Kini ini dibahas. Sebuah bayangan dari poligon A yang menimpa poligon B karena sebuah sumber cahaya titik dapat dihitung dengan memproyeksikan poligon A pada bidang yang berisi poligon B. Posisi sumber cahaya titik digunakan sebagai pusat proyeksi. Tidak ada bayangan yang terlihat jika titik pandang berimpit dengan sumber cahaya (tunggal). Sebuah bentuk setara dari pemyataan ini adalah bahwa bayangan dapat dianggap sebagai luasan yang tersembunyi dari sumber cahaya, yang secara tidak langsung menjelaskan bahwa algoritma permukaan tersembunyi yang dimodifikasi dapat digunakan untuk menyelesaikan masalah bayangan. Jika sumber cahaya, atau sumber cahaya, berupa sumber titik maka di sana tidak ada penumbra untuk menghitung dan bayangan tersebut memiliki edge yang jelas. Untuk gambar yang tetap, bayangan tetap dan tidak ada perubahan begitu titik pandang berubah. Jika posisi relatif obyek dan sumber berubah, maka bayangan
304
Pengantar Komputer Grafik
harus dihitung lagi. Ini menempatkan biaya tambahan yang besar pada animasi tiga-dimensi dimana bayangan penting bagi kedalarnan dan tanggapan pergerakan. Karena tingginya biaya komputasi, bayangan diabaikan dengan cara yang harnpir sarna dengan pemetaan tekstur - begitu mutu ditingkatkan. Mereka tidak dipandang sebagai kebutuhan dan, dibandingkan dengan algoritma bayangan, ada sedikit perhatian mengenai mutu bayangan. Kebanyakan algoritma pembuatan bayangan menghasilkan edge yang jelas, bayangan sumber cahaya titik. Dengan pengecualian pembangkitan bayangan dalarn program pelacakan sinar, kebanyakan algoritma hanya berkenaan dengan model jaring poligon.
7.3
Bayangan sederhana pada bidang tanah Metode yang sangat sederhana mengenai pembangkitan bayangan dilaporkan oleh Blinn (1988). la cukup untuk gambar obyek tunggal yang membuat bayangan pada sebuah bidang tanah yang datar. Metode tersebut hanya melibatkan penggarnbaran proyeksi dari suatu obyek pada bidang tanah. Jadi ini terbatas pada garnbar obyek tunggal, atau garnbar obyek banyak dimana obyek tersebut cukup terisolasi sedemikian rupa sehingga bukan untuk membuat bayangan pada satu sarna lain. Proyeksi bidang tanah tersebut mudah diperoleh dari sebuah transformasi linear dan poligon yang diproyeksikan dapat diperlakukan sebagai sebuah poligon (pada intensitas yang hampir gelap) dengan algoritma penyangga-Z. Jika dibuat perkiraan pencahayaan yang biasa - sebuah sumber titik tunggal maka kita memiliki sinar cahaya yang sejajar pada jarak yang tak terhingga yang searah L = (Xt,YI,zI)seperti yang diperlihatkan pada Gambar 7.2. Sembarang titik pada obyek P = (xp,yp,zp)akan membuat sebuah bayangan pada S = (xsw,y.'w,O). Perhatikan geometri dalam gambar tersebut, kita memiIiki:
-
S=P-aL dan ditentukan bahwa Zsw= 0, kitamemiIiki: 0= zp - aZI a = Zp/Zl dan Xsw= xp - (Zp/Zl) Xl
Bayangan dan Tekstur
305
Gambar 7.2 Bayangan bidang tanah untuk obyek tunggal.
Ysw= Yp Sebagai
- (Zp/Zl)
Yl
sebuah transformasi
homogen
ini adalah:
o o o o Catat dari sini bahwa ini semudah menghasilkan bayangan pada sisi belakang yang tegak atau bidang sisi. Blinnjuga memperlihatkan (Blinn, 1988) bagaimana untuk memperluas gagasan ini untuk menangani sumber cahaya yang terletak pada jarak yang tak terhingga dari suatu obyek. Jenis perkiraan bayangan ini (pada sebuah bidang tanah yang datar) disukai oleh para pembuat animasi tradisional dan penggunaannya tentu saja meningkatkan pergerakan dalam animasi komputer tiga-dimensi.
306
Pengantar Komputer Grafik
7.4
Algoritma bayangan Tidak seperti algoritma penghilangan pennukaan yang tersembunyi, dimana salah satu atau dua algoritma lebih mendominasi dan metode yang lain hanya digunakan dalam kasus khusus, tidak ada calon yang terkenal yang dimunculkan sebagai puncak algoritma bayangan. Kenyataannya, perhitungan bayangan merupakan bidang yang agak diabaikan dari grafik komputer. Apa yang mengikuti, tentu saja, uraian yang jelas mengenai empat pendekatan utama. Pembangkitan bayangan dalam pelacakan sinar secara terpisah diuraikan dalam Bab 8.
7.4.1
Memproyeksikan poligon/garis scan Pendekatan ini dikembangkan oleh Appel (1968) dan Bouknight dan Kelley (1970). Penambahan bayangan kepada sebuah algoritma garis scan memerlukan tahap pemrosesan terlebih dahulu yang menyusun sebuah struktur data sekunder yang menggandengkan semua poligon yang bisa membayangi sebuah poligon tertentu. Pasangan bayangan - sebuah poligon bersama-sama dengan poligon yang mungkin ia bayangi - dideteksi oleh pemroyeksian semua poligon pada sebuah bola yang berpusat pada sumber cahaya. Pasangan poligon yang tidak dapat berinteraksi dideteksi dan dibuang. Ini merupakan langkah penting karena untuk sebuah gambar yang berisi n poligon jumlah bayangan yang mungkin diproyeksikan adalah n(n
- I).
Algoritma tersebut memproses struktur data sekunder secara serentak dengan sebuah proses pengubahan scan nonnal untuk menentukan apakah sembarang bayangan menimpa poligon yang dihasilkan segmen garis scan yang dapat dilihat yang sedang diperhatikan. Jika tidak ada poligon(-poligon) bayangan maka algoritma garis. scan tersebut berlangsung normal. Untuk poligon yang sedang berlangsung, jika ada poligon bayangan ada maka, dengan menggunakan sumber cahaya sebagai pusat proyeksi, bayangan !ersebut dihasilkan oleh pemroyeksian pada bidang yang berisi poligon yang sedang berlangsung. Kemudian pengubahan scan normal berlangsung serentak dengan sebuah proses yang menentukan apakah sebuah pixel yang sedang berlangsung dalam bayangan atau tidak. Kini terjadi tiga kemungkinan: (1) Poligon bayangan tidak mencakup segmen garis scan yang dihasilkan dan keadaan tersebut identikdengan sebuah algoritmatanpa bayangan.
Bayangan dan Tekstur
307
(2) Poligon(-poligon) bayangan sepenuhnya mencakup segmen garis scan yang dapat dilihat dan berlangsung proses pengubahan scan, akan tetapi intensitas pixel tersebut dimodulasi oleh sejumlah yang tergantling pada sejumlah bayangan yang sedang mencakup segmen tersebut. Untuk sebuah sumber cahaya tunggal segmen tersebut berupa bayangan atau bukan. (3) Sebuah poligon bayangan khususnya mencakup segmen garis scan yang dapat dilihat. Dalam kasus ini segmen tersebut dibagi-bagi dan proses tersebut diterapkan secara rekursif sehingga diperoleh sebuah penyelesaian. Sebuah pernyataan dari kemungkinan ini diperlihatkan dalam Gambar 7.3. Ini berurutan sepanjang garis scan: (a) Poligon A dapat dilihat, oleh karena itu ia dirender. (b) Poligon B dapat dilihat dan dirender. (c) Poligon B dibayangi oleh poligon A dan dirender pada intensitas yang dikurangi dengan sesuai. (d) Poligon B dapat dilihat dan dirender.
Gambar 7.3 Poligon yang menerima sebuah bayangan dari poligon yang lain yang digandengkan dalam sebuah struktur data sekunder. Segmen garis scan kini dilukiskan oleh batas proyeksi titik pandang dan batas bayangan.
308
Pengantar Komputer Grafik
7.4.2
Volume bayangan Pendekatan volume bayangan pada awalnya dikembangkan oleh Crow (1977) dan selanjutnya diperluas oleh yang lain. Secara khusus, Brotman dan Badler (1984) menggunakan gagasan tersebut sebagai dasar untuk menghasilkan bayangan lembut, jadi, bayangan dihasilkan oleh sebuah sumber cahaya yang didistribusikan. Sebuah volume bayangan adalah volume yang tidak dapat dilihat dari sapuan ruang oleh bayangan pada sebuah obyek. Ini adalah volume yang tidak terbatas yang ditentukan oleh garis yang keluar dari sebuah sumber cahaya titik melalui puncak dalam obyek tersebut. Gambar 7.4 membawa gagasan mengenai sebuah volume bayangan. Sebuah volume bayangan yang terbatas diperolehdenganmemperhatikanperpotonganvolume tak terbatasdenganvolume pandang. Volume pandang dihitung pertama dengan mengevaluasi kontur atau bayangan edge hitam dari obyek tersebut, seperti yang terlihat dari sumber cahaya. Edge kontur dari sebuah obyek sederhana diperlihatkan dalam Gambar 7.4(a). Sebuah edge kontur pada sebuah obyek adalah edge yang dibuat pada salah satu edge atau lebih yang dihubungkan dari poligon yang dimiliki obyek tersebut. Sebuah edge kontur memisahkan poligon yang dapat melihat sumber cahaya dari poligon yang tidak dapat melihat sumber cahaya. Poligon ditentukan oleh sumber cahaya dan edge kontur menentukan permukaan batas volume bayangan seperti yang diperliahtkan dalam Gambar 7.4(b). Jadi masing-masing obyek, dianggap berhubungan dengan sebuah sumber cahaya titik, menghasilkan sebuah obyek volume bayangan yang dibuat dari sebuah himpunan poligon bayangan. Catat bahwa poligon bayangan ini tidak dapat dilihat dan seharusnya tidak dikacaukan dengan poligon bayangan yang dapat dilihat yang diuraikan dalam bagian berikutnya. Poligon bayangan ini mereka digunakanuntukmenentukanbayangan- mereka tidak dirender. Pola ini dapat diintegrasikan menuju sejumlah algoritma penghilang permukaan yang tersembunyi dan poligon yang menentukan volume bayangan diproses bersama-sama dengan poligon obyek, kecuali bahwa mereka dianggap tidak dapat dilihat. Sebuah perbedaan dibuat antara poligon 'tampang-depan' dan poligon 'tampang-belakang' dan hubungan antara poligonbayanganyang diberi label dengan cara ini dan poligon obyek diuji. Sebuah titik pada sebuah obyek dianggap berada dalam bayangan jika ia berada dibelakang poligon bayangan tampang depan dan di depan sebuah poligontampang-belakang.Jadijika ia terdapatdidalam
Bayangan dan Tekstur
309
(a) Light source
(b)
Silhouelle edge polygon Semi-infinite shadow volume produced by polygon Intersection of semi-infinite shadow \'olume with view volume
Gambar 7.4 Lukisan pembentukan sebuah volume bayangan. (a) Edge bayangan hitam dari sebuah obyek. (b) Volume bayangan tertentu yang ditentukan oleh sebuah poligon edge bayangan hitam, sebuah sumber cahaya titik dan sebuah volume pandang.
sebuah volume bayangan.Jadi sebuah poligon bayangan tampang-depan meletakkan segala sesuatu dibelakangnya didalam bayangan dan sebuah poligon bayangan tampang-belakang menghapus pengaruh poligon bayangan tampang-depan. Sebagaimana artinya, algoritma tersebut paling mudah diintegrasikan dengan prioritas-kedalaman algoritma penghilangan permukaan yang tersembunyi. Per-
310
Pengantar Komputer Grajik
Shadow polygons
Vi~wpoint
Front facing
/ Shadow \olum~
/
o
/
o
Valueof shado\o' count~r
Gambar 7.5 Poligon bayangan tampang-depan dan tampang-belakang dan nilai penyacah bayangan.
hatikan pengoperasian algoritma tersebut untuk sebuah pixel khusus. Kita perhatikan sebuah vektor atau sinar dari titik pandang melalui pixel dan melihat hubungan antara poligon yang sebenamya dan poligon bayangan sepanjang vektor ini. Untuk sebuah pixel sebuah penyacah dipertahankan. Ini diinisialisasi 1 jika titik pandang telah berada di dalam bayangan, jika tidak O. Begitu kita mengurutkan daftar poligon dengan urutan kedalaman yang semakin rendah, penyacah tersebut dinaikkan bila sebuah poligon tampang-depan dilewatkan dan diturunkan bila sebuah poligon tampang-belakang dilewatkan. Nilai penyacah ini mengatakan kepada kita, bila kita menghadapi sebuah poligon yang sebenamya, apakah kita berada didalam sebuah volume bayangan. Secara skematis ini diperlihatkan dalam Gambar 7.5. Brotman dan Bradler menggunakan algoritma penyangga-Z yang ditingkatkan dan pendekatan ini memiliki dua keuntungan yang berarti:
Bayangan dan Tekstur
311
(1)
manfaat pendekatan rendering penyangga-Z dipertahankan, dan
(2)
metode mereka dapat digunakan untuk menghitung bayangan lembut atau pengaruh umbra/penumbra.
Nilai yang hams dibayarkan bagi penggunaan sebuah pendekatan volume bayangan sehubungan dengan penyangga-.Z adalah biaya memori. Penyangga-Z hams diperluas sedemikian rupa sehingga masing-masing lokasi pixel adalah sebuah rekaman dari lima medan. Begitu po ligon bayangan dirender mereka memodifikasi penyacah di dalam sebuah rekaman pixel dan sebuah keputusan dapat dibuat apakah sebuah titik berada di dalam bayangan atau tidak. Bayangan lembut dihitung dengan pemodelan sumber cahaya yang terdistribusi sebagai larik sumber titik dan perhitungan penggabungan secara linear yang disebabkan oleh masing-masing sumber titik. Pendekatan volume bayangan yang asli menempatkan kekangan yang ketat pada lingkungan basis data; kekangan yang paling serius adalah bahwa obyek harus berupa polihedron convex. Bergeron (1986) mengembangkan sebuah versi urn urn dari algoritma Crow yang mengatasi kekangan ini dan rnernungkinkan obyek concave dan poligon yang menembus.
7.4.3
Penurunanpoligan bayangan daritransfonnasi sumbercahaya Pendekatan ini telah dikernbangkan oleh Atherton, Weiler dan Greenberg (1978) dan mengandalkan pada kenyataan bahwa penerapan penghilangan perrnukaan yang tersembunyi terhadap pandangan dari surnber cahaya menghasilkan poligon atau bagian dari poligon yang berada didalam bayangan. la juga rnengandalkan algoritma pernotong poligon ruang obyek (untuk rnenghasilkan poligon bayangan yang merupakan bagian dari poligon yang ada) oleh Weiler dan Atherton (1977). Keuntungan yang diklaim dari pendekatan ini adalah bahwa ia beroperasi dalam ruang obyek. Ini berarti bahwa ia rnemungkinkan untuk memeras inforrnasi nurneris pada bayangan dari algoritma tersebut. Ini digunakan, rnisalnya, dalarn CAD arsitektur. Algoritma tersebut rneningkatkan struktur data obyek dengan poligon bayangan untuk menghasilkan sebuah file data bayangan yang lengkap. Kemudian ini dapat digunakan untuk menghasilkan sembarang pandangan obyek dengan bayangan. Jadi ini rnerupakan pendekatan yang bagus dalarn menghasilkan urutan
312
Pengantar Komputer Grafik
animasi dimana kamera yang sebenarnya berubah-ubah posisi, akan tetapi dimana posisi relatif dari obyek tersebut dan sumber cahaya masih tetap. Kerja dari algoritma tersebut diperlihatkan untuk sebuah contoh sederhana dalam Gambar 7.6. Sebuah poligon bayangan tunggal diperlihatkan agar jelas. Dengan mengacu pada Gambar 7.6, langkah pertama dalam algoritma tersebut adalah menggunakan sebuah transformasi sedemikian rupa sehingga obyek atau gambar tersebut dipandang dari posisi sumber cahaya. Kemudian penghilangan permukaan yang tersembunyi menghasilkan poligon yang dapat dilihat, jadi, poligon yang dapat dilihat sumber cahaya dan oleh karena itu tidak berada dalam bayangan. Ini apakah sempurna atau terpotong sebagaimana yang secara tidak langsung dijelaskan oleh garnbaran tersebut. Kemudian himpunan poligon ini digabungkan dengan poligon obyek yang asli, yang memberikan himpunan data yang berada didalam sistem koordinat yang sarna. Proses penggabungan himpunan ini menghimpunan poligon yang asH ditinghasilkan file data bayangan yang lengkap katkan oleh poligon bayangan untuk sebuah sumber cahaya tertentu. Kemudian pentransformasian basis data ke titik pandang yang diperlukan dan penggunaan penghilangan permukaan yang tersembunyi akan menghasilkan sebuah gambar dengan bayangan. Algoritma ini menggali kenyataan bahwa poligon bayangan adalah titik pandang bebas. Intinya, gambar tersebut diproses dua kali untuk penghilangan permukaan yang tersembunyi; sekali dengan menggunakan sumber cahaya sebagai sebuah titik pandang, yang menghasilkan poligon bayangan, dan sekali menggunakan penghilangan permukaan tersembunyi yang normal (dari sembarang titik pandang).
-
7.4.4
Bayangan penyangga-Z Kemungkinan pendekatan yang paling mudah untuk perhitungan bayangan, dan salah satu yang mudah diintegrasikan ke dalam perender yang berdasar penyangga-Z, adalah bayangan penyangga-Z yang dikembangkan oleh Williams (1978). Teknik ini memerlukan sebuah bayangan penyangga-Z yang terpisah untuk masing-masing sumber cahaya dan, dalam bentuk dasarnya, hanya cocok untuk sebuah gambar yang disinari oleh sebuah sumber cahaya. Alternatifnya, sebuah bayangan penyangga-Z tunggal dapat digunakan untuk banyak sumber cahaya dan algoritma tersebut dilaksanakan untuk masing-masing sumber cahaya, akan tetapi ini agak tidak efisien dan lambat.
Bayangan dan Tekstur
313
(.)
D (b)
(e)
(d)
(e)
(I)
Gambar 7.6 Penurunan poligon bayangan dari transformasi. (a) Obyek poligonal sederhana dalam pemodelan sistem koordinat. (b) Rencana pandangan memperlihatkan posisi sumber cahaya. (c) Penghilangan permukaan yang tersembunyi dari sumber cahaya sebagai titik pandang. (d) Poligon yang dapat dilihat dari (c) ditransformasikan kembali ke pemodelan sistem koordinat. (e) Bagian (a) dan (d) digabungkan untuk menghasilkan sebuah basis data yang berisi poligon bayangan. (f) Bagian (e) dapat menghasilkan sembarang pandangan dari obyek dengan bayangan.
314
Pengantar Komputer Grafik
Algoritma tersebut adalah sebuah proses dua langkah. Sebuah gambar dirender dan informasi kedalaman disimpan kedalam penyangga-Z bayangan dengan menggunakan sumber cahaya sebagai sebuah titik pandang. Tidilk ada intensitas yang dihitung. Ini menghitung kedalaman gambar dari sumber cahaya tersebut, dari poligon yang dapat dilihat sumber cahaya. Langkah yang kedua adalah merender gambar tersebut dengan menggunakan algoritma penyangga-Z. Proses ini ditingkatkan sebagai berikut. Jika sebuah titik dapat dilihat, sebuah transformasi koordinat digunakan untuk memetakan (xJ',z), koordinat dari titik dalam ruang layar tiga-dimensi (dari titik pandang), ke (x' J" ,z'), koordinat titik dalam ruang layar dari titik cahaya tersebut sbagai koordinat asal. (x' J") digunakan untuk mengindeks penyangga-Z bayangan dan nilai kedalaman yang berhubungan dibandingkan dengan z'. Jika z' lebih besar dari nilai yang disimpan dalam penyangga-Z bayangan untuk titik tersebut, maka sebuah permukaan lebih dekat ke sumber cahaya daripada titik yang ditinjau dan titik tersebut berada didalam bayangan, jadi digunakan intensitas bayangan; jika tidak titik tersebut dirender sebagai normal. Terlepas dari keperluan akan perluasan memori yang besar untuk algoritma penghilangan permukaan yang tersembunyi, algoritma tersebut juga memperluas ketidak efisiensiannya. Perhitungan bayangan dilakukan untuk permukaan yang selanjutnya dapat ditulis kembali - hanya seperti perhitungan bayangan.
Anti-aliasing dan penyangga-Z bayangan Bersamaan dengan algoritma penyangga-Z, penyangga-Z bayangan rentan terhadap aliasing benda buatan yang disebabkan karena pencuplikan titik. Terjadi dua kemungkinan aliasing. Pertama, pencuplikan titik secara langsung dalam fase pembuatan penyangga-Z bayangan menghasilkan benda buatan. Ini akan dapat dilihat sepanjang edge bayangan - kita menganggap bayangan dengan edge yang tegas yang dibuat oleh sebuah sumber cahaya titik. Masalah aliasing yang kedua tercipta pada saat pengaksesan penyangga-Z. Ini agak mirip dengan masalah yang ada dalam pemetaan tekstur (diuraikan dalam Bagian 7.5). Masalah ini muncul karena kita secara efektif memproyeksikan sebuah pixel yang meluas pada peta penyangga-Z bayangan. Secara skematis ini diperlihatkan dalam Gambar 7.7. Jika kita memperhatikan apa yang disebut pre-image pada sebuah pixel persegi didalam peta penyangga-Z bayangan maka ini akan, secara umum, berupa sebuah quadrilateral yang mencantumkan sejumlah pixel penyangga-Z bayangan.
Bayangan dan Tekstur
315
Ol>jc:ct
Light ~oun:e
Gambar 7.7 Pre-image sebuah pixel dalam penyangga-Z bayangan.
Ini adalah beberapa pemetaan pixel ke satu masalah pixel layar yang harus kita hadapi. Ini berarti bahwa sebuah pixel bisa sebagian didalam bayangan dan sebagian lagi tidak dan jika kita membuat keputusan biner maka akan terjadi aliasing. Jadi kita memperhatikan bagian pixel yang berada dalam bayangan dengan menghitung ini dari penyangga-Z bayangan. Bagian ini dapat dievaluasi dengan membandingkan z' pada himpunan pixel penyangga-Z bayangan yang
316
Pengantar Komputer Graftk
mana pixel layar memproyeksikan padanya. Kemudian bagian tersebut digunakan untuk memberikan intensitas bayangan yang sesuai. Kesimpulan dari proses ini adalah: (1) Untuk masing-masing pixel hitunglah empat nilai (x' y') yang berhubungan dengan empat titik sudut. Ini menentukan sebuah quadrilateral dalam ruang penyangga-Z bayangan. (2) Integrasikan informasi pada quadrilateral ini dengan membandingkan nilai z untuk pixel layar dengan masing-masing nilai z' dalam quadrilateral penyangga-Z bayangan tersebut. Ini memberikan bagian yang memantulkan luasan pixel dalam bayangan. (3) Gunakan bagian ini untuk memberikan intensitas yang diperlemah dengan sesuai. Pengaruh visual dari hal ini adalah bahwa edge yang tegas dari bayangan tersebut akan dilembutkan untuk pixel-pixel yang tidak memihak sebuah batas bayangan. Rincian lengkap dari pendekatan ini diberikan oleh Reeves, Salesin, dan Cook (1987). Nilai yang harns dibayarkan untuk anti-aliasing ini adalah peningkatan yang berarti dalam waktu pemrosesan. Teknik prefiltering (lihat Bagian 7.9.2) tidak dapat digunakan dan pola pencuplikan stokastik untuk pengintegrasian dalam pre-image pixel dalam peta penyangga-Z bayangan disarankan oleh Reeves, Salesin, dan Cook (1987).
7.5
Tekstur Pemetaan tekstur merupakan salah satu perkembangan pertama menuju pembuatan gambar dari obyek tiga-dimensi lebih menarik dan tampak lebih rumit. Gagasan aslinya untuk pemetaan tekstur adalah untuk mengurangi pengaruh plastik yang mengkilat yang dihasilkan oleh penggunakan model pantulan Phong sederhana dan agar memungkinkan obyek yang berbeda menampilkan sifat permukaan yang berbeda (terpisah dari perbedaan warna trivial). Dalam salah satu anggapan istilah 'tekstur' agak salah arti; dengan pengecualian dari pemetaan tonjolan ((Blinn, 1978) dan di bawah), yang memberikan kesan gangguan permukaan yang sebenarnya, semantik normal yang berhubungan dengan istilah tekstur, kebanyakan metode memodulasi warna permukaan dengan menggunakan motif yang berulang atau sebuah gambar yang diambildari
Bayangan dan Tekstur
317
bingkai. Tekstur pada obyek yang sebenamya bisanya menampiIkan kedua permisalnya rentetan tembakan pada sebuah mukaan clan pemodulasian wama pohon atau tekstur sebuah bahan pakaian yang berombak. Ada tiga pemikiran utama mengenai pemetaan tekstur:
-
(I)
Atribut atau parameter apakah dari model atau obyek yang dimodulasikan untuk menghasilkan pengaruh tekstur?
(2) Bagaimana pemetaan tekstur dilaksanakan? Ditentukan bahwa sebuah tekstur didefinisikan dalam sebuah domain tekstur dan sebuah obyek ada sebagai data ruang nyata, kita perlu mendefinisikan sebuah pemetaan antara domain ini. (3) Pemetaan tekstur memerlukan penanganan anti-aliasing khusus karena ia cenderung menghasilkan benda buatan hasil aliasing yang jelak dibandingkan dengan teknik lain yang berhubungan dengan sintesa-citra. Tiga pemikiran ini akan ditangani berurutan.
7.5.1
Atributobyek yang dimodulasi untuk tekstur Dalam sebuah paper ulasan, Heckbert (1986) mengkategorisasikan parameter yang dapat dimodulasi untuk menghasilkan sebuah kesan tekstur. Sebuah versi yang dimodifikasi dari pengkategorisasian ini adalah sebagai berikut:
·
Wama permukaan (koefisien(-koefisien) pantulan difusi)) Ini adalah parameter yang paling umum digunakan untuk pemetaan tekstur dan mencakup, misalnya dalam model pantulan sederhana, pemodulasian koefisien difusi. Contoh pertama dari hal ini diberikan oleh Catmull (1974).
·
Pantulan difusi dan specular (pemetaan lingkungan)
·
sebagai pemetaan lingkungan dan hadir untuk dipertimbangkan sebagai sebuah teknik yang terpisah daripada sebagai sebuah kategori dari pemetaan tekstur. Ini diuraikan dalam Bagian 7.10 dan pertama kali dikembangkan oleh Blinn dan Newell (1976). Gangguan vektor normal Ini adalah sebuah piranti yang bagus, dikembangkan lagi oleh Blinn (1978), yang mengakali sebuah model pantulan sederhana menjadi menghasilkan apa yang tampak menjadi permukaan yang terganggu. Perluasan dari teknik ini diberikan oleh Kajiya (1985) yang Kajiya sebut 'pemetaan bingkai'. Dalam metode ini sebuah 'bundel bingkai' bukan hanya
Metode ini kini dikenal
318
Pengantar Komputer Grafik
.
.
sekedar sebuah vektor normal yang diganggu. Sebuah bundel bingkai untuk sebuah permukaan adalah sebuah sistem koordinat lokal yang ditentukan oleh tangen, binormal, dan normal terhadap permukaan tersebut. Kajiya menunjukkan bahwa pendekatan ini memungkinkan pemetaan dari permukaan terarah yang memiliki ciri seperti rambqt dan kain. Specularity Meskipunpengaruhini dilaporkanoleh Blinn(1978)(belum lagi) ia tidak tampak digunakanpada sembarangperluasanyang sangat luas.Atributyang dimodulasiadalahfungsi kekasaranpermukaandalammodel Cook dan Torrance (Bab 4). Sebuah contoh dari permukaan dengan tingkat kemengkilapan yang berubah-ubahadalah sebuah obyekyang dicat dengan cat bertekstur. Transparency Sebuah contoh dari pemodulasian transparency diberikan oleh Gardener (1985). Contoh khusus ini menarik karena ia bukan sebuah metode yang ketat mengenai pemakaian tekstur pada sebuah obyek, akan tetapi sebuah metode yang menghasilkan sebuah obyek yang lengkap
-
sebuah awan
-
dengan menggunakan fungsi tekstur matematis untuk memodulasi transparency sebuah elipsoida. Sebuah contoh kehidupan nyata dari kasus ini adalah kaca yang diukir secara kimia. Selanjutnya seseorang dapat membedakan di antara metode ini dengan mencatat bahwa semua kecuali pemetaan lingkungan 'cement' sebuah tekstur pada obyek dan kemudian tekstur tersebut menjadi bagian 'permanen' dari obyek tersebut, tanpa kecuali pada kondisi transformasi obyek dan pandangan. Pemetaan lingkungan, sebaliknya, tergantung pada dimana obyek tersebut ditempatkan dalam sebuah lingkungan, dan ini merupakan penentuan selanjutnya untuk menganggap pemetaan lingkungan sebagai sebuah teknik yang berbeda dari pemetaan tekstur.
7.6
Pemetaan tekstur dua-dimensi Sejauh ini bentuk yang paling umum dari pemetaan tekstur melibatkan penggunaan domain tekstur dua dimensi, T(u,v). Ini karena macam tekstur yang tak terhingga telah tersedia. Gambar tekstur dapat diambil dari bingkai atau dapat dihasilkan menurut prosedur. Perhatikan Gambar 7.8. Ini memperlihatkan keseluruhan proses dari domain tekstur T(u,v) ke ruang layar. Keseluruhan pemetaan tersebut dapat diuraikan apakah dengan dua transformasi seperti yang diperlihatkan atau sebagai transfor-
Bayangan dan Tekstur
Texture space T(u.v)
Surface parametrization
Object space (x.y.
z)
Projection
319
Screen space X".y\
Gambar 7.8 Sebuah pemetaan seluruh tekstur yang berisi parameterisasi permukaan yang diikuti oleh transformasi geometris normal (menurut Heckbert (1986)).
masi gabungan tunggal. Transformasi yang pertama, kadang-kadang dikenal sebagai parameterisasi permukaan, mengambil pola tekstur dua dimensi dan 'melekatkan'-nya pada obyek. Transformasi yang kedua adalah pemetaan obyek standar ke ruang layar. Dua kesulitan utama muncul dalam pemetaan tekstur: menemukan parameterisasi permukaan yang cocok dan anti-aliasing. Kesulitan dengan transformasi yang pertama adalah karena kita normalnya mengharap ia untuk melekatkan sebuah pola tekstur pada sebuah obyek jaring poligon sendiri merupakan perkiraan yang tidak kontinu terhadap sebuah obyek nyata. Untuk obyek seperti ini, parameterisasi permukaan tidak didefinisikan. Mereka harus ditemukan. Ini berbeda dengan permukaan quadric dan kubus dimana parameterisasi telah tersedia. Jika kita menggunakan analogi pelekatan kertas dinding: bagaimana kita akan merekatkan kertas dinding tersebut pada obyek jaring poligon? Ini adalah sebuah masalah terhadap mana tidak ada penyelesaian yang bagus dan melibatkan bermacam-macam teknik. Kini kita telah melihat pemyataan obyek standar dan rezim perenderan standar yang secara tidak langsung menyatakan algoritma yang dikemudikan dari ruang layar. Bayangan interpolasi dan penghilangan permukaan yang tersembunyi secara tidak langsung menyatakan pengurutan pixel-demi-pixel untuk masing-masing poligon. Ini berarti bahwa kita harus menemukan sebuah nilai tekstur tunggal bagi masing-masing pixel untuk menyisipkan kedalam pola bayangan interpolasi. Cara yang paling mudah untuk melakukan hal ini adalah dengan pemetaan kebalikan - kita temukan pre-image dari pixel yang sedang berlangsung dalam' domain tekstur (Gambar 7.9a). Karena seluruh transformasi adalah bukan linear, pixel tersebut memetakan ke sebuah luasan dalam ruang tekstur yang secara
-
320
Pengantar Komputer Grajik
umum adalah sebuah quadrilateral kurva linear. Untuk melakukan transformasi yang terbalik kita perlu mengambil empat titik sudut pixel, membalik obyek ke transformasi ruang layar, dan membalik parameterisasi permukaan. Alasan lain untuk menerima metode ini adalah bahwa ia memudahkan anti-aliasing. Penggunaan sebuah metode anti-aliasing adalah tugas pemetaan tekstur. Ini mudah terlihat dengan menganggap sebuah obyek diperlakukanjauh dari pemirsa dengan demikian proyeksinya dalam ruang layar meneakup pixel yang makin dan semakin sedikit. Begitu ukuran obyek berkurang, pre-image dari sebuah pixel dalam ruang tekstur akan meningkat, yang meneakup luasan yang lebih besar. Jika kita menyederhanakan euplikan titik pada pusat pixel tersebut dan mengambil nilai T(u,v) pada titik yangberhubungandalamruangteksturkemudianhasil yang tidak benar akan mengikuti (Gambar 7.9b,e,d). Contoh lain dari pengaruh ini diperlihatkan dalam Gambar 11.2.Di sini seperti pola 'ehequerboard' menyusut ke arah ia mulai memeeah dalam eara gangguan. Masalah ini mudah dilihat dan bergerak bila dianimasi. Perhatikan Gambar 7.9(e,d). Katakan, misalnya, bahwa sebuah obyek memproyeksikan ke sebuah pixel tunggal dan bergerak sedemikian rupa sehingga pre-image translasi melintas T(u,v). Begitu obyek tersebut bergerak ia akan berubah wama dari hitam menjadi putih. Anti-aliasi!1gdalam konteks ini berarti pengintegrasian informasi pada pixel pre-image dan menggunakan nilai ini dalam perhitungan bayangan.
7.6.1
Parameterisasi pennukaan Transtolmasi ini menggabungkan sebuah titik pada obyek (xw,yx,zw)dengan sebuah titik (u,v) dalam ruang tekstur. Kita dapat memisah masalah tersebut menjadi dua bagian. Untuk sebuah poligon tertentu, bagaimana kita memetakan ma~:~g-masing titik interior didalam poligon tersebut menuju sebuah titik dalam ruang T(u,v)? Kemudian, untuk sejumlah poligon yang terhubung yang membuat sebuah obyek seeara keseluruhan, bagaimana kita memetakan masing-masing poligon kedalam ruang T(u,v). Ini adalah sebuah masalah pemetaan global. Sebagaimana yang kami ingatkan, masalah yang kedua eenderung lebih dominan dan kini kita akan melihat sebuah metode yang menggabungkan kedua keperluan ini kedalam sebuah algoritma tunggal. Metode umum yang memparameterisasi dengan definisi permukaan diulas oleh Heekbert (1986). Ini mengganggu pola T(u,v) dari, katakan, sebuah persegi panjang pada sebuah quadrilateral,akan tetapi kegunaannya terbatas. Dalam metode tersebut yang diuraikan dalam bagian
Bayangan dan Tekstur
321
T(u. ~.)
Inverse mapping (a)
o Pixel
Pixel pre-image
With anti-aliasing
Without anti-aliasing
D
L1
D Pixel shade
(b)
D
~
(c)
Pre-image of pixel centre
Pixe! shade
D Pixel shade (d)
Gambar 7.9 Pixel dan pre-images dalam ruang 1{u,v).
berikutnya parameterisasi adalah arah sebuah vektor nonnal atau vektor pantulan pada titik yang berada pada obyek yang ditinjau.
322
Pengantar Komputer Graftk
7.6.2
Pemetaan tektur iaring poligon: pemetaan dua-bagian Pemetaan tektur dua-bagian adalah sebuah teknik yang baru saja dikembangkan yang mengatasi masalah pemetaan global dengan menggunakan permukaan antara yang mudah kepada tekstur mana pada awalnya diproyeksikan. Diperkenalkan oleh Bier dan Sloan (1986), ia adalah sebuah metode yang akan memetakan tekstur dua-dimensi pada model jaring poligon yang tidak terkekang. Metode tersebut juga digunakan untuk mengimplementasikan pemetaan lingkungan. Tekstur tersebut diproyeksikan pada permukaan dengan cara yang hanya tergantung pada geometri obyek tersebut, yang dikenal sebagai obyek sasaran, dan bukan pada parameterisasinya. Proses tersebut dikenal sebagai pemetaan dua-bagian karena tekstur tersebut dipetakan pada sebuah permukaan perantara sebelum dipetakan pada obyek. Permukaan perantara tersebut adalah non-planar yang umum, akan tetapi ia memiliki sebuah fungsi pemetaan analitis dan tekstur dua-dimensi tersebut dipetakan pada permukaan ini dengan tanpa kesulitan. Dengan menemukan hubungan antara titik obyek tersebut dan titik tekstur kemudian menjadi sebuah pemetaan tiga-dimensi ke tiga-dimensi dan parameterisasi permukaan diganti dengan sebuah parameterisasi vektor normal. Jadi kita dapat menggunakan metode ini untuk mengimplementasikanpemetaan lokal dan pemetaan global secara serentak. Nilai yang harus dibayar untuk ini kesama-rataan merupakan gangguan ganda tekstur tersebut diganggu oleh dua pemetaan. Dasar dari metode tersebut adalah sebagai berikut: (1) Tahap pertama adalah pemetaan dari ruang tekstur dua-dimensi menuju sebuah permukaan perantara tiga-dimensi yang sederhana seperti sebuah sHinder: T(u, v) ---+ T' (Xi ,Yi, Zi) Ini dikenal sebagai pemetaan S. (2) Tahap kedua memetakan pola tekstur tiga-dimensi pada permukaan obyek: T' (x;, Y;, Zi) ---+0 (xw, Yw, zw)
Ini direferensikan sebagai pemetaan O. Operasi gabungan ini dapat mengganggu pola tekstur pada obyek dengan cara yang alami, misalnya, salah satu variasi dari metode tersebut adalah pemetaan
Bayangan dan Tekstur
323
'shrinkwrap', dimana pola tekstur planar menyusut pada obyek tersebut dengan cara yang disarankan oleh 'eponym' . Untuk pemetaan S Bier menguraikan empat permukaan perantarfl: sebuah bidang pada sembarang orientasi, permukaan yang melengkung pada sebuah sHinder, sisi sebuah kubus, dan permukaan sebuah bola. Meskipun ia tidak membuat perbedaan secara matematis, namun berguna untuk memperhatikan bahwa T(u,v) dipetakan pada permukaan bagian dalam dari obyek ini. Sebagai contoh, perhatikan sHinder.Ditentukan sebuah definisi parametrik dari sebuah permukaan melengkung pada sebuah sHinder sebagai sebuah himpunan titik (9,h), kita mentransformasikan titik (u,v) pada sHindertersebut sebagai berikut: Scylinder:(8,h) -- (u,v)
=(:
(8
-
(0),
~ (h
-
ho»)
dimana c dan d adalah faktor penyekalaan dan 90dan hoadalah posisi tekstur pada sHinder tersebut denganjari-jari r. Bila menggunakan sebuah bola sebagai permukaan perantara, masalah standar mengenai gangguan yang besar pada kutub harns diperhatikan. Sebagaimana yang telah diketahui, di sana tidak ada pemetaan gangguan-nol dari sebuah bidang menuju sebuah bola dan proyeksi standar (Mercator) memHiki gangguan yang tidak terbatas pada kutub. Dalam praktek, jika digunakan pemetaan yang demikian,jelas terjadi ketidak-malaranbila sebuah titik pada obyek tersebut memetakan pada sebuah titik dalam domain kutub dari bola tersebut. Bier dan Sloan menyarankanpenggunaanproyeksistereografikyang memetakandua pola lingkaran dengangangguanrendahpadadua belahanbola(denganketidakmalaranpadaequator):
dimana p = tan >cos 9 q = tan >sin 9
324
Pengantar Komputer Grafik
e dan 4>adalah sudut azimut dan kemiringan yang menentukan sebuah titik pada permukaan sebuah bola. p dan q menentukan proyeksi 'gnomic' yang memetakan lingkaran dalam bidang ke garis lintang pada bola tersebut. Kotak adalah topologi setara dari bola. Gambar 7.10 memperlihatkan secara diagram bagaimana sebuah pola tekstur planar dipetakan pada sebuah kotak. Padahal kita hams mentolerasi gangguan dalam pemetaan bola, di sana tidak ada gangguan dalam pemetaan pada kotak yang tidak terlipat. Akan tetapi pola tersebut terpotong atau terjepit. (Catat bahwa di sana masih berupa gangguan pola yang berangkat dari obyek ke permukaan diperkenalkan oleh pemetaan yang lain kotak.) Meskipun penjepitan, Bier dan Sloan menganggap bahwa di sana ada pemakaian yang berguna. Sebagai contoh, jika tekstur tersebut berisi beberapa gambar latar depan pada sebuah latar belakang dengan warna tetap ia mungkin menempatkan pola tersebut sedemikian rupa sehingga gambar tidak terjepit, atau jika tektur tersebut homogen dan invariant ke rotasi 90°, ia mungkin mengorientasi tekstur untuk menyembunyikan lipatan. Dalam pemetaan lingkungan pola tersebut hams dirancang agar tepat pada kotak yang tidak terlipat. Akhirnya, kita hams ingat bahwa pre-image pixel dapat terjadi pada sejumlah sisi kotak. Ini dibahas lebih rinei dalam kasus pemetaan lingkungan (Bagian 7.10). Bermacam-macam kemungkinan terjadi untuk pemetaan 0 dimana nilai tekstur untuk O(xw,Yw,zw)diperoleh dari T(xi, Yi,Zi)dan ini diperhatikan dengan baik dari tinjauan mengenai pelacakan sinar. Empat pemetaan 0 tersebut diperlihatkan dalam Gambar 7.11 dan adalah:
-
/T(II,v)
..
.. ..'
,
Gambar 7.10 P~taan
kotak.
00.
Bayangan dan Tekstur
325
(1) Perpotongan sinar pandang yang dipantulkan dengan permukaan perantara, T (ini adalah pemetaan lingkungan yang nyata). (2) Perpotongan permukaan normal pada (XJI,z)dengan 1". (3) Perpotongan sebuah garis melalui (XJI,z)dan obyek centroid dengan T. (4) Perpotongan garis dari (XJI,z)ke T yang memiliki orientasi ditentukan oleh normal permukaan pada (Xi,Yi,Zi). Tidak termasuk yang pertama, yang diperhatikan pemetaan lingkungan (daripada pemetaan tekstur pada sebuah permukaan) kita memiliki tiga pemetaan 0 dan empat pemetaan S yang memberikan kemungkinan kombinasi total sebanyak 12 buah. Ini, bersama-sama dengan tanda mengenai kegunaan mereka, diperlihatkan dalam Gambar 7.12. Sebagai contoh, Bier dan Sloan menyatakan bahwa obyek pemetaan normal/silinderdan obyek pemetaan centroidlsilinderdihapuskan karena mereka mewarisi masalah topologi silinder - di sana tidak ada tekstur yang ditentukan pada salah satu sisi. Jika normal permukaan perantara digunakan maka setiap titik pada obyek tersebut dapat ditentukan sebuah tekstur. (Xi> Yi> Zj)
(1) Reflected ray
(3) Object centroid
(2) Object normal
(4) Intermediate surface normal
Gambar 7.11 Empat kemungkinan pemetaan 0 yang memetakan tekstur permukaan perantara 1" pada obyek.
326
Pengantar Komputer Grajik
Kini marilah kita perhatikan proses pemetaan terbalik yang lengkap untuk kasus 'shrinkwrap'. Kita pecah proses tersebut menjadi tiga tahap (Gambar 7.13): (1) Pemetaan terbalik empat titik pixel (xw,Yw,zw)pada permukaan obyek. (2) Gunakan pemetaan 0 untuk memperoleh titik (O,h)pada permukaan silinder. Dalam kasus 'shrinkwrap' kita hanya menggabungkan titik obyek tersebut ke pusat silinder dan perpotongan garis ini dengan permukaan silinder akan memberi kita (Xi,Yi,Zi): xw,yw,zw -+ (fJ,h) = (tan-l(yw/zw),zw) (3) Gunakan pemetaan S untuk memperoleh titik (u,v) yang berhubungan dengan (O,h).
7.6.3
Teknik domain tekstur dua-dimensi: Pemetaan pada tambalan parameter bikubus Jika sebuah obyekberupaquadratikatau kubusmaka parameterisasisecara langsung. Dalam Bagian 0.0 kita gunakan quadrics sebagai permukaan perantara karena sifat ini. Jika obyek tersebut berupa sebuah tambalan parameter bikubus, maka pemetaan tekstur adalah mudah karena sebuah tambalan parameter oleh definisi telah memiliki nilai u,v dimana saja pada permukaannya. Penggunaan tekstur yang pertama dalam grafik komputer adalah sebuah metode yang dikembangkan oleh Catmull (1974). Teknik ini diterapkan terhadap model tambalan parameter bikubus; algoritma tersebut membagi-bagi sebuah Box
C~linder
Environment
Centroid/lmx
Shrink wrap
D
Very inappropriate
Plane
Sphere
ISN/box
_
ReOected
mapping
Centroid/sphere
Redundant
vector
Redundant
Object normal
Redundant
Object centroid
Slide projector
Somewhat inappropriate
Gambar 7.12 Gabungan pemetaan 0 (menurut Bier dan Sloan (1986».
Intcrmediah: surface normal (lSN)
Bayangan dan Tekstur
T(II.v)
Zl (). U
(6. h)
~
(II. ,.)
(H6 - ~Id(h
- h,))
7"(6, h)
f> (x., y.. :.) -- (0,11) U
(Ian-I(}'.!.r.). :.)
r(.r..~'" :,)
Screen space
(x"y,)0
Gambar 7.13 Pemetaan terbalik dengan menggunakan metode 'shrinkwrap',
327
328
Pengantar Komputer Grafik
tambalan pennukaan dalam ruang obyek, dan pada saat yang sarna mengeksekusi sub-pembagian yang berhubungan dalam ruang tekstur. Gagasan tersebut adalah bahwa sub-pembagian tambalan berlangsung sehingga ia mencakup sebuah pixel tunggal (sebuah pendekatan rendering tambalan standar diuraikan secara rinei dalam Bab 6). Bila proses sub-pembagian tambalan berhenti, nilai(-nilai) tekstur yang diperlukan untuk pixel tersebut diperoleh dari luasan yang dicakup oleh tingkat sub-pembagian dalam domain tekstur yang sedang berlangsung. Ini adalah teknik langsung yang mudah diimplementasikan sebagai perluasan terhadap sebuah perender tambalan bikubus. Variasi dari metode ini digunakan oleh Cook. Carpenter, dan Catmull (1987) di mana pennukaan obyek dibagi-bagi menjadi poligon mikro dan dibayangi secara mendatar dengan nilai dari sub-pembagian yang berhubungan dalam ruang tekstur. Sebuah contoh dari teknik ini diperlihatkan dalam Plate 10. Oi sini masingmasing tambalan pada teko teh menyebabkan sub-pembagian dari sebuah pemetaan tekstur tunggal, yang mana ia sendiri merupakan sebuah versi perenderan dari teko teh. Untuk masing-masing tambalan, nilai u,v dari parameter sub-pembagian ruang digunakan untuk mengindeks peta tekstur yang memiliki nilai u,v yang juga berubah-ubah antara 0 dan 1. Pola ini mudah diubah, katakan, untuk memetakan empat tambalan kedalam seluruh domain tekstur dengan menggunakan faktor skala dua dalam pemetaan u,v.
7.7
Teknik domain tekstur tiga-dimensi Sebuah metode yang mengelakkanmasalah pemetaan dengan bagus adalah dengan menggunakan sebuah domain tekstur tiga-dimensi. Kita dapat membayangkan bahwa sebuah nilai tekstur ada dimana saja dalam domain obyek. Oengan mengabaikan masalah skala obyek (ukuran tekstur tidak akan berubah-ubah begitu ukuran obyek berubah). Kemudian kita dapat mengatakan bahwa bahwa, telah ditentukan sebuah titik pada sebuah obyek, (xw,Yw,zw),teksturnya ditentukan oleh pemetaan identitas T(xw,Yw,zw). Ini sarna dengan pemahatan atau pengukiran sebuah obyek diluar bahan blok benda padat. Warna obyek tersebut ditentukan oleh perpotongan pennukaannya dengan medan tekstur tiga-dimensi yang telah ditentukan sebelumnya. Metode ini dilaporkan secara serentak oleh Perlin (1985) dan Peachey (1983) dimana istilah penteksturan benda padat ditemukan.
Bayangan dan Tekstur
329
Keperluan yangjelas dari teknik ini adalah bahwa medan tekstur tiga-dimensi diperoleh dengan pembangkitan menurut prosedur. Penyimpanaan sebuah medan tiga-dimensi yang lengkap akan mahalnya keperluan memori menjadi penghalang. Jadi koordinat (xw,Yw,zw) digunakan untuk mengindeks sebuah prosedur yang menentukan medan tekstur tiga-dimensi untuk titik tersebut. Sebuah keuntungan yang berarti mengenai penghilangan masalah pemetaan adalah bahwa obyek dari sembarang kerumitan dapat menerima sebuah tekstur pada permukaan mereka dalam pola coherent. Tidak terjadi ketidak-malaran bila tekstur tersebut tampak pada obyek. Sebuah kemungkinan yang menarik terjadi bila menggukana teknik ini dalam urutan yang dianimasi. Pendekataan yang benar adalah untuk menundukkan medan tekstur terhadap transformasi yang sarna sebagai obyek, sedemikian rupa sehingga tekstur tersebut masih tetap pada permukaan obyek. Akan tetapi pendekatan yang tidak benar - menggerakkan obyek melalui sebuah medan tekstur statis - dapat menghasilkan pengaruh unik. Sebuah contoh yang mudah mengenai teknik ini diperlihatkan dalam Plate 11. Di sini 125 kubus dibayangi dan warna masing-masing kubus diperoleh dengan pemetaan identitas antara (xw,Yw,zw),koordinat dari sebuah puncak referensi pada masing-masing kubus, dan titik RGB yang berhubungan (xw,Yw,zw)dalam sebuah kubus RGB ditentukan pada domain obyek (lihat Bab 14 untuk rincian selanjutnya mengenai kubus RGB). Contoh selanjutnya dari teknik ini mendemonstrasikan gagasan tersebut. Pertama, serat kayu dapat disimulasikan oleh sebuah himpunan silinder konsentris yang memiliki sumbu referensi, secara umum, dimiringkan terhadap salah satu sumbu referensi pada obyek. Pendekatan ini diperlihatkan dalam Plate 11dimana medan tekstur tiga-dimensi berupa sebuah himpunan sHinder konsentris yang ditetapkan secara fungsional dimodulasi dengan sebuah fungsi harmonik. Contoh tersebut mendemonstrasikan bagaimana anda dapat membuat definisi tekstur tiga-dimensi dalam beberapa tahap, selanjutnya masing-masing langkah menguraikan definisi tersebut. Pertama, kita buat medan sebuah fungsi. modular r, jari-jari silinder tersebut. Untuk sebuah silinder tertentu kita memiliki: rl
= (u2 + w2)1/2
Kedua, kita dapat mengganggu r dengan sebuah fungsi sinusoidal, atau dengan sembarang fungsi yang mensimulasikan simpangan pertumbuhan kayu menjauh dari sebuah silinder yang sempurna:
330
Pengantar Komputer Grajik
r2=r)+2sin(a8) kemudian kita dapatmenerapkan sedikit puntiran sepanjang sumbu silinder tersebut: r2 = r) + 2sin(aO + v/b)
dimana a,b adalah tetapan f) = tan-) (u/w) Kemudian kita dapat mengindeks tekstur tersebut dengan: (x,y,z) = kemiringan (u,v,w) dimana 'kemiringan' adalah sembarang fungsi kemiringan yang mengimplementasikan sembarang rotasi antara dua sistem koordinat. Program 7.1 mengembalikan warna (r,g,b) yang ditentukan sebuah koordinat ruang tekstur (u,v,w). Oalam contoh ini kita menggunakan medan tekstur tiga-dimensi untuk memodel sebuah pengaruh yang dalam kenyataannya berupa sebuah tekstur tiga-dimensi. Oalam Plate 11 tekstur yang dapat dilihat pada ujung tersebut adalah lingkaran - serat ujung - sedangkan serat tersebut cenderung berjaIan sepanjang tampang sisi blok tersebut. Pengaruh ini akan membosankan untuk memodel dengan menggunakan pemetaan tekstur dua-dimensi. Sebuah perluasan dari gagasan dasar ini adalah dengan menggunakan sebuah fungsi noise tiga-dimensi yang umum untuk mengganggu medan dasar, daripada menggunakan sebuah gangguan yang tergantung pada konteks, sebagaimana yang kita kerjakan untuk serat kayu. Kini pendekatan ini diterapkan dengan baik dalam grafik komputer tiga-dimensi karena ia bekerja baik secara visual. Sebuah contoh mengenai tekstur kelereng diperlihatkan dalam Plate 11. Medan tekstur tersebut dalam kasus ini adalah sebuah himpunan pergantian papan hitam, abuabu, putih, dan abu-abu. Sebuah fungsi noise tiga-dimensi, diuraikan sepenuhnya dalam Bab 12, digunakan untuk memodulasi strip-strip hitam/abu-abu dasar agar memberi kesan aliran turbulen. Oalam prosedur yang diperlihatkan dalam Program 7.2, 'width' menentukan lebar keseluruhan dalam ruang obyek sebuah siklur penuh dari tekstur kelereng (yakni dari gelap ke terang). 'dd' digunakan untuk mendefinisikan lebar relatif dari strip yang diberi warna yang berbeda (yakni, empat bidang [0..3],[4...8],[9..11] dan [12..16]).
Bayangan dan Tekstur
procedure wood_grain(u,
331
Y, w: real; var r, g, b: real):
var radius, angle: real; grain: integer; begin radius := sqrt(sqr(u) + sqr(w»; if w = 0 then angle := pi/2 else angle := arctan(u, w); {arctan evaluates arctan (u/w), but uses quadrant information to return a value in the range 0 . . 21T} radius := radius""" 2*sin(20*angle + Y/150); grain := round(radius) mod 60; if grain < 40 then begin r := r_light: g := g_light: b := b_light: end else begin r:= r_dark: g:= g_dark: b := b_dark: end; end {of wood_grain}:
Program 7.1 Sebuah prosedur untuk menyatakan serat kayu.
Cara lain melihat contoh khusus ini adalah bahwa ia merupakan gabungan dua medan tekstur yang didefinisikan menurut prosedur. Salah satu medan adalah papan hitam, abu-abu, dan putih frekuensi rendah, yang lain adalah sebuah fungsi noise tiga-dimensi. Contoh terakhir, (lihat Plat 11) menggunakan sebuah teknik yang mirip namun amplitudo gangguan noise tiga-dimensi ditingkatkan sedemikian rupa sehingga pengaruh kelereng dihancurkan. Dua buah contoh ini memperlihatkan kemampuan dari metode tersebut yang mampu menghasilkan pengaruh visual yang berbeda dari dasar prosedur yang sarna.
332
Pengantar Komputer Grafik
procedure marble(lI, v, w: real: var r, g, b: real); const width = 0.02; var d, dd: real; i: real: begin d:= (u + 15000)*width + 7*noise(1I/100, v/200, w/2oo): dd:= trunc(d) mod 17; if dd < 4 then i:= 0.7.,.. 0.2*noise(1I/70, v/SO, w/50) else if (dd < 9) or (dd> = 12) then begin d := abs(d
-
trunc(d/17)*17
- 10.5)*0.1538462:
i := OA + 0.3*([ + 0.2*noise(1I/100. v/lOO. w/loo): end else i := 0.2 + 0.2*noise(1I,.'100, v/loo, w/loo); r := 0.9..i: g :=0.8...i: b := 0.6..i: end {marble}:
Program 7.2 Sebuah prosedur untuk menyatakan kelereng.
7.8
Pemetaan tonjolan Pemetaan tonjolan, sebuah teknik yang dikembangkan oleh Blinn (1978), adalah sebuah piranti yang bagus yang memungkinkan sebuah permukaan tampak berkerut atau berlesung tanpa perlu memodel tekanan ini secara geometris. Sebagai gantinya, permukaan normal diganggu secara sudut sesuai dengan informasi yang diberikan dalam pemetaan tonjolan dua-dimensi dan ini mengakali sebuah model pantulan lokal, dimana intensitas merupakan fungsi utama dari normal permukaan, menjadi menghasilkan perubahan lokal pada sebuah permukaan yang
Bayangan dan Tekstur
333
mulus. Permasalahan hanya dengan pemetaan tonjolan karena karena lubang atau tekanan tidak ada dalam model tersebut, sebuah edge bayangan hitam yang tampak lewat melalui sebuah tekanan tidak akan menghasiikan potongan-melintang yang diharapkan. Dengan kata lain edge bayangan hitam akan mengikuti garis model tersebut. Ini merupakan sebuah teknik yang penting karena ia menampakkan tekstur sebuah permukaan dengan anggapan kata normal daripada memodulasi warna pada sebuah permukaan rata. Plate 10 memperlihatkan dua buah contoh dari teknik ini. Penteksturanpermukaandalam fase perenderan,tanpa gangguangeometri,melewatkan masalahpemodelanyang seriusyangjika tidak maka akan terjadi.Jika obyek tersebut berupa poligonal makajaring harns cukup bagus untuk menerima gangguan dari peta tekstur sebuah pembebananyang serius pada fase pemodelan yang asli, khususnyajika tekstur tersebut merupakansebuah pilihan. Dalam pengimplementasian pemetaan tonjolan, sebuah pola diperlukan yang mengganggu vektor normal dengan cara yang tidak tergantung pada orientasi dan posisi permukaan. Untuk sebuah titik khusus pada permukaan, normal pada titik tersebut harus selalu menerima gangguan yang sarna. Jika ini bukan merupakan kasus, maka dalam dalam sebuah urutan animasi, rincian pemetaan tonjolan akan menganimasi begitu obyek tersebut bergerak. Ini dicapai dengan pendasaran gangguan pada sebuah sistem koordinat yang didasarkan pada derivatif permukaan lokal.
-
Jika O(u,v) adalah sebuah fungsi parameter yang menyatakan posisi vektor pada titik 0 pada permukaan sebuah obyek, kemudian normal terhadap permukaan tersebut pada sebuah titik ditentukan oleh: N= 011X 0,.
dimana 011dan 0,. adalah derivatif parsial permukaan tersebut pada titik 0 yang terletak dalam bidang tangen. Kita menentukan dua vektor yang lain yang terletak dalam bidang tangen. Ini adalah:
A=NxO,. dan: B = N X011
334
Pengantar Komputer Grafik
D adalah sebuah vektor yang diturunkan dari komponen dari dua buah vektor ini, dan penjumlahan D dan N memberikan N', vektor yang diganggu:
N' = N + D Vektor A, B, dan N dari sebuah sistem koordinat dimana D ditentukan seeara bebas dari orientasi dan posisi permukaan tersebut. Kini kita mengalamatkan masalah mengenai nilai D. Komponen D diberikan oleh: D = BuA
- BvB
dimana Bu dan B,omerupakan turunan parsial dari peta tonjolan B(u,v). Jadi kita menentukan sebuah fungsi perpindahan atau ketinggian medan akan tetapi menggunakan turunannya pada titik (u,v) untuk menghitung D. Ini dapat diperlihatkan sebagai berikut. Perhatikan Gambar 7.14 yang memperlihatkan sebuah analogi atau proses potongan-melintang. Pertama kita menambahkan pertambahan yang sedikit, diturunkan dari peta tonjolan B(u,v) ke O(u,v) untuk menentukan O'(u,v):
O'(u,v) = O(u,v) + B(u,v) IZI Kini dengan menurunkan persamaan ini memberikan: Ou' = Ou + Bu ,ZI + B(,ZI) u Ou' = Ou + Bu IZI + B(IZlt
Jika B keeil (jadi, fungsi perpindahan peta tonjolan keeil dibandingkan dengan perluasan ruangnya), suku yang terakhir dalam masing-masing persamaan tersebut dapat diabaikan dan:
Bayangan dan Tekstur
335
O(u) Original surface
B(u) A bump map
O'(u) Lengthening or shortening 0(11) using B(II)
N(II)
The vectors to the 'new'surface
Gambar 7.14 Sebuah contoh satu-dimensi pada tahap yang terlibat dalam pemetaan tonjolan (menurut Blinn (1978».
Suku yang pertama adalah normal terhadap permukaan dan suku yang terakhir adalah nol, yang memberikan:
dimana N/INj ditulis sebagai N, atau D= BIIA
-
BuB
Sebuah pernyataan geometrik mengenai ini diberikan dalam Gambar 7.15. D adalah sebuah vektor dalam bidang A dan B memiliki komponen yang diberikan oleh B,tdan - Blo,Kemudian N' diberikan oleh:
336
Pengantar Komputer Grafik
N'=N+D
yang merupakan hasil yang diinginkan. Salah satu masalah mengenai pemetaan tonjolan diuji oleh Blinn adalah ketergantungannya pada skala obyek. Jika fungsi definisi permukaan diskala dengan faktor dua maka panjang vektor normal diskala empat, akan tetapi panjang D hanya diskala dua. Ini karena obyek tersebut diskala akan tetapi fungsi perpindahan B tidak diskala. Pengaruh dari hal ini adalah untuk menghaluskan keriput yang jelas tidak diingiknan. Blinn begitu permukaan tersebut direntangkan menyarankan penurunan D merupakan skala invariant:
-
INI D' = aD 1Df Sebuah pilihan untuk nilai a diberikan oleh: a = (B} + B,/)1/2 Blinn juga membahas masalah anti-aliasing, yang menunjukkan bahwa teknik normal untuk pemetaan tekstur anti-aliasing, yang dibahas selanjutnya dalam bab ini, tidak relevan karena nilai perpindahan tidak berhubungan linear dengan nilai intensitas akhir. Pemfilteran peta tonjolan hanya menghaluskan tonjolan dan alternatifuya hanya dengan memetakan pada resolusi sub-pixel dan rata-rata. Akan tetapi ini jelas merupakan sebuah operasi yang sangat mahal dan Blinn mengklaim bahwa beberapa peningkatan dapat diperoleh dengan pemfilteran luasan peta tonjolan. Pendekatan yang lain untuk mengerutkan sebuah permukaan adalah dengan menggunakan peta perpindahan dimana medan ketinggian dua-dimensi digunakan untuk mengganggu sebuah titik permukaan sepanjang arah normal permukaannya. Perbedaan praktis utama antara metode ini dan pemetaan tonjolan adalah mengenai kesulitan menggabungkannya kedalam sebuah perender jaring poligon standar. Pemetaan tonjolan dapat digabungkan kedalam pola interpolasi normal dan model poligonal yang sarna dapat digunakan untuk menghasilkan sebuah obyek yang halus dan sebuah obyek yang dipetakan-tonjolan. Untuk obyek poligonal, pemetaan perpindahan adalah paling mudah digabungkan kedalam fase pemodelan. Pemetaan perpindahan hanya perlu diperhatikan bila rincian harus dibuat agar dapat dilihat pada edge bayangan hitam,jika tidak maka lebih disukai pemetaan tonjolan.
Bayangan dan Tekstur
N
337
N
B
Surface normal alpo;nlO
0= o. x o.
Define \ectors ,4 = .,. x O. B = S x O.
D is eiven by
D = B.A -'8,8
Gambar 7.15 Pemyataan geometrik dari pemetaan tonjolan.
7.9
Anti-aliasing dan pemetaan tekstur Sebagaimana yang kita bahas dalam Bagian 7.5 benda buatan hasil aliasing sangat bermasalah dalam pemetaan tekstur. Pemetaan tekstur biasanya tidak berhasil jika tidak diintegrasikan dengan sebuah prosedur anti-aliasing. Benda buatan sangat nyata, khususnya dalam tekstur yang menampakkan koheren atau periodik dan berasal dari peneuplikan titik (Iihat Bab 11 untuk pembahasan yang lebih teoritis pada teknik anti-aliasing yang umum). Sebagai eontoh, jika tidak pemetaan terbalik yang dilakukan seeara teliti maka tidak satupun dari bentuk atau luasan dari luasan pixel yang dipetakan dalam domain tekstur diketahui. Pemetaan yang teliti menghasilkan, seeara-umum, sebuah quadrilateral kurva linear. Dalam kasus yang ekstrim,peneuplikantitiktanpa pemfilteranakan menghantarkan pada kesalahan besar. Sejumlah besar, barangkali ribuan, 'texel' (sebuah elemen yang merupakan luasan persegi yang paling keeil dalam domain tekstur) akan memetakan kedalam sebuah pixel tunggal (Iihat Gambar 7.9). Kasus ini dapat muneul bila sejumlah texel memetakan pada sebuah permukaan, akan tetapi proyeksi pada permukaan tersebut dalam ruang layar adalah kecil, apakah karena kedalamannya, atau kareI).aorientasinya terhadap arah pandangan.
338
Pengantar Komputer Grafik
Secara informal kita dapat menentukan anti-aliasing dalam pemetaan tekstur sebagai proses pengintegrasian informasi dalam pixel pre-image didalam ruang tekstur. Sebuah nilai tunggal harus dikembalikan dari parameter yang digunakan di dalam persamaan bayangan pada pixel yang sedang ditinjau. Proses pengintegrasian ini dikenal sebagai penyaringan ('filtering'). Karena bentuk pre-image berubah-ubah begitu pixel berubah, kita perlu menyaring perubahan bentuk. Pendekatan terhadap anti-aliasing dalam pemetaan tekstur didasarkan pada perkiraan yang ideal ini.
7.9.1
Perkiraan terhadap filter'space-varianf Ada sejumlah pendekatan empiris terhadap masalah penyaringan 'space-variant'. Dalam sub-pembagian perender tambalan yang telah disebut sebelumnya Catmull (1974) menghitung sebuah rata-rata tak berbobot dari texel yang berhubungan dengan sebuah pixellayar. Bentuk luasan yang dipetakan dalam domain tekstur dianggap berupa sebuah quadrilateral. Blinn dan Newell (1976) menggunakan sebuah pendekatan yang mirip dengan menggunakan fungsi pembobot piramida dengan piramida yang diganggu agar tepat dengan quadrilateral yang diperkirakan. Pola ini hanya mendemonstrasikan dua keperluan pokok akan penyaringan ,space-variant':
. .
Luasan dalam ruang T(u,v) dimana penyaring tersebut beroperasi harns diten-
tukan atau diperkirakan. Pengintegrasian harus dilakukan oleh nilai pembebanan dan nilai penjumlahan T(u,v) yangjatuh dalam penyaring kernel.
Perhatikan Gambar 7.16. Di sini sebuahpixel pre-image diperkirakan dengan sebuah quadrilateral. Fungsi pembebanan yang memungkinkan kita mengintegrasikan informasi kedalam sebuah nilai tunggal yang dianggap berupa sebuah bentuk piramida dengan puncak pada pusat pixel pre-image. Masing-masing nilai T(u,v) dibebani oleh nilai fungsi piramida yang berhubungan dantercantum dalam jumlah berbobot pada domain penyaring tersebut. Feybush, Levoy, dan Cook (1980) dan Ganget, Perry, dan Coueignoux (1982) juga menguraikan pendekatan-pendekatan empiris terhadap penyaringan 'spacevariant' . Sebuah metode yang diklaim ekonomis dan teliti adalah penyaring rata-rata berbobot eliptik (elliptical weighted average, EWA) yang diajukan oleh Greene
Bayangan dan Tekstur
339
dan Heckbert (1986). Dasar dari metode ini adalah untuk memperkirakan luasan pixel persegi di dalam ruang layar dengan sebuah lingkaran. Alasan untuk ini adalah bahwa pemetaan terbalik dari sebuah lingkaran adalah selalu sebuah eIips. Meskipun ukuran, keanehan, dan orientasi elips tersebut berubah, bentuk tersebut tidak berubah dan kenyataan ini digali dalam metode tersebut. Sebuah fungsi q(u,v) ditentukan.Ini adalah sebuahparaboloidaeliptik - sebuah fungsiyang memiliki kontur 'iso-Q' adalah eIips yang konsentris. Kontur eliptik digunakan untuk mengevaluasi keluasan daripada filter tersebut. Titik 1{u,v) diuji untuk melihat apakah mereka terletak dalam perluasan tilter eliptik tersebut. Nilai Q digunakan sebagai sebuah pembeban filter. Lebih tepatnya, ia digunakan untuk mengindeks ke dalam 'look-up table' dari nilai yang telah dihitung sebelumnya. Fungsi tersebut didetinisikan sebagai: Q(u,v)
= Au2
+ Buv + Cv2
dimana (0,0) adalah pusat dari elips konsentris. Fungsi ini diperlihatkan dalam Gambar 7.17 sebagai sebuah himpunan konturkontur 'iso-Q'. Algoritmanya adalah sebagai berikut: (1) Kita lakukan pemetaan terbalik untuk menentukan hubungan antara titik sudut pixel dan titik (u,v) didalam ruang tekstur. Ini memungkinkan kita untuk menghitung perkiraan parsial (8u/8x,av/8x) dan (au/(}y,av/(}y).Ini mengukur gangguan pada pixel pre-image dan digunakan untuk memperkirakan keanehan dan orientasi paraboloida eliptik yang kemudian dipusatkan pada pada (uo,vo)pemetaan terbalik dari pusat pixel. Elips yang berhubungan dengan perkiraan lingkaran dari pixel tersebut diberikan oleh:
dimana Ux,Uydan vx,vyadalah parsial di atas. (2) Kemudian elips ini tercantum dalam sebuah kotak batas. (3) Ruang ini discan dan Q dievaluasi secara etisien dengan menggunakan diferensial tertentu. Titik-titik memenuhi: Q(u,v) < F
untuk beberapa ambang F~
340
Pengantar Komputer Grajik
(a)
o
(b)
!]
(e)
of pixel centre
Gambar 7.16 Perkiraan sebuah pixel pre-image dengan sebuah quadrilateral. (a) Pre-image dari pixel. (b) Perluasan filter diperkirakan dengan menggunakan sebuah qadrilateral. (e) Filter kernel diperkirakan dengan menggunakan sebuah piramid.
digunakan untuk mengindeks sebuah 'look-up table' yang menyimpan sebuah fungsi penyaring yang bisa, misalnya, berupa sebuah fungsi Gaussian atau sine. Olah karena itu Q melayani untuk memberikan pengujian pemasukandan sebuah fungsi indeks untuk 'look-up table' yang telah disimpan sebelumnya. Metode ini diklaim dua kali lebih eepat dibandingkan metode yang mutunya sama.
Bayangan dan Tekstur
341
Bounding box ~nc1osiml th~ contours
Q=F
Q=F
Gambar 7.17 Kontur 'iso-Q' dalam domain tekstur.(menurut Greene dan Heckbert (1986».
7.9.2
Teknik prefiltering Biaya perhitungan dari teknik filtering di atas selalu fungsi dari luasan pixel yang dipetakan-terbalik dalam ruang tekstur. Dengan menggunakan metode tersebut dalam sebuah konteks dimana, misalnya, luasan tekstur yang besar dipetakan ke dalam luasan layar yang keeil adalah perlu biaya. Teknik prefiltering adalah pendekatan dimana biaya tidak bertambah sebanding dengan area tekstur yang dipetakan. Sebuah teknik prefiltering yang bagus yang telah terkenal adalah pola 'mipmapping' Williams (Williams, 1983). Sebagai ganti dari sebuah domain tekstur yang terdiri dari sebuah gambar tunggal, Williams menggunakan banyak gambar, semua diturunkan dengan perata-rataan gambar yang asli ke resolusi yang lebih rendah yang berurutan. Masing-masing gambar yang berurutan tepat setengah resolusi sebelumnya. Sebuah gambaran dari domain tekstur yang memungkinkan diperlihatkan dalam Gambar 7.18 dan seeara efektif sebuah basis data tiga-dimensi dengan sebuah parameter ketiga,D, yang digunakan untuk memilih resolusi gambar tertentu yang diinginkan. Misalnya, dengan menggunakan pengorganisasian ini sebuah T(u,v) dari resolusi 512 x 512 akan memerlukan sebuah larik 1024 x 1024. Plate 10 memperlihatkan sebuah 'mip-map' yang digunakan sehu-
342 Penganlar Komputer Grajik
bungan dengan metode pemetaan Catmull, yang diuraikan sebelumnya, untuk menghasilkan teko teh yang bertekstur. Istilah mip-map berasal dari 'multum in parvo' atau banyak barang dalam tempat yang kecil. Dalam sebuah gambar versi resolusi rendah masing-masing texel menyatakan rata-rata dari sejumlah texel. Dengan pemilihan D yang sesuai, sebuah gambar pada resolusi yang sesuai dipilih dan biaya pemfilteran masih masalah biaya banyak-texel-ke-satu-pixel dihindarkan. Pusat dari pixel tetap tersebut dipetakan kedalam peta yang ditentukan oleh D dan digunakan nilai tunggal ini. Dalam cara ini tekstur asH disaring dan, untuk menghindari ketidakmalaran antara gambar pada resolusi yang berubah-ubah, tingkat yang berbeda juga dicampur. Pencampuran antara tingkat terjadi bila dipilih D. Gambar tersebut tidak malar dalam resolusi akan tetapi D adalah sebuah parameter malar. Interpolasi linear dilakukan dari dua tingkat yang paling dekat. Williams memilih D dari:
-
v
R
ru \'
R
Ir
.
v
B
ru v
B
Increasing D
Gambar 7.18 Pengorganisasian sebuah domain tekstur 'mip-map' yang difilter terlebih dahulu.
Bayangan don Tekstur
343
D = max_of [sqrt«Olljax)2 + (avjax)~\ sqrt«311joy)~ + (3vjay)2)]
Sebuah perkiraan yang benar atau teliti mengenai nilai D adalah hal yang penting. Jika D terlalu besar maka gambar tersebut akan tampak kabur, terlalu kecil dan benda buatan aliasing masih akan tampak. Metode praktis yang rinei untuk penentuan D tergantung pada konteks pemetaan yang diberikan Watt dan Watt (1992). Metode pengindeksan ini menuju sebuah tingkat tertentu dengan parameter D adalah sarna dengan memperkirakan sebuah tekstur quadrilateral dengan sebuah persegi. Gambar 7.19, berdasarkan pada sebuah gambaran oleh Heckbert, secara gratis menyorot perkiraan yang sepenuhnya dalam teknik ini, dan membandingkan metode ini dengan metode yang lebih teliti yang diuraikan dalam bagian sebelumnya. Anti-aliasing adalah selalu sebuah kompromi. Benda buatan aliasing berlangsung jika luasan yang difilter terlalu kecil; gambar yang kabur terjadi jika luasan terlalu besar. Dampak lain dari pemfilteran bujur-sangkat adalah bahwa ia dianggap bahwa pemapatan yang diperlukan adalah simetri. Karena, dalam pola ini, pengalamatan didasarkan pada sumbu pemampatan maksimum, untuk permukaan yang melengkung yang menjauh dari pemirsa dapat menghasilkan ketidak-jelasan (meskipun Williams mengklaim bahwa dalam urutan teranimasi ini dimana luasan melipat ke edge tipis yang panjang namun mutu pemetaan tidak berkurang). Crow (1984) mengajukan sebuah teknik yang umum dari Williams yang menggunakan sebuah tabel tunggal dari mana sebuah jangkauan malar yang sebenarnya dari kerapatan tekstur dapat digambar. Ini ditunjukkan oleh Crow bahwa metode ini'sama dengan 'mip-mapping' dimana masing-masing intensitas tekstur diganti oleh sebuah nilai yang menyatakan jumlah intensitas dari semua texel yang berada didalam persegi panjang yang ditentukan oleh texel yang ditinjau. Tabel ini dicuplik dari sebuah jumlah dan dua perbedaan yang diambil dari tabel tersebut. Mip-mapping juga diperluas kedalam domain tiga-dimensi dan digunakan sebagai sebuah metode pemtilteran untuk tekstur tiga-dimensi atau benda padat. Akan tetapi pendekatan ini agak terbatas karena kemampuan tekstur tiga-dimensi adalah bahwa mereka secara umum adalah sebuah teknik yang menurut prosedur tidak memerlukan peta yang difilter terlebih dahulu yang dihitung sebelumnya dan disimpan sebelum pemetaan.
344
Pengantar Komputer Graftk
Gambar 7.19 Sebuah pemyataan mengenai kesalahan pemfilteran yang terjadi bila sebuah bujursangkar, empat persegi panjang, dan elips yang orientasinya sesuai digunakan untuk memperkirakan sebuah luasan uadrilateral dalam domain tekstur (menurut Heckbert).
7.9.3
Anti-aliasing dan pemetaan tekstur tiga-dimensi Kita telah melihat bahwa penggunaan sebuah medan tekstur tiga-dimensi menghasilkan tekstur yang meyakinkan dan menghilangkan banyak kesulitan yang berhubungan dengan metode pemetaan dua-dimensi. Sebuah keuntungan yang berhubungan dengan yang muncul dari metode yang menurut prosedur yang alami adalah bahwa titik tersebut dapat dihitung pada sembarang tingkat rincian. Secara efektif, medan tekstur dapat dicuplik sebagus atau sekasar sesuai yang diinginkan. Ini membandingkan dengan peta yang telah dihitung sebelumnya atau peta duadimensi yang tetap, yang apakah harus disimpan pada tingkat rincian yang berbeda (mip-mapping) atau harus digunakan anti-aliasing dengan hati-hati. Teknik anti-aliasing yang sederhana, seperti supersampling, mudah diperluas ke medan tekstur tiga-dimensi dan masalah aliasing yang terjadi pada pemetaan tekstur dua-dimensi (yang merupakan sebuah fungsi pemetaan itu sendiri) dihindarkan. Anti-aliasing medan tekstur dibahas secara rinci oleh Peachey (1988). Peachey menunjukkan bahwa sering memungkinkan bahwa tekstur yang dihasilkan menurut prosedur mengintegrasikan anti-aliasing kedalam metode pembangkitan dengan perata-rataan medan tekstur pada sebuah daerah bola dengan diameter yang sesuai, bukan pencuplikan titik fungsi tersebut.
7.10
Pemetaan lingkungan Istilah ini mengacu pada proses pencerminan lingkungan yang mengitari sebuah obyek yang berkilau. la cenderung diklasifikasikan sebagai sebuah teknik tekstur,
Bayangan dan Tekstur
345
meskipun ia dibedakan dari pemetaan tekstur 'nonnal' dalam hal pola yang terlihat pada sebuah obyek adalah sebuah fungsi dari vektor pandangan V. Sebuah rincian khusus dari lingkungan tersebut akan bergerak melintas obyek begitu V berubah. Pemetaan lingkungan dapat juga dianggap sebagai penyederhanaan dari pelacakan sinar (lihat Bab 8), dimana hanya sinar yang dipantulkan saja yang dilacak dan proses tersebut dihentikan pada kedalaman dua. Kita memperkenalkan gagasan mengenai pemetaan lingkungan dalam Bagian 0.0 dimana sebuah kotak atau bola dapat digunakan sebagai sebuah pennukaan perantara. Prinsip dari teknik tersebut diperlihatkan dalam Gambar 7.20. Untuk sebuah obyek cennin yang sempuma, sinar pandang V dipantulkandari pennukaan obyek tersebut. Perpotongan sinar ini dengan sebuah pennukaan, seperti bagian dalam sebuah bola yang berisi sebuah gambar lingkunganyang dipantulkandalam obyek, memberikan atribut bayanganuntuktitik 0 pada pennukaan obyek tersebut. Oalam praktek, empat cahaya yang melalui titik pixel menentukan sebuah "kerucut' pantulan dengan sebuah potonganmelintangquadrilateral(Gambar 7.21). Oaerah sekitar peta lingkungan kemudian difilter agar memberikan sebuah atribut bayangan tunggal untuk pixel tersebut. Peta lingkungan biasanya difilter terlebih dahulu dan ditransfonnasikan ke dalam gambar dua-dimensi. Oi sini kita secara efektif menyederhanakan sebuah masalah tiga-dimensi menjadi masalah dua-dimensi. Penyederhanaan ini dihitung terlebih dahulu dan disimpan sebagai sebuah peta lingkungan. kemudian pencahayaan yang terlihat dari sebuah titik pada sebuah pennukaan obyek diberikan oleh sebuah operasi pengindeksan tunggal kedalam peta tersebut bukan sebagai sebuah perhitungan ruang obyek tiga-dimensi - seperti dalam pelacakan sinar. Pemetaan lingkungan dapat juga dilihat sebagai sebuah teknik yang memperluas kemungkinan pencahayaan yang terbatas dalam teknik bayangan Phong dengan n (dalamjumlah yang sedikit) sumber cahaya titik. Sebuah lingkungan dapat dipandang sebagai sumber cayaya yang tidak terbatas dan sebuah peta dapat menyatakan sembarang geometri sumber cahaya sebagai sebuah gambar yang berada di dalam atau di luar ruangan. Oarititik pandang ini sumber cahaya yang terdistribusi secara geometris, seperti cahaya bidang, hanya berupa persegi-panjang dengan nilai intensitas putih yang tinggi dalam peta lingkungan. Penggunaan peta lingkungan yang pertama adalah oleh Blinn dan Newell (1976) dimana teknik interior bola digunakan dan diciptakan peta 'latitude-longitude'. Kesulitan praktis dari pendekatan ini adalah dalam pembangkitan peta lingkungan. Penggangguan yang telah ditetapkan sebelumnya terhadap lingkung-
346
Pengantar Kompuler Graflk
View poinl
En\'irunmcnl map on the ~urfacc of
a sphere
Gambar 7.10 Pemetaan lingkungan dengan menggunakan sinar pandang yang dipantulkan V, untuk mengindeks sebuah peta lingkungan.
an agar tepat terhadap permukaan bola sebelah dalam adalah sulit. Kerugian lain dari teknik ini adalah bahwa ia hanya teliti secara geometri untuk obyek kecil yang berdasarkan pada pusat bola tersebut. Begitu ukuran obyek menjadi besar terhadap bola lingkungan, atau obyek yang ditetapkan menjauh dari pusat ini, gangguan geometris bertambah. Dengan menggunakan vektor pandangan yang dipantulkan, V" ia merupakan cara yang sederhana untuk mengindeks ke dalam sebuah peta lingkungan latitudelongitude. Jika E(u,v) adalah sebuah titik pada peta (0 :5;u :5;I, 0:5; v :5;1) dan vektor pandangan yang dipantulkan tersebut adalah:
kemudian:
dan
v = Vry + 1 2
Bayangan elan Tekstur
347
View poinl
Gambar 7.21 Kerucut pantulan sekitar sebuah luasan quadrilateral alam peta lingkungan.
Perkembangan dalam pemetaan lingkungan (misalnya, Miller dan Hoffman (1984) dan Greene dan Heckbert (1986» memperlakukan lingkungan sebagai sebuah himpunan proyeksi dua-dimensi. Dengan menggunakan interior sebuah kubus sebagai peta lingkungan adalah lebih enak daripada sebuah bola. Ini berarti, misalnya, bahwa sebuah peta dapat diciptakan dari sebuah lingkungan nyata dengan pemfotografian atau pengambilan bingkai lingkungan dalam enam arah dengan menggunakan sebuah lensa medan datar dengan medan pandang 90°. Sebagai alternatif, enam pandangan dari lingkungan yang disimulasikan dapat dihasilkan dengan sebuah sistem rendering. Miller dan' Hoffman menggunakan proyeksi kubus sebagai langkah perantara dalam penciptaan sebuah peta latitudelongitude tunggal. 'Trade-off antara penggunaan sebuah peta latitude-longitude dan sebuah peta kubus enam-komponen berkenaan dengan bentuk alami yang diproyeksikan oleh kerucut pantulan dalam masing-masing domain. Ini dibahas sepenuhnya oleh Greene. Gambar 7.22 memperlihatkan bahwa secara umum empat vektor pantulan akan menyebar lebih dari satu sisi kubus. Plate 12 memperlihatkan sebuah contoh mengenai sebuah peta lingkungan dan gambar yang diciptakan dengan menggunakan peta tersebut. Greene menunjukkan bahwa meskipun pemetaan lingkungan merupakan teknik yang kurang serbaguna dibanding pelacakan sinar, namun ia menghilangkan masalah pelacakan sinar tertentu. Ini jauh lebih murah, menangani pencahayaan
348
Pengantar. Kompuler Grafik
difusi secara benar, dan dapat menggunakan penyaringan tekstur untuk mengatasi hasil aliasing pelacakan sinar yangmuncul dari pencuplikan titik. Secara khusus, difusi dan pencahayaan permukaan specular diperoleh dengan pemfilteran terlebih dahulu daerah difusi dua-dimensi dan peta lingkungan specular. Pengintegrasian pada sebuah proyeksi peta dua-dimensi, lebih disukai daripada lingkungan tiga-dimensi (yang mana bekerja operasi anti-aliasing dalam pelacakan sinar) dapa menghasilkan kesalahan yang besar, akan tetapi Greene menunjukkan bahwa mutu subyektif dari isyarat yang dihasilkan oleh pemetaan lingkungan dapat menjadi superior terhadap yang dihasilkan oleh sinar yang tidak dibuat-buat yang dihasilkan oleh pelacak. Kerugian yang nyata dari pemetaan lingkungan adalah bahwa sebuah obyek normalnya tidak dapat berisi pantulan dirinya sendiri, karena obyek tersebut tidak akan tidak akan tampak dalam peta lingkungan. Pembahasan di atas menerapkan peta lingkungan pencahayaan specular. Miller dan Hoffman memperlihatkan bagaimana untuk menciptakan sebuah peta lingkungan pencahayaan difusi. Kemudian atribut bayangan yang yang diperoleh untuk sebuah titik pada permukaan berisi sebuah komponen difusi dan specular dan komponen difusi memberikan penyelesaian perkiraan terhadap interaksi global dari cahaya difusi yang tidak dilayani dalam pelacakan sinar. Kemudian atribut atau koefisien permukaan difusi/specular memilih bagian dari kontribusi dari masing-masing peta. Sebuah permukaan difusi yang sempuma hanya akan memiliki kontribusi dari peta difusi dan sebuah obyek cermin yang sempuma hanya akan mengakses peta specular:
dimana D adalah kontribusi dari peta difusi, yang diindeks oleh normal permukaan, dan S adalah kontribusi dari peta specular, yang diindeks oleh vektor pandangan yang dipantulkan. Sebuah peta lingkungan difusi secara efektif merupakan versi yang sangat kabur dari peta lingkungan specular. Ia diciptakan dengan mengkonvolusikan sebuah peta pencahayaan dengan sebuah fungsi cosine hukum Lambert. Masingmasing titik pada peta difusi tersebut adalah jumlah berbobot dari semua pencahayaan pada permukaan sebuah belahan bola yang berpusat pada titik tersebut. Peta difusi tersebut diindeks oleh normal permukaan N. Sebuah atribut yang berguna dari peta difusi tersebut adalah bahwa ia tidak berisi komponen frekuensi tinggi dan dapat disimpan pada resolusi yang sangat rendah.
Bayangan don Tekstur
349
Texture area subtended by reflection beam
Gambar 7.22 Area permukaan yang berhadapan dengan refleksi sorotan untuk lingkungan pemetaan
Proyek, catatan, dan saran 7.1 Bayangan pada bidang sisi atau bidang tanah Implementasikan metode Blinn mengenai pemroyeksian bayangan pada sebuah bidang tanah untuk bidang yang sejajar dengan bidang xw,yw,bidang Xw,zw,dan bidang Yw,zw.Kembangkan teknik untuk menghitung bayangan perspektif untuk sumber cahaya lokal. Di sini kita memiliki:
s=p- a. (P- L) 7.2 Penyangga-Z bayangan Implementasikanalgoritmapenyangga-Zbayanganyang diuraikandaJambuku ini.
350
Pengantar Komputer Graftk
7.3 Penyelidikan algoritma bayangan Kerugian dari kebanyakan algoritma bayangan yang berhubungan dengan model jaring poligon adalah kerumitan penyandian geometris mereka tinggi dan mereka hanya dapat menghasilkan bayangan dengan edge tegas. Sebuah metode yang mahal, namun sederhana, adalah menggunakan peraba bayangan(lihat Bab 8) dan menerapkan mereka pada obyekjaring poligon. Cobalah gagasan ini. Catat bahwa sinar-sinarperaba bayangan pada poligon interiordapat diinterpolasidari nilai puncak. Dapatkahmetode inidisesuaikanuntukmemodelbayanganyang tidakjelas, dan bagaimanajika demikian? Bagaimana pengujian perpotongan dapat dioptimisasi jika kekangan bahwa peraba bayangan apakah berpotongan dengan salah satu obyek atau tidak dibuat sarna sekali? Apakah kesalahan gagasan tersebut yang mengatakan bahwa sebuah poligon tidak berisi sebuah bayanganjika tidak ada peraba bayangan puncak yang berpotongan dengan sebuah obyek (dan sebaliknya bahwa ia memiliki sebuah bayanganjika peraba bayangan puncaknya berpotongan)? 7.4 Pemetaan tekstur tambalan bikubus Implementasikan sebuah teknik pemetaan tekstur dua-dimensi yang sederhana untuk tambalan bikubus dengan menggunakan sub-pembagian. Perluaslah metode tersebut dengan mencantumkan 'mip-mapping' sebagai sebuah teknik penyanngan. 7.5 Pemetaan tekstur dua-bagian Dengan menggunakan pola uji seperti sebuah kisi, implementasikan pola pemetaan tekstur dua-bagian yang diuraikan dalarn bab ini. Bier dan Sloan (1986) menyatakan bahwa hanya lima dari duabelas pemetaan perantara/O yang sesuai. Tentukan pemetaan ini dan selidikilah sifat mereka. 7.6 Tekstur benda padat Implementasikanmetode tekstur tiga-dimensiatau metode tekstur benda padat dan selidikilahkearnpuhanmetode dari definisitekstur benda padat berikut ini:
.
SHinderkonsentris yang diganggu dengan bermacarn-macarn cara.
Bayangan dan Tekstur
.
. . . .
351
Sebuah tekstur 'gelembung' yang dibentuk dengan menempatkan bola dengan jari-jari acak pada lokasi acak. Fungsi noise tiga-dimensi (Bab 12). Sintesa Fourier tiga-dimensi (Bab 12). Sebuah benda padat yang diganggu warnanya seperti kubus RGB yang mengalami transformsi linear atau tidak linear. Sebuah fungsi telCsturdua-dimensi yang berulang sepanjang salah satu sumbu. Katakan, misalnya, kita memiliki sebuah gambar yang diambil dari bingkai T(u,v): kita dapat menggunakan ini untukmenghasilkan sebuah medan tekstur tiga-dimensi sebagai berikut:
7.7 Tekstur anti-aliasing Bandingkan keampuhan dua metode anti-aliasing tekstur yang diuraikan dalam buku ini; mip-mapping (Wlhems, 1987) dan penyaringan EWA (Greene dan Heckbert, 1986). 7.8 Pemetaan lingkungan (*) Implementasikan sebuah pola pemetaan lingkungan dengan menggunakan sembarang perangkat-Iunak pelacakan sinar yang telah dikembangkan sebelumnya untuk melacak sinar V dari masing-masing pixel menuju lingkungantersebut. Anda dapat membangun sebuah peta lingkungan untuk sebuah interior yang disimulasikan dengan perenderan interior enam kali dari titik pandang obyek yang dipetakan, jadi, enam bidang pandang pada sisi sebuah kubus yang mengelilingi obyek tersebut. Bagaimana sumber cahaya dapat digabungkan kedalam peta lingkungan tersebut? 7.9 Pemetaan lingkungan dan anti-aliasing Operasi anti-aliasing dalam pemetaan. lingkungan sepenting mereka dalam pemetaan tekstur. Jika sebuah permukaan memiliki sebuah lekukan yang tinggi, pixel yang berdekatan dalam bidang pandang dapat menghasilkan vektor pandang yang terpantul yang memetakan ke pixel yang tidak berdekatan dalam peta
352
Pengantar Komputer Grafik
Iingkungan. Sebuah penyelesaian yang jelas adalah untuk menentukan luasan yang dicondongkan oleh sinar-sinar melalui masing-masing sisi pixel (Gambar 7.21) dan untuk memperoleh sebuah nilai rata-rata. Implementasikan pola ini. Sebuah catatan ringkas mengenai tabel difusi dan tabel specular Miller dan Hoffman (1984)menyama-ratakan pemetaan lingkungan dengan mencantumkan tabel pantulan difusi dan specular. Tabel dihitung terlebih dahulu, menyederhanakan proses pemetaan menjadi tabel 'look-up' yang diindeks oleh normal permukaan N dan V" vektor pandang yang dipantulkan. Tabel ini tergantung pada sifat obyek tertentu dan kekhususanini merupakansalah satu kelemahan dari metode tersebut. Pekerjaan ini juga dilaporkan oleh Greene dan Heckbert ( 1986). Miller dan Hoffman memulai dengan sebuah peta Iingkungan photografi atau yang disimulasikan pada enam sisi dari sebuah kubus. Ini mereka acukan sebagai sebuah tabel pencahayaan. Ini adalah dari peta dasar ini yang mana tabel difusi dan specular dihitung terlebih dahulu. Tabel ini sebenarnya tabel 'look-up' dua-dimensi. Mereka diindeks oleh vektor yang diubah menjadi bentuk dua-dimensi (misalnya, dengan mengubah ke dalam koordinat kutub, atau ke dalam sebuah titik pada permukaan kubus yang tertutup). Untuk menciptakan tabel difusi peta pencahayaan dikonvolusikan dengan sebuah fungsi cosinus hukum Lambert. Peta difusi tersebut diberikan oleh: D(N) = 2J(L) Area(L)fd(N.L) L dimana, untuk sebuah nilai N tertentu, L memiliki jangkauan pada semua arah kedalam tabel pencahayaan I(L), Luasan adalah luasan daerah sudut yang diperole~ dengan pencuplikan dengan L dan/a adalah fungsi konvolusi difusi. Miller dan Hoffman memberikan contoh berikutmengenai perjanjian untukjd:
·
Pantulan Lambert: leuadalah koefisien pantulan difusi dan _ Kd(NL) untuk NL > 0 I' Jd(NL ) - { 0 untukNL::;O
.
Sumber cahaya:
/J..NL) = ka untuk semua N'L
Bayangan dan Tekstur
353
Dari,sini dapat dilihat bahwa tabel difusi adalah sebuah versi kabur dari peta penc~ayaan yang diindeks oleh N, yakni normal permukaan, dan pola ini menyederhanakanperolehan pencahayaandifusi menjadi sebuah tabel 'look-up' tunggal. Tabel difusi tersebut dihitung dan disimpan dengan resolusi yang sangat rendah (menurut definisi ia tidak berisi komponen frekuensi-tinggi). Miller dan Hoffman mengutip 36 x 72 pixel (sarna dengan bola yang dibayangi Gouraud dengan facet pada setiap 5°). Tabel specular tersebut yang diindeks oleh V, diberikan oleh: S(Vr)
= 2J(L) Area(L)fs(Vr.L) L
dimana.fs adalah fungsi konvolusi specular, sebagai contoh:
Vi.:'"puinl
v, Gambar 7.23 Normal puncak dan vektor pandang yang dipantulkan puncak dihitung untuk masing-masing puncak alam model dan kemudian diinterpolasi.
354
Pengantar Komputer Grafik
Dalam kasus ini, dengan menaikkan Vr. L ke sebuah pangkat, maka:di sana tidak ada pembebanan yang diberikan kepada eIemen dimana Ji;.dan L terpisah lebih dari beberapa derajad, yang memberikan pengarul}pantulan seperti-dekat-cermin dengan jumlah hamburan yang sedikit. Ini mirip dengan cara suku specular yang dievaluasi dalam bayangan Phong. 7.10 Pemetaan lingkungan -tabel
difusi dan specular
Hitunglahtabel difusi dan specular sebagaimana yang diuraikan di atas dan dengan sebuah pola pelacakan sinar gunakan Vruntuk mengindeks tabel specular dan N untuk mengindeks tabel difasi tersebut. 7.11 . Pemetaan lingkungan -obyekjaring
poligon
Implementasikan pendekatan tabel difusi dan specular untuk obyekjaring poligon dengan menggunakan sebuah perender yang biasa. Lakukan ini dengan menghitung sebuah normal puncak (seperti dalam bayangan phong) dan gunakan normal ini untuk menghitung sebuah Vr untuk masing-masing puncak (Gambar 7.23). Selama pengubahan scan normal puncak dan Vrkeduanya diinterpolasi dengan cara biasa. Ini memberikan bagi masing-masing pixel dalam masing-masing poligon sebuah N dan Vr yang diinterpolasi masing-masing untuk mengindeks tabel difusi dan specular.