BAB 4 PENGUJIAN SISTEM
2.4 Ray Tracing
t u v = 1 |−d, E1, E2| |T, E1, E2| |−d, T, E2| |−d, E1, T | (2.11)
dimana E1= V1−V0, E2= V2−V0, dan T = o − V0. Dari aturan aljabar linier, diketahui bahwa |A, B, C| = −(A ×C) · B = −(C × B) · A sehingga persamaan diatas dapat ditulis ulang sebagai berikut
t u v = 1 (d × E2) · E1 (T × E1) · E2 (d × E2) · T (T × E1) · D = 1 P· E1 Q· E2 P· T Q· d (2.12)
dimana P = (d × E2) dan Q = T × E1. Pada implementasinya, variabel P dan Q dapat digunakan kembali dalam perhitungan untuk mempercepat proses perhitun-gannya. Gambar 2.14 merupakan proses perhitungan perpotongan ray dan segitiga dilihat secara geometri dengan M = [−d, V1−V0, V2−V0].
2.4 Ray Tracing
Ray tracing merupakan suatu metode penggambaran dengan cara mensimu-lasikan perjalanan partikel cahaya dari sumber cahaya ke mata penglihat. Pada perkembangannya metode ray tracing kemudian sedikit berubah dari pengertian asalnya yaitu mensimulasikan perjalanan partikel cahaya dari mata penglihat ke sumber cahaya. Perubahan tersebut digunakan untuk mengefisienkan proses
perhi-Gambar 2.14: Proses perhitungan perpotongan ray-segitiga secara geometri [MT97]
tungan dan pengertian tersebut hanya digunakan pada bidang keilmuan komputer grafik. Ray tracing diperkenalkan pada makalah [Whi80] dan masih dilakukan den-gan bentuk-bentuk geometri yang sederhana seperti bidang datar dan bola.
Gambar 2.15 merupakan skema dasar dari ray tracing, dimana dalam per-jalanan partikel sinar dari mata penglihat ke sumber cahaya terdapat dua pros-es yang mensimulasikan sifat-sifat dari cahaya yaitu refraksi dan refleksi. Garis berwarna biru pada gambar 2.15 merupakan partikel sinar yang langsung menuju ke sumber cahaya sedangkan garis berwarna hijau dan biru merupakan partikel ca-haya yang melalui proses refleksi dan refraksi untuk dapat mencapai sumber caca-haya. Pengertian refleksi adalah pemantulan sinar oleh suatu medium tertentu sedangkan refraksi merupakan penyerapan cahaya pada medium yang berbeda. Jika suatu ap-likasi penggambaran tiga dimensi yang mengunakan ray tracing telah mempunyai fungsi untuk menghitung refraksi dan refleksi maka aplikasi tersebut dikatakan telah menerapkan teknik global illumination dalam pengambarannya. Pengertian glob-al illuminationberarti perhitungan pencahayaannya tidak hanya berasal hanya dari satu titik saja tetapi merupakan campuran cahaya dari titik tersebut dengan efek ca-haya yang ditimbulkan dari lingkungan di sekitarnya.
2.4.1 Jenis Ray Tracing
tesSimulasi partikel cahaya pada ray tracing dapat dilakukan dengan dua cara berbeda, yaitu dengan menembakkan ray dari sumber cahaya ke dalam scene dan berakhir pada mata penglihat (seperti yang terjadi di alam) atau dengan menem-bakkan ray dari bidang gambar dan berakhir pada sumber cahaya. Walaupun ide dari kedua metode tersebut sama, tetapi kedua metode tersebut menghasilkan hasil
Gambar 2.15: Skema ray tracing
penggambaran yang berbeda, efisiensi yang berbeda, serta tingkat kesusahan imple-mentasi yang berbeda.
Forward Ray Tracing
Forward ray tracingmerupakan tipe ray tracing dengan metode menembakkan ray dari sumber cahaya ke dalam scene dan berakhir pada mata penglihat. Forward ray tracing mensimulasikan ray sebagai partikel cahaya seperti pada dunia nya-ta sehingga dibutuhkan banyak sekali ray untuk menghasilkan gambar yang baik. Gambar 2.16 merupakan ilustrasi metode forward ray tracing. Pada gambar terse-but, terlihat bahwa tidak semua ray yang ditembakkan dan ditelusuri dari sumber cahaya sampai ke mata penglihat, pada gambar ray yang sampai ke mata penglihat berwarna biru sedangkan ray yang tidak sampai ke mata penglihat berwarna merah, sehingga pada hasil penggambarannya akan menghasilkan banyak noise yang san-gat mengganggu. Satu-satu penyelesaian untuk menghilangkan noise pada gambar hasil adalah dengan menembakkan ray lebih banyak lagi sampai noise tidak ter-lihat sehingga untuk mendapatkan hasil penggambaran yang baik dibutuhkan daya komputasi yang sangat tinggi. Kelebihan dari forward ray tracing adalah mendekati perumusan dari persamaan global illumination dengan syarat ray yang ditembakkan dari sumber cahaya ke dalam scene sangat banyak.
Backward Ray Tracing
Backward ray tracing menggunakan analogi yang berkebalikan dengan for-ward ray tracing, yaitu dengan menembakkan ray dari mata penglihat ke bidang
Gambar 2.16: Forward ray tracing
gambar lalu masuk ke scene dan berakhir pada sumber cahaya. Backward ray tracingmenghasilkan gambar yang kurang lebih sama dengan forward ray tracing tetapi mengefisienkan ray yang ditelusuri pada scene dan mengurangi daya kom-putasi untuk prosesnya. Kekurangan dari metode backward ray tracing adalah adanya efek aliasing yang menghasilkan gambar yang sedikit kabur. Efek alias-ingterjadi karena sampling setiap titik pada gambar hasil pada dasarnya merupakan suatu bidang besar yang terdiri dari gabungan beberapa sampling tetapi pada back-ward ray tracing hanya direpesentasikan oleh satu ray sehingga warna yang di-hasilkan tidak sesuai dengan kondisi scene. Pada metode backward ray tracing, so-lusi untuk menghilangkan efek aliasing adalah dengan menggunakan metode super sampling dimana setiap titik pada gambar hasil tidak direpresentasikan sebagai satu raytetapi sebagai 9 ray yang berjarak seragam dan hasilnya merupakan rata-rata warna yang dihasilkan oleh kesembilan ray tersebut sehingga menghasilkan perpin-dahan warna yang lebih halus. Gambar 2.17 merupakan ilustrasi penembakan ray pada satu titik pada gambar hasil dengan menggunakan super sampling.
2.4.2 Tahapan Proses Pada Ray Tracing
Tahapan proses yang dilakukan pada ray tracing ada 5 buah yaitu persiapan scene, membangun primary ray, menembakkan ray serta melakukan deteksi perpo-tongan ray dengan objek yang ada di scene, membangun shadow, dan menentukan refleksi atau refraksi ray. Algoritma 2.2 merupakan algoritma dasar untuk proses ray tracing.
Gambar 2.17: Super sampling pada backward ray tracing8
Persiapan Scene
Persiapan scene merupakan tahapan dimana program menginisialisasi semua struktur data dan memuat model atau scene ke dalam memori komputer untuk diproses lebih lanjut. Selain itu, program juga melakukan konfigurasi terhadap rameter kamera yang digunakan untuk penggambaran. Proses lain yang terjadi pa-da tahapan ini apa-dalah mengorganisasi pa-data objek atau polygon papa-da scene dengan struktur data tertentu seperti array dan tree. Sebagian struktur data tersebut tidak hanya menyimpan pointer ke data polygon tetapi bisa menyimpan partisi-partisi dari sceneatau membuat objek-objek bayangan untuk meningkatkan efisiensi penggam-baran. Struktur data yang dapat meningkatkan efisiensi penggambaran disebut den-gan accelerated structure (struktur pemercepat), contoh accelerated structure adalah kd-tree, uniform grid, BVH (Bounding Volume Hierarchy) dan hybrid. Pada sub bab berikutnya akan dipaparkan salah satu accelerated structure yang digunakan dalam tesis ini yaitu uniform grid.
Membangun Primary Ray
Tahapan pembangunan primary ray dilakukan untuk menentukan ray-ray yang akan ditembakkan ke dalam scene dari mata penglihat untuk setiap titik pada bidang gambar. Primary ray dipengaruhi oleh beberapa faktor yaitu parameter kamera yang digunakan, resolusi bidang gambar yang digunakan, dan metode anti-aliasing yang digunakan bila menggunakan anti-aliasing dalam penggambarannya.
Algoritma 2.2 Algoritma ray tracing [Hav00]
1>> Preparing scene
2>> Generating primary ray 3>> Shooting ray to the scene
>> Find the nearest intersection point in scene >> If not found fill color with background color
>> Calculating the direct lighting of the intersection point >> Check if point under shadow or not
>> Creating a reflection and refraction ray for next trace >> Go to step 3 and repeat the step
Menembakkan Ray
Penembakan ray dilakukan untuk mencari titik perpotongan terdekat antara ray dengan objek yang ada pada scene. Metode pendeteksian apakah suatu ray berpo-tongan dengan suatu objek tergantung pada bentuk geometri objeknya. Sebagai contoh jika objek berupa segitiga maka dapat digunakan metode yang dipaparkan pada makalah [MT97] sedangkan jika objek berupa AABB maka dapat digunakan metode “slabs” yang dipaparkan pada makalah [KK86]. Proses penembakan ray dan pendeteksian perpotongan ray dengan objek pada scene merupakan tahapan yang paling banyak membutuhkan daya komputasi dibandingkan pada tahapan-tahapan yang lain, sebagai gambaran saja jika pada scene terdapat 10 ribu objek dan resolusi bidang gambar yang digunakan adalah 512 x 512 maka pendeteksian yang harus dilakukan adalah 10 ribu x 512 x 512 = 2.621.440.000 pendeteksian dengan asumsi bahwa tidak ada metode anti-aliasing dan accelerated structure yang digu-nakan pada sistem.
Setelah mendapatkan titik perpotongan yang paling minimum dari ray dan ob-jek yang ada pada scene, maka proses selanjutnya adalah menghitung direct light-ing sesuai dengan sumber cahaya yang didefinisikan. Direct lighting merupakan gabungan dari ambient lighting, diffuse lighting, dan specular lighting.
Membangun Shadow
Shadowmerupakan salah satu efek yang dapat diimplementasikan dengan mu-dah pada ray tracing. Setelah melakukan menembakkan ray dan pendeteksian per-potongan antara ray dengan objek-objek pada scene, tahapan selanjutnya yang bisa dilakukan adalah melakukan perhitungan shadow. Ada beberapa jenis shadow ter-gantung dari berapa sumber cahaya yang ada serta bentuk sumber cahaya yang digu-nakan (uniform atau non-uniform). Jika digudigu-nakan sumber cahaya berbentuk titik, hanya berjumlah satu buah, dan memancarkan cahaya secara uniform ke segala arah maka akan didapatkan efek hard shadow tetapi jika sumber cahaya lebih dari
Gambar 2.18: Shadow ray
satu atau bentuk dari sumber cahaya tidak berupa titik (memancarkan cahaya secara tidak uniform) maka akan terbentuk efek soft shadow.
Penentuan apakah suatu titik perpotongan antara ray dengan objek yang ada pa-da scene berapa-da papa-da pa-daerah shadow atau tipa-dak dengan menembakkan pa-dan menelu-suri ray tambahan yang dinamakan shadow ray ke masing-masing sumber cahaya. Jika shadow ray menambrak suatu objek pada scene maka titik perpotongan antara raydengan objek pada scene yang telah didapatkan diawal berada pada daerah shad-owtetapi jika shadow ray berhasil mencapai sumber cahaya tanpa menabrak objek lain pada scene maka titik perpotongan antara ray dengan objek pada scene yang telah didapatkan diawal tidak berada pada daerah shadow. Gambar 2.18 merupakan gambaran penembakan dan penelusuran shadow ray terhadap tiga sumber cahaya. Membangun Refleksi dan Refraksi Ray
Tahapan proses yang terakhir pada ray tracing adalah membuat refleksi dan re-fraksi ray dan setelah itu program akan melakukan penelusuran ulang sesuai dengan refleksi dan refraksi ray yang telah dibuat. Pembangunan refleksi dan refraksi ray adalah membuat hasil penggambaran menjadi lebih realistik tetapi yang perlu diin-gat adalah refleksi dan refraksi maksimum yang bisa dilakukan oleh ray dari titik
Gambar 2.19: Refleksi dan refraksi ray
awal perpotongan antara ray dengan objek pada scene. Semakin banyak refleksi dan refraksi yang dilakukan maka hasil penggambaran akan semakin bagus tetapi akan membutuhkan daya komputasi yang lebih tinggi karena program harus melakukan penelusuran tambahan beberapa kali.
Gambar 2.19 merupakan ilustrasi pembentukan refleksi dan refraksi ray dari suatu ray input yang berpotongan dengan permukaan suatu objek pada scene. Per-hitungan refleksi ray adalah dengan menggunakan persamaan sebagai berikut
Rf = 2N · cos(θ ) − Rin (2.13)
dimana Rf adalah vektor arah dari refleksi ray yang dihasilkan, N adalah normal vektor pada permukaan objek, θ adalah sudut incident, dan Rin adalah inverse vek-tor arah pada incident ray. Untuk perhitungan refraksi ray digunakan aturan snell untuk penurunannya dan menghasilkan persamaan sebagai berikut
Rfr = η (N · Rin) − q 1 − η2(1 − (N · Rin)) N − ηRin (2.14)
dimana Rfr adalah vektor arah dari refraksi ray yang dihasilkan, sedangkan N dan Rin sama seperti pada persamaan untuk perhitungan refleksi ray, dan η = η1/η2 dimana η1 adalah refraksi index pada medium pada saat ray berpotongan dengan permukaan objek sedangkan η2 adalah refraksi index pada medium yang meng-hasilkan refraksi ray.
Gambar 2.20: Struktur uniform grid