Pemodelan Pemantulan dan Pembiasan Cahaya
oleh Obyek Mengkilap dan Obyek Transparan dengan Menggunakan Ray Tracing
Liliana
Fakultas Teknologi
Industri, jurusan Teknik Informatika, Universitas Kristen Petra
Jl. Siwalankerto 121-131 Surabaya
e-mail : lilian@peter.petra.ac.id
Abstrak: Kemajuan teknologi yang begitu pesat
telah memicu perkembangan grafika komputer. Aplikasi grafika komputer banyak
sekali digunakan dalam dunia hiburan. Apalagi yang bersifat komersial. Grafika komputer paling sering digunakan dalam
pembuatan film, iklan, game, serta animasi. Banyak pengembang yang berlomba –
lomba meciptakan metode untuk menghasilkan gambar yang realistik. Semakin baik
metode yang dikembangkan maka gambar yang dihasilkan akan semakin mendekati
model sesungguhnya dalam dunia nyata. Salah satu metode untuk menghasilkan
gambar (rendering) yang realistik adalah ray
tracing.
Metode
ray tracing mampu menghasilkan gambar yang realistik karena memperhitungkan
efek – efek pencahayaan. Efek – efek yang diperhitungkan adalah efek
pencahayaan ambient, diffuse dan specular. Selain itu juga memperhitungkan
pemantulan dan pembiasan cahaya. Selain itu metode ray tracing dibagi menjadi
dua macam, yitu penelusuran sinar dari mata (backward ray tracing) dan
penelusuran sinar dari sumber cahaya (forward ray tracing). Dengan kelemahan
dan kelebihan dari masing – masing penelusuran maka akan dihasilkan gambar yang
bagus kualitasnya.
Sebuah sinar yang dipancarkan dari
sumber cahaya akan dipantulkan jika mengenai obyek yang permukaannya mengkilap
dan akan dibiaskan obyek yang transparan. Hasil dari pemantulan dan pembiasan
cahaya tersebut akan diserap oleh obyek yang kasat, tidak mengkilap dan tidak
transparan. Semakin banyak sinar yang dipantulkan atau dibiaskan ke suatu area
permukaan obyek kasat maka area tersebut akan terlihat semakin terang bila
dibandingkan dengan area disekitarnya. Efek inilah yang akan dimodelkan. Efek
pencahayaan ini biasa disebut dengan efek kaustik.
Selain efek kaustik, obyek
transparan juga mempunyai efek terlihatnya obyek lain yang berada di
belakangnya. Terlihatnya obyek lain ini tidak seperti bentuk aslinya karena
adanya pengaruh dari pembiasan cahaya. Obyek akan terlihat membesar jika
dilihat dari obyek transparan. Ini adalah efek transparansi.
Kata kunci : ray tracing, pemantulan,
pembiasan, efek kaustik, transparansi.
1. PENDAHULUAN
Metode rendering yang baik adalah meode yang mampu
menghasilkan gambar yang serealistik foto. Untuk menghasilkan gambar yang
sedemikian diperlukan perhitungan efek-efek pencahayaan. Metode ray tracing
adalah salah satu metode yang mampu menghasilkan gambar yang realistik. Hal ini dikarenakan adanya perhitungan
efek pencahayaan secara real dan adanya pemodelan pemantulan serta pembiasan
cahaya.
Dalam ray tracing efek pencahayaan yang
diperhitungkan adalah ambient, diffuse dan specular. Ambient adalah efek
pencahayaan yang merata. Semakin besar intensitas cahaya maka warna obyek akan
terlihat semakin terang. Efek diffuse adalah efek pencahayaan yang
memperhitungkan jarak obyek dari lampu atau sumber cahaya. Semakin dekat
permukaan obyek dari lampu maka warna obyek pada permukaan tersebut semakin
terang, semakin jauh permukaan obyek tersebut maka warnanya akan terlihat
semakin gelap. Efek specular adalah efek yang menampilkan bayangan sumber
cahaya pada permukaan suatu obyek. Selain efek – efek diatas, untuk mendapatkan
hasil yang realistik harus diperhatikan juga pemodelan sinar kedua, yaitu sinar
hasil pemantulan dan pembiasan cahaya. Sinar yang yang mengenai obyek mengkilap
akan dipantulkan dan sinar yang mengenai obyek transparan akan dibiskan. Sinar pantul dan sinar bias yang
dihasilkan akan mengenai obyek lainnya. Inilah yang dimaksud dengan sinar kedua
karena bukan sinar yang langsung berasal dari lampu.
Selain efek pencahayaan, dimodelkan juga
pemantulan untuk benda reflektif seperti cermin yang akan menghasilkan pantulan
dari benda lain. Dan efek pembiasan cahaya yang dimodelkan pada benda
transparan yang menghasilkan penampakan obyek lain yang berada di belakang
obyek transparan tersebut. Pemodelan untuk obyek transparan selama ini hanya
menampakkan obyek lain yang berada di belakang obyek transparan tersebut.
Sedangkan efek kaustiknya tidak dimodelkan. Efek kaustik adalah efek
pengumpulan cahaya yang dibiaskan oleh benda tembus pandang ke suatu daerah
tertentu sehingga daerah tersebut akan nampak lebih terang dari pada daerah
sekitarnya. Perangkat lunak yang dibuat ini mampu menghasilkan efek kaustik
dari obyek transparan.
2.
PEMANTULAN
DAN PEMBIASAN CAHAYA
Berikut
ini akan dijelaskan lebih lanjut mengenai pemantulan dan pembiasan cahaya,
terutama cara untuk mendapat arah pantul dan arah bias dari cahaya tersebut.
· Pemantulan
Cahaya
Sinar yang datang
mengenai suatu permukaan obyek akan dipantulkan dengan sudut yang sama besar
terhadap normal pada bidang yang dikenai. Gambaran dari sinar datang dan sinar pantul dapat dilihat pada gambar 1.
· Pembiasan
Cahaya
Sinar yang mengenai benda transparan akan
dibiaskan. Hasil pembiasan tergantung pada kerapatan material obyek. Sinar bias
dihitung dengan acuan vektor normal dari obyek seperti yang terlihat pada
gambar 2. Perhatikan sinar b yang berasal dari medium satu, kecepatan sinar di
medium satu adalah c1 dan membentuk
sudut datang θ1 terhadap
garis normal, mengenai dan melewati obyek dengan medium dua, kecepatan sinar
pada medium dua adalah c2 dan sudut pembiasan yang terbentuk antara sinar bias
dengan normal adalah θ2.
Jika sudut biasnya 90º maka sinar tidak dibiaskan
tetapi dipantulkan secara sempurna. Untuk mencari arah sinar yang sudah
dibiaskan (d), seperti yang terlihat pada gambar 2 di dapat dengan persamaan
(Hill 1990)
3. RAY TRACING
DAN PEMETAAN CAHAYA
Ray tracing adalah suatu metode merender gambar dengan cara menelusuri
sinar yang mengenai mata. Mata dapat melihat warna pada suatu obyek disebabkan
adanya sinar yang mengenai suatu obyek dan jika diteruskan maka sinar tersebut
akhirnya mengenai mata. Jika sinar yang ditelusuri mengenai suatu obyek maka
kemudian diperhitungkan intensitas warna obyek tersebut. Berikut akan dibahas
mengenai ray tracing lebih jauh lagi.
3.1 Ray Tracing
Metode ray tracing dibagi menjadi
dua jenis, yaitu forward ray tracing dan
backward ray tracing. Pada forward ray tracing, sinar yang ditelusuri adalah
sinar dari sumber cahaya yang dipantulkan atau dibiaskan ke suatu obyek. Sinar
– sinar yang mengenai suatu permukaan akan disimpan sebagai intensitas pada
permukaan tersebut. Karena forward ray tracing digunakan untuk menghitung
iluminasi / penyinaran dari sumber cahaya maka bisa disebut sebagai fase
illuminasi. Sumber cahaya yang digunakan adalah sumber cahaya berupa titik.
Sumber cahaya dimodelkan sebagai bola dengan
radius satu dan posisi sumber cahaya sebagai titik pusatnya. Dari titik pusat dicari arah pancaran sinar ke
seluruh permukaan bola.
Arah
sinar dari posisi lampu ke segala penjuru permukaannya ini akan ditelusuri
apakah mengenai obyek – obyek mengkilap dan transparan yang ada. Jika sinar
mengalami pemantulan atau pembiasan oleh suatu obyek dan kemudian mengenai
obyek lain yang kasat maka akan disimpan pada peta cahaya milik obyek kasat
tersebut. Cara pembentukan dan pemetaan intensitas cahaya pada peta cahaya akan
dibahas lebih lanjut dibawah ini.
3.2 Pemetaan Cahaya
Pemetaan
cahaya (Arvo 1986) menyimpan energi dari sinar dalam suatu array 2D. Karena obyek berupa 3D, maka diubah terlebih dahulu ke
bentuk P(u,v) nya. Setelah itu distribusikan intensitas tersebut ke titik –
titik di sekitarnya, secara bilinear.
Untuk pendistribusian ke empat titik sekitarnya, perbandingannya
terbalik. Semakin dekat jarak titik jatuhnya cahaya dengan titik sekitarnya
maka intensitas yang disimpan pada titik tersebut semakin besar. Peta yang
menyimpan energi pada permukaan obyek disebut illumination map. Setelah
pemetaan cahaya selesai dilakukan maka intensitas yang terkumpul dibagi dengan
luasan area yang diwakili. Pada penelitian ini yang dimodelkan adalah bola dan
bidang datar. Luas permukaan bola bisa dicari dengan rumus 8. Sedangkan luas
bidang datar dihitung dengan mengkuadratkan skala pemetaannya.
Setiap obyek mempunyai cara pemetaan cahaya yang
berbeda - beda. Untuk bola, permukaannya akan diubah menjadi u dan v dengan
beracuan pada sumbu asimut dan sumbu polar nya. Kedua sumbu dibagi sama besar.
Sedangkan untuk bidang datar maka salah satu sumbu (sumbu x, sumbu y atau sumbu
z), dihilangkan maka tinggal dua unsur yang akan diasumsikan sebagai u dan
v.
4. DESAIN CLASS DAN ALGORITMA
Desain class dibuat untuk mengatur penyimpanan dan pengaksesan data.
Pemrograman pada penelitian ini dibuat dengan berorientasi pada obyek.
Sedangkan algoritma dibuat berdasarkan proses yang terjadi.
Simbol belah ketupat menunjukkan bahwa class tersebut “terdiri dari”
class – class di bawahnya. Sedangkan segitiga melambangkan inherit class, suatu
class diturunkan menjadi class – class di bawahnya.
Proses ray tracing akan dibagi menjadi dua fase, yaitu fase illumination
dan fase rendering. Fase illumination akan dijabarkan pada algoritma 1.
Sedangkan fase rendering menggunakan backward ray tracing yang sudah umum
dipakai sehingga tidak dijabarkan lebih lanjut.
- Untuk ( u= 0 ; u < π ; u+= 2π/n )
- Untuk ( v= 0 ; v < π ; v+= π/n )
- Untuk setiap sumber cahaya
- Cari arah pancaran sinar
- Cari titik tabrak sinar dengan semua obyek
- Jika menabrak obyek maka
- Jika mengenai benda reflektif maka
- Cari sinar pantulannya
- Petakan dengan parameter sinar pantulnya
- Jika mengenai benda transparan maka
- Cari sinar biasnya
- Petakan dengan parameter sinar biasnya
Algoritma 1. Algoritma
untuk fase illumination
Suatu obyek dikatakan reflektif jika
koefisien reflektifitasnya lebih besar dari 0. Obyek transparan yaitu obyek
yang koefisien transparansinya lebih besar dari 0. Setelah semua sinar yang
dipancarkan dari lampu selesai dipetakan maka barulah fase rendering atau
penelusuran sinar dari mata dilakukan. Algoritma tersebut di atas digunakan
untuk mencari semua sinar yang akan dipancarkan dari lampu. Sedangkan untuk
pemetaan intensitasnya dijabarkan pada algoritma 2. algoritma ini digunakan
setelah menemukan obyek yang mengkilap atau transparan.
1. Jika energi masih cukup besar untuk terus
dipancarkan maka
2.
Untuk semua obyek yang lain
3. Jika sinar hasil pantulan atau biasan
menabrak obyek lain, maka:
4. Cari
titik tabraknya
5. Jika
mengenai obyek reflektif maka
6. Cari
sinar pantulannya
7. Ulangi
proses pemetaan (rekursi) dengan sinar pantulnya dan nilai energi yang
dikalikan dengan koefisien reflektifitasnya sebagai parameter
8. Jika
mengenai obyek transparan maka
9. Cari
sinar biasnya
10. Ulangi
proses pemetaan (rekursi) dengan sinar biasnya dan nilai energi yang dikalikan
dengan koefisien transparansinya sebagai parameter.
11. Jika obyek tidak mengkilap ataupun
transparan maka petakan intensitas pada
peta cahaya obyek tersebut.
Algoritma 2. Algoritma
untuk memetakan energi sinar pada obyek
Sinar hasil
pantulan dan biasan dipancarkan ke obyek lainnya terus - menerus sampai
energinya cukup kecil. Setiap kali
memantul atau membias maka energinya berkurang dengan mengalikan nilai energi
dengan koefisien transparansinya.
5. UJI COBA
Uji coba
terhadap perangkat lunak yang telah dibuat dengan menggunakan visual C++ 6.0
dan OpenGL ini bertujuan untuk mengetahui apakah output nya sudah sesuai. Untuk uji coba, data – data diatur sebagai berikut:
· Kamera
diletakkan di posisi (17, 3, 0) dengan arah pandang sejajar sumbu x negatif dan
arah atas sejajar sumbu y positif. Sudut pandang mata adalah 90°.
· Layar
pada kamera diset dengan perbandingan 1, layar gambar 300 x 300 .
· Warna
background diatur dengan kombinasi merah 0.3, hijau 0.3 dan biru 0.8
· Lampu
dengan koefisien ambient (0.5, 0.5, 0.5), koefisien diffuse dan specular (0.8
0.8 0.8). Lampu diletakkan di posisi ( 0, 19, 0 ). Energinya 20.
· Bidang
datar dengan normal (0, 1, 0), jarak –5 dari bidang y = 0. Untuk
koefisien ambient 0.7, diffuse 0.2, specular 0.65, reflektifitas 0 dan
transparansinya 0, bertekstur kotak – kotak dengan warna (1, 1, 0) dan warna ( 0.7, 0.7, 0.7).
· Bola
dengan titik pusat (2, 1, -1), jari - jari 4. Koefisien ambient 0.3, diffuse 0.9, specular 0.2,
reflektifitas 0.2, transparansinya 0.7 dan index biasnya 1.25. Bola
tidak bertekstur dan berwarna ( 0, 1, 0 ).
· Bola
dengan titik pusat (-12, 2, 4), jari - jari 6.5. Untuk koefisien ambient 0.5, diffuse 0.8, specular
0.2, reflektifitas 0.2 dan transparansinya 0 dan index biasnya 0. Bola tidak bertekstur dan diset dengan
warna ( 1, 0, 0 ).
· Skala map
( ukuran luas pada dunia nyata yang diwakili oleh setiap satuan luas pada
illumination map) pada bidang datar adalah 2.
Bola merah yang berada di belakang
terlihat dari bola hijau di depannya sehingga menampakkan transparansi pada
bola hijau. Daerah berwarna putih yang menunjukkan adanya pengumpulan sinar
yang dibiaskan ke daerah tersebut sehingga nampak sangat terang. Luas daerah
pengumpulan sinar ini sangat dipengaruhi oleh jumlah sinar yang dipancarkan dan
skala pemetaannya.
Dari
gambar di atas didapati efek caustik yang dihasilkan semakin memeluas dan
menguat. Selain jumlah sinar dan skala pemetaan, efek kaustik juga dipengaruhi
oleh index bias atau ketebalan lensa suatu obyek transparan.
Dari gambar di atas dapat
dilihat bahwa area efek caustik bergeser dari posisi semula, semakin menjauh
dari bola. Hal ini membuktikan bahwa semakin kecil indeks bias maka sinar
biasnya semakin jauh.
6. KESIMPULAN
Dari hasil
uji coba yang sudah dilakukan dan evaluasi yang dijelaskan pada bagian uji coba
sebelumnya maka dapat diambil kesimpulan sebagai berikut:
1. Obyek lain yang terlihat dari suatu obyek tembus
pandang penampakannya tergantung pada ukuran ketebalan lensa pada obyek
transparannya.
2. Efek caustik yang dihasilkan hanya mampu menghasilkan
efek caustik yang berwarna putih, bukannya sesuai dengan warna dari obyek tranparan.
Hal ini karena yang dipetakan bukan intensitasnya tetapi energinya.
3. Luas daerah efek kaustik tergantung pada jumlah sinar
yang dipancarkan dari lampu serta skala pemetaannya.
DAFTAR PUSTAKA
1. Arvo, J . 1986. Backward Ray Tracing. Apollo Computer,
Inc. Chelmsfort, MA didownload dari
situs:
http://graphics.stanford.edu/courses/cs348b-97/basics/intersection/slides/
.
2. Cheah, Shu Chiun. 1996. An Implementation Of A Recursive Ray Tracer That Renders Caustic Lighting Effects. Dept. of Computer Science, University of Maryland. didownload dari situs : http://www.cs.umd.edu/~mount/Indep/Scheah/causticpaper.html. 7 Juni 2001
- Halliday; Resnick; Krane. 1960. Physics 4th Edition Volume 2. John Willey & sons, Inc. 1020 pp
- Hill, F. 1990. Computer Graphics. Macmillan Publishing Company, New York. 754 pp.
- Purcell; Varberg. 1987. Calculus with Analytic Geometry 5th Edition. Prentice-Hall, Inc.503 pp
- Whitted. 1997. Basics of Ray Tracing. Lecture notes for Spring Quarter
7. Woo, M.; Neider, J.; Davis,
T. 1997. OpenGL Programming Guide Second
Edition. Silicon Graphics, Inc. 650 pp.
Sumber : fportfolio.petra.ac.id/user.../SemnasUTY-Liliana.doc (Full Text)
0 komentar:
Posting Komentar