z-buffer หรือที่เรียกว่า deep-buffer เป็นวิธีการที่ใช้สำหรับการตรวจจับพื้นผิวที่ซ่อนอยู่
การตรวจจับพื้นผิวที่ซ่อนอยู่
สำหรับรูปภาพใด ๆ ที่มีวัตถุและพื้นผิวที่โปร่งใส ในกรณีนี้ วัตถุที่อยู่ด้านหลังวัตถุอื่นจะถูกซ่อนไว้ เพื่อให้มองเห็นภาพได้อย่างเหมาะสม เราจำเป็นต้องลบพื้นผิวที่ซ่อนอยู่เหล่านี้ออก การระบุตัวตนเรียกว่า ปัญหาพื้นผิวที่ซ่อนอยู่
ใน z-buffer เราจะเปรียบเทียบพื้นผิวในแกน z เป็นความลึก
อัลกอริทึม
Step 1: initialize the depth of all pixel max. d(i,j) = infinity Step 2: Initialize color for all pixels. c(i,j) = background-color Step 3: for each pixel in polygon projection do, Step 3.1: find z i.e. depth of projection’s (i,j) pixel. Step 3.2: if z < d(i,j) do Step 3.2.1 : d(i,j) = z and c(i,j) = color of polygon.
โดยใช้วิธีนี้ทีละพิกเซล เราจะหาความลึกของแต่ละพิกเซลของระนาบ พื้นผิวที่เล็กที่สุดกำหนดสีของบัฟเฟอร์ โดยทั่วไป ค่า z ทั้งหมดจะใกล้เคียงกับ range[0,1]
z=0, ระนาบการหนีบด้านหลัง และ z=1, ระนาบการหนีบด้านหน้า
จุดสำคัญของบัฟเฟอร์ z
-
ไม่จำเป็นต้องใช้การจัดเรียงเริ่มต้นของรูปหลายเหลี่ยม (ระนาบ) เพื่อใช้วิธี z-buffer
-
Z-buffer ให้ผลลัพธ์ที่รวดเร็วแม้ว่าเครื่องบินจะมีจำนวนมากก็ตาม
-
ไม่จำเป็นต้องมีการเปรียบเทียบวัตถุในวิธี z-buffer
-
นอกจากนี้ยังสามารถตรวจจับวัตถุที่ซ่อนอยู่ที่ไม่ใช่รูปหลายเหลี่ยมได้โดยใช้วิธีนี้
-
ไม่ต้องการโครงสร้างข้อมูลเพิ่มเติมสำหรับการจัดเก็บและแก้ไข
-
การใช้ฮาร์ดแวร์ช่วยให้กระบวนการเร็วขึ้น และใช้ในการแก้ปัญหาเวิร์กสเตชันกราฟิก
-
วิธีการนี้ใช้ได้เฉพาะเมื่อวัตถุที่อยู่ระหว่างการพิจารณามีความทึบ กล่าวคือ วัตถุโปร่งใสอาจทำให้เกิดข้อผิดพลาด
-
การวาดพื้นผิวที่ซ่อนอยู่อาจเป็นกระบวนการที่ใช้เวลานาน