- Để vẽ tranh dầu
Giải thuật vùng đệm độ sâu dựa trên hướng tiếp cận khơng gian ảnh để loại bỏ các mặt khuất Giải thuật này so sánh
khơng gian ảnh để loại bỏ các mặt khuất. Giải thuật này so sánh độ sâu của các bề mặt tạo nên đối tượng tại vị trí mỗi pixel trên mặt phẳng chiếu. Với mỗi điểm (x,y,z) trên bề mặt đa giác tương ứng với điểm (x,y) nằm trên mặt phẳng chiếu, mặt nào cĩ toạ độ Z nhỏ nhất xét tại điểm đĩ sẽ là mặt thấy được (nên cịn được gọi là vùng đệm Z hay Z-buffer).
(x,y) S1 S2 S3
z x y
III.Thuật tốn vùng đệm độ sâu (Depth-buffer hay Z-buffer)
Các bước trong thuật tốn vùng đệm sâu cĩ thể mơ tả như sau:
Khởi tạo tồn bộ vùng đệm sâu,vùng đệm khung với mọi vị trí (x,y): + Depth(x,y)=max
+ Fresh(x,y)=Background(x,y)
Với mỗi mặt của đối tượng, tại mỗi vị trí (x,y) trên mặt đĩ, so sánh độ sâu Z với giá trị đã lưu trước đĩ để xác định mặt thấy được:
For (mỗi mặt của đối tượng) Do For (mỗi dịng của mặt) Do For (mỗi cột của mặt ) Do Begin
+Tính độ sâu Z tại mỗi vị trí (x,y) của mặt. +If (Z<Depth(x,y)) Then
Begin Depth(x,y)=Z;
60
III.Thuật tốn vùng đệm độ sâu (Depth-buffer hay Z-buffer)
Tính độ sâu Z:
Mặt phẳng được biểu diễn bởi phương trình: Ax+By+Cz+D=0
độ sâu Z được tính theo cơng thức: z=-(Ax+By+D)/C
Giá trị x,y là biết trước vì quá trình quét sẽ sinh ra chúng. Nếu zi là độ sâu tại vị trí (x,y) thì độ sâu zi+1 của điểm tiếp theo (x+1,y) như sau:
zi+1 = -(A(x+1)+By+D)/C = -(Ax+By+D)/C-A/C = zi-A/C
Tương tự khi y tăng thì giá trị z mới cũng được tính: Zi+1 = zi-B/C
Vậy sau khi các bề mặt được xử lý thì vùng đệm sâu chứa giá trị độ sâu các điểm của các mặt thấy được, cịn vùng đệm khung chứa các giá trị màu của bề mặt này.
Bài 4