Hidden Surface Removal HSR Hidden Surface Removal Sering

  • Slides: 25
Download presentation
Hidden Surface Removal (HSR)

Hidden Surface Removal (HSR)

Hidden Surface Removal • Sering disebut juga visible surface detection • Salah satu cara

Hidden Surface Removal • Sering disebut juga visible surface detection • Salah satu cara untuk mempercepat pemrosesan grafik 3 D. • Dengan cara menghilangkan semua permukaan yang tidak terlihat (yang menghadap ke belakang, atau tertutup objek lain) • Waktu yang diperlukan untuk memproses sebuah scene menjadi cepat

Hidden Surface Removal • Tepat – Tidak boleh menghapus permukaan yang seharusnya terlihat •

Hidden Surface Removal • Tepat – Tidak boleh menghapus permukaan yang seharusnya terlihat • Efisien – Semua permukaan yang tidak terlihat tidak perlu diproses

Metode • • Painter’s Algorithm Z-Buffering Back Space Detection Ray Casting

Metode • • Painter’s Algorithm Z-Buffering Back Space Detection Ray Casting

Painter’s Algorithm PROBLEM :

Painter’s Algorithm PROBLEM :

Depth Cueing • Intensitas dan efek yang berbeda untuk jarak yang berbeda

Depth Cueing • Intensitas dan efek yang berbeda untuk jarak yang berbeda

Z-Buffering • Membandingkan kedalaman permukaan pada tiap posisi pixel pada bidang proyeksi • Mencatat

Z-Buffering • Membandingkan kedalaman permukaan pada tiap posisi pixel pada bidang proyeksi • Mencatat semua koordinat Z setiap titik yang diletakkan di layar • Ketika akan menampilkan koordinat, dibandingkan dengan koordinat lain untuk melihat apakah ada yang menghalangi di depan, jika ada maka koordinat tersebut tidak perlu digambar

Z-Buffering • Memori yang dibutuhkan untuk implementasi adalah sebesar lebar dikali panjang memori layar

Z-Buffering • Memori yang dibutuhkan untuk implementasi adalah sebesar lebar dikali panjang memori layar • Memerlukan 2 buffer : depth buffer dan refresh buffer • Depth buffer menyimpan nilai kedalaman untuk setiap posisi (x, y) • Refresh buffer menyimpan nilai intensitas untuk setiap posisi

Langkah-Langkah Z-Buffering • Pertama-tama, semua posisi pada depth buffer di-set 0 (kedalaman minimum), dan

Langkah-Langkah Z-Buffering • Pertama-tama, semua posisi pada depth buffer di-set 0 (kedalaman minimum), dan refresh buffer di-set pada intensitas background. • Tiap permukaan pada polygon diproses, menghitung kedalaman (nilai z) pada tiap posisi pixel (x, y). • Nilai z hasil perhitungan dibandingkan dengan nilai yang disimpan sebelumnya pada posisi (x, y) yang sama. • Jika nilai z hasil perhitungan lebih besar maka simpan nilai z yang baru, dan nilai intensitas permukaan ditentukan di refresh buffer

Langkah-Langkah Z-Buffering • Inisialisasi depth buffer dan refresh buffer untuk posisi (x, y) –

Langkah-Langkah Z-Buffering • Inisialisasi depth buffer dan refresh buffer untuk posisi (x, y) – Depth (x, y) = 0, refresh(x, y) = Ibackgnd • Untuk tiap posisi pada setiap permukaan polygon, bandingkan nilai kedalaman dengan nilai kedalaman sebelumnya yang tersimpan di depth buffer – Hitung kedalaman z untuk tiap posisi (x, y) pada polygon – jika z > depth(x, y), maka set : depth(x, y) = z, refresh(x, y) = Isurface(x, y) • Ibackgnd = nilai intensitas background • Isurface = nilai intensitas permukaan pada posisi pixel (x, y)

z-buffer(x, y)=max depth COLOR(x, y)=warna background for(tiap polygon P dalam daftar polygon) do{ for(tiap

z-buffer(x, y)=max depth COLOR(x, y)=warna background for(tiap polygon P dalam daftar polygon) do{ for(tiap pixel(x, y) pada P) do{ Hitung z-depth pada P di (x, y) If (z-depth > z-buffer[x, y]) then{ z-buffer[x, y]=z-depth; COLOR(x, y)=intensitas P di (x, y); } } }

Z-Buffering • Kelebihan – Waktu yang diperlukan meningkat linier terhadap jumlah polygon – Dapat

Z-Buffering • Kelebihan – Waktu yang diperlukan meningkat linier terhadap jumlah polygon – Dapat merender scene yang kompleks dengan benar – Mudah diimplementasikan • Kekurangan – Butuh banyak memori – Cukup lambat

Contoh

Contoh

Jawab

Jawab

Z-Buffer Sebuah titik (x, y, z) berada dipermukaan polygon, bila Ax + By +

Z-Buffer Sebuah titik (x, y, z) berada dipermukaan polygon, bila Ax + By + Cz + D = 0, maka

Contoh Diketahui 3 buah polygon A, B, dan C dengan persamaan berikut Polygon A:

Contoh Diketahui 3 buah polygon A, B, dan C dengan persamaan berikut Polygon A: f. A(x, y, z) = 2 x + 12 y – 4 z + 8 Polygon B: f. B(x, y, z) = 4 x – 6 y + 2 z – 6 Polygon C: f. C(x, y, z) = 8 x – 4 y + 4 z – 8 a) Tentukan depth-buffer dari ketiga polygon tersebut untuk bidang pandang berikut b) Bila ketiga polygon tersebut digambar dilayar menggunakan algoritma depth-buffer, tentukan, polygon mana yang tampak dilayar untuk bidang pandang tersebut.

Back Face Detection • Pada objek solid, ada permukaan yang menghadap ke penonton dan

Back Face Detection • Pada objek solid, ada permukaan yang menghadap ke penonton dan ada yang berlawanan dengan penonton (front faces) (back faces). • Misal : sumbu z menunjuk ke penonton. Jika komponen z dari vektor adalah negatif maka back face, jika positif maka front face

Back Face Detection Permukaan polygon (A, B, C, D adalah parameter bidang permukaan polygon)

Back Face Detection Permukaan polygon (A, B, C, D adalah parameter bidang permukaan polygon) f(x, y, z) = Ax + By + Cz + D Vektor normal N dari permukaan : N(A, B, C)

Back Face Detection Sebuah titik (x, y, z) berada dibelakang permukaan polygon bila Ax

Back Face Detection Sebuah titik (x, y, z) berada dibelakang permukaan polygon bila Ax + By + Cz + D < 0

Back Face Detection Titik pandang (kamera) : Vview(xv, yv, zv) Permukaan polygon di belakang

Back Face Detection Titik pandang (kamera) : Vview(xv, yv, zv) Permukaan polygon di belakang titik pandang (tidak nampak) jika : N. Vview > 0 Arah pandang adalah sumbu z negatif Vview = ( 0, 0, − 1) Permukaan polygon berada di belakang jika: (A, B, C). (0, 0, − 1) > 0, − C > 0 Atau C ≤ 0

Contoh 1 Permukaan normal segitiga N(0. 5 , 0. 8 , 0. 1) menuju

Contoh 1 Permukaan normal segitiga N(0. 5 , 0. 8 , 0. 1) menuju keluar permukaan depan segitiga N = (0, 5 , 0, 8 , 0, 1) Permukaan depan Sebuah verteks pada segitiga adalah (3, 2, 2) dan kamera (1, 8, 0). Apakah permukaan depan dari segitiga tersebut terletak dibelakang atau didepan kamera? Atau apakah kamera bisa melihat bagian permukaan depan dari segitiga tersebut ?

Jawab Vview adalah vektor dari kamera ke verteks segitiga, yaitu: Vview = (3, 2,

Jawab Vview adalah vektor dari kamera ke verteks segitiga, yaitu: Vview = (3, 2, 2) – (1, 8, 0) = (2, – 6, 2) N. Vview = (0, 5 , 0, 8 , 0, 1). (2, – 6, 2) = (0, 5). (2) + (0, 8). (– 6) + (0, 1). (2) = – 3, 6 Hasil N. Vview negatif maka bisa dilihat

Contoh 2 Kamera berada di posisi (2, 1, 5). Sebuah bidang mempunyai persamaan 5

Contoh 2 Kamera berada di posisi (2, 1, 5). Sebuah bidang mempunyai persamaan 5 x + 3 y – 2 z + 12 = 0. Apakah bidang tersebut berada dibelakang atau didepan kamera? Jawab : 5(2) + 3(1) – 2(5) + 12 = 15 > 0 Karena itu, bidang berada di depan kamera.

Ray Casting • Jika kita memancarkan sebuah garis lurus dari sebuah posisi pixel pada

Ray Casting • Jika kita memancarkan sebuah garis lurus dari sebuah posisi pixel pada bidang pandang, kita dapat menentukan objek apa yang berpotongan dengan garis tersebut. • Setelah menghitung semua titik perpotongan, kita mengidentifikasi bahwa permukaan yang dapat dilihat adalah yang mempunyai titik perpotongan terdekat

Ray Casting

Ray Casting