Pembuatan Bump Mapping Pada Obyek Quadric
ABSTRAK
Aplikasi komputer grafis semakin berkembang dengan didukung oleh perkembangan teknologi komputer yang sangat pesat. Banyak aplikasi yang dikembangkan untuk menghasilkan obyek-obyek yang mempunyai bentuk yang bervariasi dan menarik. Ada dua jenis obyek yang biasa dimodelkan, yaitu obyek primitif dan obyek mesh. Obyek primitif adalah obyek yang dimodelkan dengan menggunakan persamaan geometri. Obyek mesh adalah obyek kompleks yang dibentuk dari banyak segitiga yang disambung-sambungkan. Obyek primitif mudah dibuat manun bentuknya terbatas, sedangkan obyek mesh mempunyai bentuk yang lebih variatif namun lebih sulit dimodelkan dan membutuhkan waktu yang lama untuk menampilkan dan memanipulasinya. Salah satu cara yang bisa digunakan untuk membuat obyek primitif menjadi lebih menarik dan bervariasi adalah dengan memetakan sebuah tekstur pada permukaan obyek tersebut
Bump mapping adalah sebuah cara memetakan tekstur pada obyek permukaan obyek dengan membuat efek ukiran. Efek ukiran didapat dengan cara memperhitungkan kedalaman. Warna yang ada pada tekstur yang akan dipetakan dibuat menjadi greyscale. Semakin gelap warna pada tekstur, semakin dalam dipetakan pada permukaan obyek.
Aplikasi yang dikembangkan dalam penelitian ini mampu membuat bump mapping dengan menggunakan tekstur berwarna ataupun hitam-putih. Namun untuk permukaan obyek yang sangat melengkung pemetaan tidak terlalu nampak karena kedalamandiukirkan pada permukaan yang sudah menjorok ke dalam.
Kata Kunci:bump mapping, object quadric, tekstur, ray tracing.
1. PENDAHULUAN
Perkembangan teknologi komputer grafis yang pesat menyebabkan banyak pembuatan program-program aplikasi grafis yang mampu menghasilkan gambar-gambar realistis, terutama gambar tiga dimensi yang photorealistic (sekualitas foto). Untuk menghasilkan gambar yang photorealistic, perlu memperhitungkan efek-efek pencahayaan. Dengan demikian, diharapkan mampu menghasilkan gambar yang mendekati gambar aslinya.
Obyek yang bisa dimodelkan adalah obyek parametrik dan obyek mesh. Namun obyek yang lebih efisien untuk digunakan dalam pembuatan grafis adalah obyek parametrik. Hal ini disebabkan karena obyek-obyek parametrik tersebut lebih mudah dimodelkan dan dimanipulasi bentuknya. Selain itu waktu yang diperlukan untuk merender cukup singkat. Salah satu keterbatasan pemodelan obyek parametrik adalah bentuk yang tidak kompleks. Oleh karena itu maka banyak penelitian dilakukan untuk memanipulasi bentuk obyek parametrik tersebut supaya menjadi lebih bervariasi.
Manipulasi yang paling sering dilakukan terhadap obyek parametrik adalah pemberian tekstur. Ada banyak cara pembentukan tekstur, salah satunya adalah bump mapping. Bump mapping adalah sebuah tekstur kasar pada sebuah permukaan. Pemodelan bump mapping dilakukan dengan cara membentuk sebuah peta tekstur terlebih dahulu. Setelah terbentu peta tekstur barulah dilakukan pemetaan ke permukaan obyek.
2. LANDASAN TEORI
2.1. Bump Mapping
Walaupun memiliki cara kerja yang hampir sama dengan tekstur mapping, bump mapping menghasilkan gambar yang berbeda. Pada tekstur mapping hanya memetakan warna ke permukaan obyek, sedangkan bump mapping memetakan juga kedalaman. Perbedaan antara tekstur mapping dengan bump mapping dapat dilihat pada gambar 1.
Dengan penambahan bump mapping, akan tercipta sebuah efek pencahayaan di mana permukaan dari obyek tersebut yang sebelumnya mulus, akan menjadi seakan-akan tampak bergelombang dan berlekuk-lekuk. Efek tersebut didapatkan dari ”memanipulasi” Normal Vektor (Perturbed Normal Vektor – Normal Vektor yang dimiringkan)[3]. Dengan memanipulasi normal Vektor dari sebuah titik yang spesifik, dapat mengubah intensitas pencahayaan yang seharusnya didapatkan oleh titik tersebut, yang berasal dari efek pencahayaan Diffuse dan Specular. Hal ini dikarenakan efek pencahayaan Diffuse dan Specular bergantung sepenuhnya kepada Normal Vektor dari titik tersebut.
Bump Mapping sebenarnya mirip dengan Texture Mapping, terutama cara wrapping-nya (pemetaan)[1]. Namun Bump Mapping mempunyai pemrosesan tambahan setelah itu. Oleh karena Bump Mapping memerlukan pemrosesan tambahan dibandingkan dengan Texture Mapping, maka akan dijelaskan beberapa hal tentang proses tersebut:
§ Menghitung Perturbed Normal Vektor
§ Mengaplikasikan Perturbed Normal Vektor
2.2. Menghitung Perturbed Normal Vektor
Sementara texture mapping menggunakan map apa adanya seperti yang diberikan oleh user, bump mapping memerlukan perhitungan tambahan terhadap map tersebut. Perhitungan tambahan ini dapat dilakukan sebelum atau saat melakukan perhitungan bump mapping. Perhitungan tambahan ini berguna untuk mengetahui seberapa kemiringan dari normal vektor yang harus diaplikasikan terhadap normal vektor dari titik tersebut.
Di dalam mengkalkulasi bump mapping, height map (map yang memberikan informasi tentang ketinggian) yang dibaca dari media penyimpanan tersebut harus dikonversi menjadi contour data terlebih dahulu. Contour data adalah data yang menunjukkan seberapa tinggi atau rendahnya sebuah titik pada sebuah permukaan. Informasi ketinggian dari contour data tersebut kemudian yang digunakan untuk menentukan seberapa kemiringan ”virtual” dari sebuah titik pada permukaan, yang nantinya digunakan untuk menentukan seberapa ”perturbed”-nya sebuah normal vektor pada sebuah titik pada permukaan. Kemiringan normal vektor dari yang seharusnya ini yang akan menghasilkan bagian-bagian permukaan gelap-terang yang lain dari yang seharusnya, sehingga menciptakan ilusi bahwa ada bagian-bagian dari permukaan yang naik turun [4]. Pada gambar 2. dan gambar 3. ini dijelaskan perbedaan antara pencahayaan normal dengan yang telah dipengaruhi Bump Mapping.
Gambar yang dibaca dari media penyimpanan biasanya adalah gambar grayscale (hitam putih). Semakin putih suatu warna, diterjemahkan dengan semakin tinggi posisi titik di tempat tersebut. Sebaliknya, semakin gelap suatu warna, diterjemahkan dengan semakin dalam pula posisi titik di tempat tersebut. Contoh Height Map dapat dilihat pada gambar 4
Dalam menyimpan sebuah normal map dari height map untuk setiap titik, diperhitungkan keempat buah pixel yang bersebelahan dengan pixel tersebut. Pada gambar 5 ditampilkan gambar pixel dalam Height Map yang diperbesar. Pada gambar 6. ditampilkan hasil hitungan Contour Data berdasarkan seberapa terang sebuah pixel dalam Height Map. Kemudian pada gambar 7. ditampilkan arah kemiringan Perturbed Normal Vektor untuk setiap pixel, secara horisontal dan vertikal.
| | | |
| | | |
| | | |
| | | |
1 | 0.5 | 0 | |
0.3 | 0.8 | 1 | |
0.8 | 0.4 | 0.7 | |
| | | |
| | | |
| | | |
| | | |
| | | |
Tanda panah tersebut menunjukkan ke arah mana normal vektor tersebut termiringkan. Bila diperhatikan, maka tanda panah selalu mengarah dari terang menuju ke gelap. Efek dari tanda panah tersebut dapat diperhatikan dalam gambar 8.
Dengan miringnya Normal Vektor, hal tersebut akan mengakibatkan proses perhitungan gelap-terang dari efek pencahayaan Diffuse dan Specular akan berubah, sehingga akan menimbulkan ilusi ada bagian-bagian permukaan yang timbul dan tenggelam.
Kadang-kadang, oleh karena dalam mendapatkan sebuah perturbed normal vektor diperlukan proses perhitungan yang cukup rumit, seringkali dilakukan proses perhitungan di muka terhadap height map tersebut, sehingga menghasilkan sebuah perturbed normal map. Perturbed normal map adalah sebuah map yang menyimpan nilai kemiringan normal vektor dalam bentuk warna dengan cara mengkonversi
nilai x, y, z menjadi r, g, b dengan menggunakan rumus seperti pada persamaan 1.
Bila permukaan dari height map itu rata (contoh: semuanya ”dataran
tinggi” atau semuanya ”dataran rendah”), normal map tersebut mengarah ke sumbu z. Itulah sebabnya mengapa perturbed normal map kebanyakan berwarna kebiru-biruan. Semua jenis arah dari normal vektor dapat disimpan di dalam sebuah pixel rgb, asal normal vektor tersebut sudah dinormalisasi.
tinggi” atau semuanya ”dataran rendah”), normal map tersebut mengarah ke sumbu z. Itulah sebabnya mengapa perturbed normal map kebanyakan berwarna kebiru-biruan. Semua jenis arah dari normal vektor dapat disimpan di dalam sebuah pixel rgb, asal normal vektor tersebut sudah dinormalisasi.
2.3. Teknik Wrapping terhadap Obyek Quadric Secara Umum
Untuk melakukan proses wrapping kepada obyek-obyek quadric tidaklah semudah melakukan proses wrapping terhadap bidang datar. Hal ini dikarenakan beberapa obyek yang memiliki bentuk yang kompleks, tidaklah mudah untuk mencari rumus untuk melakukan wrapping terhadap obyek tersebut. Jadi dalam hal ini, cara untuk membungkuskan map kepada obyek-obyek tersebut adalah dengan membungkuskan sebuah bola terhadap benda-benda tersebut. Ilustrasi Sphere Wrapping tersebut dijelaskan dalam gambar 9 berikut.
Dengan membungkuskan sebuah obyek di dalam Sphere, setiap titik yang hendak dicari map nya pada obyek, ditembakkan menurut Normal Vektornya sampai mengenai Sphere pembungkus. Posisi pada sphere tersebut yang kemudian dikonversikan ke koordinat map.
3. FLOWCHART
GAMBAR 10. Flowchart Mencari Normal
GAMBAR 11. Flowchart mencart Perturbed Normal Vektor
4. UJI COBA
No | Gambar | Deskripsi |
1 | | Gambar bump mapping yang dipakai, dicoba diambil yang tidak tergantung oleh orientasi. |
2 | | Hasil render bump mapping tersebut pada sebuah Quad berwarna biru. Nampak lubang-lubang yang disebabkan oleh bump mapping. |
3 | | Hasil render bump mapping tersebut pada sebuah Sphere berwarna merah. Nampak bump mapping tersebut menghasilkan lubang-lubang seperti pada bola golf. |
4 | | Hasil render bump mapping pada sebuah Hyperboloid Single Sheet hijau. Sekalipun berbeda orientasi, namun hasil yang diharapkan dari bump mapping lebih nampak. |
5 | | Hasil render bump mapping pada sebuah Hyperboloid Double Sheet hijau. Nampak bahwa perbedaan orientasi dari Sphere wrapping dengan orientasi dari Hyperboloid, menjadikan hasil rendering kurang maksimal. |
6 | | Hasil render bump mapping pada sebuah Paraboloid nila. Pada pengujian ini, perbedaan oerientasi hampir tidak menimbulkan permasalahan pada rendering object Paraboloid. |
7 | | Hasil render bump mapping pada sebuah Ellipsoid kuning. |
5. KESIMPULAN
Dari proses mengerjakan penelitian ini, dapat diambil beberapa kesimpulan sebagai berikut:
· Bump mapping tidak dapat diaplikasikan pada permukaan yang melengkung dengan baik. Hal tersebut dikarenakan oleh metode Sphere mapping yang digunakan untuk menangani seluruh proses mapping untuk benda-benda Quadric (bidang selain Quad) menyebabkan bump mapping tersebut termulurkan dan menjadikan hasil wrapping tidak akurat. Agar dapat diaplikasikan dengan baik, bump mapping membutuhkan perbedaan ketinggian yang besar pada height map antara pixel yang satu dengan pixel yang bersebelahan dengannya. Kejadian termulurkannya bump mapping menyebabkan perbedaan ketinggian tersebut mengecil.
· Agar efek dari bump mapping terlihat dengan jelas, memerlukan inputan yang baik dari sistem pewarnaan benda dan cahaya. Setelah dilakukan pengujian, efek bump mapping dapat terlihat lebih jelas bila dilakukan usaha-usaha berikut ini:
o Mendekatkan sumber cahaya ke obyek yang memiliki bump mapping.
o Mengurangi intensitas efek pencahayaan Ambient pada sumber cahaya dan obyek, dan sebaliknya, menambah intensitas efek pencahayaan Diffuse dan Specular.
o Meletakkan sumber cahaya pada sudut kemiringan yang besar terhadap obyek (jangan meletakkan sumber cahaya tegak lurus di atas obyek yang akan dirender, terutama obyek Quad).
· Efek pencahayaan diffuse dan specular kurang nampak pada obyek-obyek yang lengkung permukaannya landai (tidak tajam) seperti paraboloid dan hyperboloid.
6. DAFTAR PUSTAKA
[1] Bump Mapping. (2006). From Wikipedia –
The Free Encyclopedia. 15 Mei 2006.
[2] Egerton, P. A., Hall (n.d.), W. S. Computer
Graphics Mathematical First Steps. p. 285-
286
[3] Normal Mapping. (2006). From Wikipedia –
The Free Encyclopedia. 3 April 2006.
[4] Surdulescu, Razvan (1999). CG
Bumpmapping. 24 Mei 2006.
URL:
http://www.gamedev.net/columns