Entri Populer

Minggu, 27 Maret 2011


Pemodelan Pemantulan dan Pembiasan Cahaya oleh Obyek Mengkilap dan Obyek Transparan dengan Menggunakan Ray Tracing

oleh


MUH. JUFRI

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 dating dan sinar pantul dapat dilihat pada gambar 1. Secara sederhana dapat dikatakan sudut antara  dengan  sama besar dengan sudut antara  dengan .  


Text Box:
 







                                                                                                           

      Gambar 1. Pembentukan sinar pantul


Untuk mencari arah sinar pantul dapat dirumuskan (Whit 1980) seperti pada persamaan 1.
= 2 * N * (N · L) – L                                                ( 1 )
            Dinama :                     = sinar pantul
                                                = normal
                                                 = negasi dari sinar datang

· 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, maka hukum Snell dinyatakan pada persamaan 2.
                                                                                            (2)    
c adalah satu banding n sehingga persamaan diatas dapat ditulis dengan                                                               

                    sin(θ1) * n1 = sin(θ2) * n2                                                            (3)
dimana :          θ1  dan θ2 = sudut dating dan sudut pantul
c1 dan c2 = kecepatan sinar di medium asal dan tujuan
n1 dan n2 = index bias medium asal dan tujuan sinar

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) seperti pada persamaan 4,5 dan 6.
                                                                                          (4)
                                                                                
                                                                                 (5)
                                                                                                          (6)
                               
Dimana :           d  = sinar bias.
                          δ  = jarak antara cahaya yang dibiaskan dengan garis normal.
                          Un= normal bidang
                          c1= kecepatan pada medium 1
                          c2= kecepatan pada medium 2
                          b  = sinar dating yang mengenai suatu permukaan obyek
Gambar pembiasan cahaya menurut hukum Snell terlihat pada gambar 2.
Text Box:   











Gambar 2. Pembiasan sinar dari medium 1

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. Gambarannya bisa dilihat pada gambar 3.

Text Box:   










Gambar 3. Mencari arah pancaran sinar dari sumber cahaya.

Sedangkan cara untuk mendapatkan titik pada permukaan bola digunakan persamaan 7:
      P (u, v) = (r * cos (v) * cos (u), r * cos (v) * sin (u), r * sin (v))                                 (7)
dimana            r = jari-jari bola ( bernilai 1)
u = sudut searah sumbu mendatar bernilai antara 0 s/d 2p
v = sudut searah sumbu tegak bernilai antara -p/2 s/d p/2.
            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, seperti terlihat pada gambar 4.

Text Box:             








Gambar 4. Pemetaan sinar pada permukaan obyek.
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. 
                                    L = 4 * p * r² / q                                                                (8)
Dimana :                     L = luas permukaan bola
                                    p = konstanta bernilai 3,141596 ( 22/7 )
                                    r  = radius bola
                                    q = jumlah qrid pada peta cahaya bola
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. Susunan class digambarkan pada diagram 1.
 

                  Diagram 1 : Desain class pada ray tracing.

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.
1.    untuk ( u= 0 ; u < π ; u+= 2π/n )
2.    untuk ( v= 0 ; v < π ; v+= π/n )
3.    untuk setiap sumber cahaya
4.    cari arah pancaran sinar
5.    cari titik tabrak sinar dengan semua obyek
6.    jika menabrak obyek maka
7.    jika mengenai benda reflektif maka
8.    cari sinar pantulannya
9.    petakan dengan parameter sinar pantulnya         
10.  jika mengenai benda transparan maka
11.  cari sinar biasnya
12.  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. 
Dengan data – data tersebut di atas maka didapatkan hasil seperti pada gambar 5.
                        Gambar 5. Daerah efek caustik yang berwarna putih terang

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. Jika skala pemetaannya diperluas dan jumlah sinar yang dipancarkan dari lampu diperbanyak maka hasilnya akan tampak seperti gambar 6.
Gambar 6. Daerah efek caustik semakin meluas

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. Jika index biasnya dikurangi menjadi 1.15 maka gambar yang dihasilkan seperti pada gambar 7.
Gambar 7. Area efek caustik bergeser dari posisi sebelumnya..

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.































    
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
  1. Halliday; Resnick; Krane. 1960. Physics 4th Edition Volume 2. John Willey & sons, Inc. 1020 pp
  2. Hill, F. 1990. Computer Graphics. Macmillan Publishing Company, New York. 754 pp.
  3. Purcell; Varberg. 1987. Calculus with Analytic Geometry 5th Edition. Prentice-Hall, Inc.503 pp
  4. 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.



































Pemodelan Pemantulan dan Pembiasan Cahaya oleh Obyek Mengkilap dan Obyek Transparan dengan Menggunakan Ray Tracing

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 dating dan sinar pantul dapat dilihat pada gambar 1. Secara sederhana dapat dikatakan sudut antara  dengan  sama besar dengan sudut antara  dengan .  


Text Box:
 







                                                                                                           

      Gambar 1. Pembentukan sinar pantul


Untuk mencari arah sinar pantul dapat dirumuskan (Whit 1980) seperti pada persamaan 1.
= 2 * N * (N · L) – L                                                ( 1 )
            Dinama :                     = sinar pantul
                                                = normal
                                                 = negasi dari sinar datang

· 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, maka hukum Snell dinyatakan pada persamaan 2.
                                                                                            (2)    
c adalah satu banding n sehingga persamaan diatas dapat ditulis dengan                                                               

                    sin(θ1) * n1 = sin(θ2) * n2                                                            (3)
dimana :          θ1  dan θ2 = sudut dating dan sudut pantul
c1 dan c2 = kecepatan sinar di medium asal dan tujuan
n1 dan n2 = index bias medium asal dan tujuan sinar

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) seperti pada persamaan 4,5 dan 6.
                                                                                          (4)
                                                                                
                                                                                 (5)
                                                                                                          (6)
                               
Dimana :           d  = sinar bias.
                          δ  = jarak antara cahaya yang dibiaskan dengan garis normal.
                          Un= normal bidang
                          c1= kecepatan pada medium 1
                          c2= kecepatan pada medium 2
                          b  = sinar dating yang mengenai suatu permukaan obyek
Gambar pembiasan cahaya menurut hukum Snell terlihat pada gambar 2.
Text Box:   











Gambar 2. Pembiasan sinar dari medium 1

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. Gambarannya bisa dilihat pada gambar 3.

Text Box:   










Gambar 3. Mencari arah pancaran sinar dari sumber cahaya.

Sedangkan cara untuk mendapatkan titik pada permukaan bola digunakan persamaan 7:
      P (u, v) = (r * cos (v) * cos (u), r * cos (v) * sin (u), r * sin (v))                                 (7)
dimana            r = jari-jari bola ( bernilai 1)
u = sudut searah sumbu mendatar bernilai antara 0 s/d 2p
v = sudut searah sumbu tegak bernilai antara -p/2 s/d p/2.
            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, seperti terlihat pada gambar 4.

Text Box:             








Gambar 4. Pemetaan sinar pada permukaan obyek.
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. 
                                    L = 4 * p * r² / q                                                                (8)
Dimana :                     L = luas permukaan bola
                                    p = konstanta bernilai 3,141596 ( 22/7 )
                                    r  = radius bola
                                    q = jumlah qrid pada peta cahaya bola
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. Susunan class digambarkan pada diagram 1.
 

                  Diagram 1 : Desain class pada ray tracing.

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.
1.    untuk ( u= 0 ; u < π ; u+= 2π/n )
2.    untuk ( v= 0 ; v < π ; v+= π/n )
3.    untuk setiap sumber cahaya
4.    cari arah pancaran sinar
5.    cari titik tabrak sinar dengan semua obyek
6.    jika menabrak obyek maka
7.    jika mengenai benda reflektif maka
8.    cari sinar pantulannya
9.    petakan dengan parameter sinar pantulnya         
10.  jika mengenai benda transparan maka
11.  cari sinar biasnya
12.  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. 
Dengan data – data tersebut di atas maka didapatkan hasil seperti pada gambar 5.
                        Gambar 5. Daerah efek caustik yang berwarna putih terang

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. Jika skala pemetaannya diperluas dan jumlah sinar yang dipancarkan dari lampu diperbanyak maka hasilnya akan tampak seperti gambar 6.
Gambar 6. Daerah efek caustik semakin meluas

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. Jika index biasnya dikurangi menjadi 1.15 maka gambar yang dihasilkan seperti pada gambar 7.
Gambar 7. Area efek caustik bergeser dari posisi sebelumnya..

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.































    
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
  1. Halliday; Resnick; Krane. 1960. Physics 4th Edition Volume 2. John Willey & sons, Inc. 1020 pp
  2. Hill, F. 1990. Computer Graphics. Macmillan Publishing Company, New York. 754 pp.
  3. Purcell; Varberg. 1987. Calculus with Analytic Geometry 5th Edition. Prentice-Hall, Inc.503 pp
  4. 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.



































Tidak ada komentar:

Posting Komentar