Algoritma Ray Trasing [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

ALGORITMA RAY TRASING



1. Ray Tracing Ray tracing adalah suatu metode untuk menghasilkan gambar yang dibuat dalam lingkungan komputer 3D. Cara kerjanya adalah dengan mengikuti jejak (tracing) suatu sinar (ray) dari suatu mata imajiner yang melalui sebuah pixel di layar virtual dan mengakumulasi kontribusi setiap sinar dalam scene di pixel tersebut. Setiap



sinar



yang



berasal



dari



mata



tersebut



diperiksa



apakah



berpotongan/bertabrakan dengan objek-objek di dalam scene. Scene adalah kumpulan objek-objek dan sumber cahaya yang akan dilihat oleh pengamat. Setiap terjadi tabrakan antara sinar dan objek, warna pixel di-update, lalu tergantung dari jenis material objek dan algoritma yang dipakai, sinar tersebut dapat diteruskan atau dihilangkan. Dengan metode ray tracing ini, kita dapat membuat berbagai efek yang sulit atau bahkan tidak mungkin dengan metode lain. Diantara efek-efek tersebut adalah pemantulan, tembus cahaya, dan bayangan.



Dalam menggunakan ray tracing, umumnya dibuat suatu batasan agar lebih mangkus. Contohnya, pixel akan di-update jika sinar telah memantul n kali atau telah bergerak sejauh m tanpa berpotongan dengan apapun. N dan M adalah nilai pembatas. Intensitas cahaya dan warna dari pixel yang bersangkutan dihitung berdasarkan sejumlah algoritma, baik dengan algoritma klasik atau dengan teknik radiosity. Salah satu metode turunan dari ray tracing adalah photon mapping. Pada photon mapping ini, sinar dibuat dari sumber cahaya dan dari mata pengamat secara independen. Sinar yang dibuat akan terus bergerak dalam scene sampai habis diserap oleh sebuah permukaan, bergerak ke arah yang tidak akan terjadi perpotongan, atau



jaraknya terlalu jauh dari pengamat. Inti dari photon mapping adalah melakukan simulasi pencahayaan, namun hal ini jauh lebih lambat daripada ray tracing biasa. Ray Tracing bekerja dengan cara mensimulasi jalur sinar cahaya seperti di dunia nyata disaat mereka memantul dengan benda-benda – cahaya2 tersebut ditrace di dalam scene. Tujuannya adalah memilih warna yang didapat oleh sinar setelah tiap pantulan sebelum mencapai mata. Namun masalahnya ada pada pemantulannya – kemana arah pantulan sinar tersebut? dan berapa pantulan sinar yang harus didapatkan? Nah, sekarang mari kita anggap kita telah men”trace” beberapa sinar. Sebagian pantulan sinar tersebut akan langsung mencapai mata, sebagian lagi masih memantul-mantul dan akhirnya mencapai mata, dan sebagian besar lagi terpantul-pantul terus-menerus dan mungkin tidak akan mencapai mata sama sekali. Nah akibat dari sinar-sinar yang terpantul terus-menerus tersebut, usaha untuk mentrace sinar-sinar tersebut terbuang dengan sia-sia.



2. Definisi Ray Tracing Ray tracing adalah salah satu dari banyak teknik yang ada untuk membuat gambar dengan komputer. Ide dibalik ray tracing adalah bahwa gambar yang benar secara fisik tersusun oleh cahaya dan cahaya biasanya akan berasal dari sumber cahaya dan pantulan sekitar akan berasal dari sumber cahaya dan pantulan sekitar sebagai sinar cahaya (mengikuti jalur garis terputus) dalam adegan sebelum tertangkapmata kita atau ggp kamera. Kemampuan mereproduksi dalam simulasi komputer jalan yang diikuti dari sumber cahaya ke mata kita, kita kemudian akan dapat menentukan apa yang mata kita lihat.



3. Konsep Ray Tracing Terdapat dua konsep Ray Tracing, antara lain : Benda akan memantulkan cahaya dan retina mata akan menangkap cahaya yang di pantulkan oleh benda kemudian diterjemahkan oleh otak menjadi apa yang kita lihat Cahaya yang menabrak suatu permukaan benda dapat terjadi tiga hal yaitu penyerapan, pemantulan, dan pembiasan Oleh karena itu terdapat dua metode untuk menulusuri ray tracing, yaitu:



a. Forward Ray Tracing: Metode ini memperhitungkan semua sinar yang dipancarkan oleh sumber cahaya, baik yang mengenai mata ataupun tidak. b. Backward Ray Tracing: Menulusuri cahaya yang mengenai mata ditelusuri kembail ke sumber cahaya.



Namun perlu diperhatikan bahwa ada perbedaan mendasar antara konsep diatas dengan ray tracing. Pada ray tracing, umumnya sinar berasal dari mata pengamat, sedangkan pada kenyataannya sinar selalu berasal dari sumber cahaya. Karena itu ada dua jenis ray tracing, eye-based dan light-based. Eye-based adalah ray tracing dimana sinar berasal dari mata pengamat, sedangkan pada light-based ray tracing, sinar berasal dari sumber cahaya.



a. Forward Ray Tracing Metode ini memperhitungkan keakuratan penghitungan warna, namun menjadi tidak pg g , j efektif karena jumlah sinar yang dipancarkan oleh suatu sumber cahayasangat banyak(bisa y g y (mencapai jutaan sinar), dan jika sinar tidak mengenai mata maka sinar tersebut akan tidak gdiperhitungkan meski telah dihitung sebelumnya. Hal ini akan menimbulkan banyak y y penghitungan siasia karena banyaknya sinar yangtidak diperhitungkan kemudian Kelebihan dari metode ini adalah dapat memperoleh jumlah sinar yang lebih banyak memperoleh jumlah sinar yang lebih banyak daripada metode backward ray tracing.



Gambar 1.2 Forward Ray Tracing Pada gambar di atas tampak bahwa penelusuran sinar dilakukan mulai dari sumber p cahaya (dalam hal di atas adalah lampu) menuju ke mata,sehingga semua sinar yangberasal ,gg yg dari lampu harus diperhitungkan. Metode penelusuran dari



sumber cahaya menuju ke pyj mata inilah yang kemudian dinamakan metode forward raytracing. (Dari sumber diteruskan yg( menuju ke tujuan)



b. Backward Ray Tracing Sinar yang mengenai mata tersebut akan ditelusuri menuju ke layar penggambaran dengan memperhitungkan nilai dari objek-objek yang ada pada penggambaran sehingga didapatkan apakah sinar tersebut mengenai objek yang ada Proses penelusuran tersebut mengenai objek yang ada. Proses penelusuran ini dilakukan untuk setiap pixel dari ukuran layar penggambaran. (Hal ini menyebabkan semakin besar pgg ( yukuran layar penggambaran maka semakin lama proses perhitungan yang dilakukan, dan demikian pula sebaliknya Jika sinar mengenai salah satu benda maka akan diperhitungkan warna pixel tersebut akan diperhitungkan warna pixel tersebut dengan memperhitungkan warna benda dan juga nilai pencahayaan yang mengenai juga nilai pencahayaan yang mengenai benda tersebut. Jik i tid k i b d k il i Jika sinar tidakmengenai benda maka nilaipixel akan diset menjadi warna background (default warna background adalah warna hitam). Hal yang perlu diperhitungkan adalah bila sinar mengenai benda dan terdapat benda sinar mengenai benda dan terdapat bendalain di belakang benda yang ditabrak maka sinar yang mengenai benda tersebut hanya sinar yang mengenai benda tersebut hanya diperhitungkan untuk tabrakan dengan benda pertama (benda terdepan) karena benda pertama (benda terdepan) karena benda yang terletak di belakang benda yang lain pasti tidak akan terlihat



Gambar 1.3 Forward Ray Tracing Pada gambar diatas tampak bahwa sinar yang berasal dari sumber cahaya terus ke mata dan kemudian dari titik mata sinar tersebut ditelusuri kembali Dalam titik



mata, sinar tersebut ditelusuri kembali. Dalam contoh kasus di atas, sinar yang ditelusuri kembali ternyata menabrak benda pada posisi u,v pada frame buffer/ layar penggambaran. Pada saat menabrak inilah maka nilai pixel padaframe bufferakan dihitung dengan pada frame bufferakan dihitung dengan memperhitungkan semua nilai ambient / diffuse / speculardari semua cahaya yang diffuse / speculardari semua cahaya yang ada. Hal pertama yang harus dilakukan adalah melakukan setting / digunakan untuk penghitungan objek-objek 3 dimensi Hal tersebut dilakukan dengan mengasumsikan bahwa layar penggambaran memiliki 2 variabel sumbu yaitu u dan v Sumbu u adalah sumbu ke kanan dan range dari dan v. Sumbu u adalah sumbu ke kanan dan range darisumbu u adalah -W sampai dengan W. Sumbu v adalah sumbu ke atas dan range dari sumbu v adalah –H g sampai dengan H



Gambar 1.4 Penentuan sumbu u dan v Langkah selanjutnya yang dilakukan adalah penentuan nilai dari W dan H yang sebelumnya diasumsikan sebagai range dari sumbu u dan v tersebut. Penghitungan nila W dan H tampak seperti gambar di bawah ini: bawah ini:



Gambar 1.5 Menentukan Nilai W dan H dan transformasinya Pada gambar di atas (gambar (a)) tampak bahwa mata memiliki sudut pandang yang kita namakan sebagai θ. Sehingga untuk mendapatkan nilai tinggi dari near



plane / W Sehingga untuk mendapatkan nilai tinggi dari near plane / Wmaka bisa didapatkan dari rumus matematika yaitu (Hill 1990); ) H =N.Tan(θ/2) (Rumus 1.)



Variabel N adalah jarak antara mata dengan bidang-bidang u dan v. Sedangkan untuk penentuan nilai W, didapatkan dengan mengalikan nilai H dengan aspect ratiolayar penggambaran / bidang u-v(W=Haspect ratio) Setelah penggambaran / bidang uv. (W H. aspect ratio). Setelahnilai H dan W ditentukan, maka nilai posisi Ucdan Vr, yang bila diturunkan adalah sebagai berikut (Hill 1990):



Rumus di atas digunakan untuk menentukan nilai (Uc,Vr) dalam hubungannya dengan W nilai (U c,Vr) dalam hubungannya dengan W dan H. Hal berikutnya yang dilakukan adalah penentuan persamaan sinar ditelusuri dari penentuan persamaan sinar ditelusuri dari mata ke pixel tujuan yang dilakukan dengan menggunakan rumus (Hill 1990): r(t)=eye(1-t) + (eye – Nn+ Ucu+ Vrv)t Eyeadalah titik mata (dalam x,y,z), N adalah jarak antara mata dengan bilangan u-v, Ucdan Vr adalah posisi pixel pada bidang uv dan t adalah titik tabrak sinar dengan benda (akan bidang u-v dan t adalah titik tabrak sinar dengan benda (akan diperhitungkan kemudian). Rumus di atas kemudian disederhanakan menjadi (Hill 1990): r(t)=eye+dirrc .t, dirrc =-Nn+ Ucu+ Vr (Rumus 4.) Secara umum, ray tracingdapat dibentuk dari algoritma biktii berikut ini:



4. Keutungan dan Kekurangan Ray Tracing Keuntungan secara



akurat



menghitung



penerangan



langsung



bayangan,pemantulan,spekular dan transparasi. Kelemahan membutuhan waktu



perhitungan



yang lama.



Setiap sudut



pandang



membutuhkan perhitunganya masing-masing.Tidak menghitung pemantulan dari objek objek lain terhadap sebuah objek



5. Algoritma Ray Tracing Sebelum membahas algoritma ray tracing, ada beberapa hal penting yang harus kita perhatikan :



1.



Tiga efek umum dalam ray tracing adalah pemantulan, tembus cahaya, dan



bayangan. 2. Ray tracing adalah fungsi rekursif. Setiap sebuah sinar berpotongan dengan sebuah permukaan (disebut juga tabrakan), terjadi rekursi. Dari titik perpotongan tersebut, satu atau lebih sinar dibuat untuk menentukan objek apa yang terpantul di titik itu (jika memantulkan cahaya), objek apa yang terlihat melalui titik itu (jika tembus cahaya), sumber cahaya mana saja yang dapat terlihat dari titik itu (untuk menentukan bayangan), dan lain-lain.



Basis dari fungsi ray tracing ini adalah batasan dimana sinar berhenti bergerak. Basis-basis yang umum digunakan diantaranya :



a. Jika tidak berpotongan dengan objek maka warna yang dihasilkan adalah warna latar belakang b. Jika objek yang berpotongan terdekat adalah sumber cahaya maka warna yang dihasilkan sesuai warna cahaya c. Jika jumlah pantulan melewati batas pemantulan maka sinar berhenti bergerak d. Jika jarak sinar dari layar melewati jarak maksimum maka sinar berhenti bergerak 3. Sinar Sinar yang digunakan dalam ray tracing adalah sebuah vektor. Persamaan sebuah sinar dapat ditulis sebagai :



S + tD



S = titik sumber sinar (x,y,z)



t = panjang sinar



D = arah sinar (dalam vektor satuan)



4. Fungsi Perpotongan Untuk menentukan apakah sebuah sinar berpotongan dengan objek, diperlukan sebuah fungsi perpotongan. Fungsi ini dibuat spesifik untuk setiap jenis objek, misalnya bola atau poligon. Sebagai contoh, kita akan membuat fungsi perpotongan dengan bola. Persamaan bola pada ruang 3D :



(x-a)2 + (y-b)2 + (z-c)2 = r2



(x,y,z) adalah titik pada bola



(a,b,c) adalah pusat bola



Substitusi x,y, dan z pada persamaan bola dengan persamaan sinar :



((S.x+t(D.x))-a)2 + ((S.y+t(D.y)-b)2 + ((S.z+t(D.z)-c)2 = r2



Agar lebih mudah membaca rumus diatas maka kita lakukan substitusi :



A = (D.x)2 + (D.y)2 + (D.z)2



B = 2. ((D.x)(S.x-a) + (D.y)(S.y-b) + (D.z)(S.z-c)) C = ((S.x-a)2 + (S.y-b)2 + (S.z-c)2) – r2



Didapat persamaan kuadrat :



At2 + Bt + C=0



t bisa didapat dengan menyelesaikan persamaan kuadrat diatas: t = (-B ± sqrt(B2-4AC))/2A Jika t adalah bilangan real, maka sinar berpotongan dengan bola. Jika tidak, maka sinar tidak berpotongan dengan bola.



1. Pemantulan



Gambar 1.6 Pemantulan Pada Ray Tracing



Jika permukaan yang ditabrak sinar adalah permukaan yang memantulkan cahaya seperti cermin, ray tracer harus menentukan warna titik perpotongan tersebut



dengan memperhitungkan warna permukaan dan warna yang terpantul pada titik tersebut. Hal itu dilakukan dengan menentukan arah sinar pantulan dan membuat sinar baru yang bergerak sesuai arah tersebut.



Persamaan untuk menentukan arah sinar pantul :



P = 2*(N.(-D))*N +D



N adalah vektor normal permukaan



D adalah arah sinar 6. Tembus cahaya Tembus cahaya memiliki sifat yang mirip dengan pemantulan, tapi sinar tidak dipantulkan pada permukaan, melainkan dibiaskan di dalam objek yang bersangkutan. Arah sinar bias ditentukan berdasarkan indeks bias benda tersebut, jumlahnya bisa lebih dari satu atau tidak ada sama sekali. Sinar baru akan dibuat dengan arah sinar bias.



Gambar 1.7 Pembiasan pada Ray Tracing



Persamaan untuk menentukan arah sinar bias : T = ((n1/n2)(N.I) – sqrt(1 - (n1/n2)2 . (1 – (N.I)2) ) ) . N – (n1/n2).I



T adalah arah sinar bias



n1 adalah indeks bias material awal



n2 adalah indeks bias material objek



I adalah sinar awal



N adalah vektor normal permukaan



7. Bayangan



Gambar 1.8 Pengecekan Bayangan pada Ray Tracing Untuk menentukan apakah titik perpotongan dengan permukaan berada dalam suatu wilayah bayangan dilakukan pemeriksaan antara titik tersebut dengan semua sumber cahaya. Hal ini dilakukan dengan membuat sinar-sinar baru dari titik ke sumber cahaya. Jika ada objek diantara titik dan sumber cahaya, maka titik tersebut tidak akan mendapat cahaya dari sumber yang bersangkutan, dengan kata lain, titik tersebut berada dalam bayangan. Contoh dapat dilihat pada gambar 4 diatas, titik pada objek 1 mendapat bayangan dari sumber cahaya 2, dan mendapat cahaya dari sumber cahaya 1. Dari semua informasi diatas kita dapat membuat sebuah algoritma pseudocode untuk ray tracing :



Gambar 1.9 algoritma pseudocode untuk ray tracing : 6. Implementasi Ray Tracing Implementasi Ray Tracing pada film Animasi Big Hero 6 Big Hero 6 adalah film 3D superhero animasi komputer yang diproduksi oleh Walt Disney Animation Studios, berdasarkan dari tim superhero Marvel Comics dengan nama yang sama. Yang merupakan film animasi ke-54 di Walt Disney Animated Classics series. Berikut adalah contoh dari implementasi RayTracing yang coba kami telusuri pada film animasi BigHero6



Gambar 1.10 Implementasi pada film Animasi Big Hero 6 Big Hero 6 Pada gambar diatas tokoh utama dalam film ini ini yaitu Hiro dan BayMax, dan pada gambar tersebut terlihat ada efek glossy atau seperti kilauan cahaya pada bagian permukaan baymax, yang seakan Bagian body(metal) baymax memantulkan cahaya lampu dan memantulkannya ke obyek lain yang ada disekitarnya, yang membuat body metal dari baymax terlihat lebih realistik



Gambar 1.11 Implementasi pada film Animasi Big Hero 6 Big Hero 6 Pada Scene saat hiro memeluk baymax ini terlihat sekali penggunaan raytracing. Sorotan dari sinar matahari disore hari yang menembus kaca sampai kedalam ruangan, membuat efek pantulan sinar matahari yang dapat dlihat dengan lantai ber warna kuning dari hasil pantulan tersebut.



1.12 Implementasi pada film Animasi Big Hero 6 Big Hero 6 Scene ini memperlihatkan adegan di atas langit sore senja, terlihat efek raytracing memberikan pantulan pada permukaan sebelah kanan dari body baymax dan pada permukaan helm dari hiro, membuat suasan sore terlihat lebih realistik 7. Implemetasi Ray Tracing pada film “Cloudy with a Chance of Meatballs 2” Berikut adalah contoh implementasi penggunaan efek ray tracking pada perfilman ternama dan kami mengambil contoh yaitu film Cloudy with a Chance of Meatballs 2. Pada gambar dibawah ini dapat kita lihat pemeran utama yang bernama Flint Lockwood bersama dengan beberapa pemeran lawanya yaitu Sam Sparks, Earl Devereaux dan yang lainya. Pada texture karakter strawberry yang sedang dibawa oleh Sam diberi efek kilauan cahaya (Glossy) sehingga terlihat memantulkan cahaya sinaran yang dating dari arah yang berlawanan agar terlihat lebih realistic. Kemudian pada karakter manusianya diberi efek warna matte yang seakan akan membuat terkesan seperti pantulan cahya pada kulit aslinya (In Real Life (IRL)). Efek ray tracking ini juga harus didukung dengan efek pencahayaan yang juga harus terlihat realistic dan biasanya pada blender penambahan efek pencahayaan ini menggunakan node editor.



Gambar 1.13 Implementasi Efek Ray Tracing pada film “Cloudy with a Chance of Meatballs 2”



Gambar 1.14 Implementasi Efek Ray Tracing pada film “Cloudy with a Chance of Meatballs 2”



Gambar 1.15 Implementasi Efek Ray Tracing pada film “Cloudy with a Chance of Meatballs 2”