Anda di halaman 1dari 15

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 sia-
sia 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”

Anda mungkin juga menyukai