Anda di halaman 1dari 12

Raytracing (1)

Follow the rays

Apa itu raytracing ?


Metode pembuatan citra yang dilakukan dengan menelusuri berkas cahaya dari lampu, permukaan benda sampai ke mata. Merupakan metode yang bisa menghasilkan citra yang kualitasnya mirip foto (photorealistic). Termasuk metode yang paling berat perhitungannya

Dunia Nyata
Pada dunia nyata, kita bisa melihat suatu benda karena mata kita menerima cahaya dari sumber cahaya yang dipantulkan oleh permukaan benda.
sumber cahaya viewer (mata atau kamera)

benda

Tapi di Komputer ada Kendala


Kita tidak bisa menirukan kejadian dunia nyata di komputer. Terlalu banyak cahaya yang tidak sampai ke mata kita (tidak terlihat) yang harus dihitung dengan sia-sia
sumber cahaya viewer (mata atau kamera)

benda

Cahaya yang tergambar dengan warna jingga adalah cahaya yang harus dihitung dengan sia-sia

Triknya : Buat Kebalikannya


Lebih mudah menghitung rute cahaya dimulai dari mata, menuju benda, sampai akhirnya ke sumber cahaya.
sumber cahaya viewer (mata atau kamera)

benda

Dengan demikian dijamin hanya cahaya yang sampai ke mata yang kita hitung !

Model Raytracing Sederhana

Algoritma Umum Raytracing


For y := first_row to last_row For x := first_column to last_column ray := CreateRay(eye_position, pixel_pos(x,y));

nearest.pos := 9999999999999; For obj := first_object to last_object intersect := ComputeIntersection(ray,obj); if intersect.pos<nearest.pos then nearest := intersection;
if nearest.pos < 9999999999999 then SetPixel(x,y,ComputeColor(nearest)) else SetPixel(x,y,background_color);

Lebih detail lagi


Bagaimana kita menghitung perpotongan cahaya dengan suatu objek aka. ComputeIntersection() ?
Modelkan cahaya dengan persamaan parametrik garis Modelkan objek dengan persamaan matematikanya Substitusikan persamaan parametrik cahaya ke persamaan matematika objek untuk mendapatkan posisi perpotongan. Karena persamaan matematika berlainan untuk tiap jenis objek, maka cara perhitungan juga lain-lain

Sebagai Contoh

(-2,2)

(0,0)

viewer (-1,0,0)
Bola dengan pusat (3,0,0), Jari-jari = 2 (2,-2)

screen bidang x=0

Dimodelkan

(0,0)

viewer (-1,0,0)
Pers.parametrik sinar : x=-1(1-t)=t-1 y=0 z=0

(x-3)2+y2+z2=4

Pers.parametrik sinar : x=-1(1-t)=t-1 y=0 z=0 Persamaan bola : (x-3)2+y2+z2=4

Dihitung

(0,0) viewer (-1,0,0)

(t-1-3)2=4 (t-4)2=4 t2-8t+16=4 t2-8t+12=0 (t-6)(t-2)=0

Jadi perpotongannya di : t=6 dan t=2

atau
(5,0,0) dan (1,0,0)

Lalu bagaimana ?
Setelah diketahui bahwa sinar memotong bola di :
t = 2, atau (1,0,0) t = 6, atau (5,0,0)

sesuai dengan algoritma, maka dipilih perpotongan yang paling dekat dengan viewer, yaitu : t = 2, atau (1,0,0) Lalu hitunglah warna pada posisi perpotongan tersebut, dan plotlah pixel pada posisi (0,0) dengan warna itu. Bagaimana menghitung warna pada perpotongan ???

Anda mungkin juga menyukai