Bài giảng Đồ họa máy tính - Khử mặt khuất - Ngô Quốc Việt

pdf 28 trang Gia Huy 16/05/2022 5900
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Đồ họa máy tính - Khử mặt khuất - Ngô Quốc Việt", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_do_hoa_may_tinh_khu_mat_khuat_ngo_quoc_viet.pdf

Nội dung text: Bài giảng Đồ họa máy tính - Khử mặt khuất - Ngô Quốc Việt

  1. KHỬ MẶT KHUẤT NGƠ QUỐC VIỆT 2009
  2. Hệ tọa độ quan sát Hiển thị đối tượng trong hệ tọa tọa độ quan sát. Giới thiệu khối nhìn (view volume) Các thuật giải khử mặt khuất 2
  3. Mơ hình đối tượng 3D trong thế giới thực (mơ tả đối tượng thật sự sao cho tiện) cần chuyển về hệ tọa độ quan sát. Hệ tọa độ quan sát gồm vị trí mắt nhìn, điểm tham chiếu bất kỳ, vector hướng lên cĩ gốc tại điểm tham chiếu. Mặt phẳng chiếu cĩ thể chọn cĩ phương vuơng gĩc với trục Z của hệ tọa độ quan sát. 3
  4. Camera giả lặp gồm . Mặt phẳng quan sát (viewplane) chứa một cửa sổ (window). . Hệ tọa độ quan sát (viewing coordinate system) . Mắt nhìn Chức năng . Mắt nhìn qua cửa sổ và thấy được một phần của thế giới, đĩ là phần cần được vẽ. Ký hiệu: . Hệ UVN chỉ hệ tọa độ quan sát . Quan sát = nhìn 4
  5. Trong hệ tọa độ thế giới thực (world coordinates) . Điểm quy chiếu của quan sát, VRP (view reference point) ▪ r = (rx , ry , rz ) . Vector thẳng gĩc của mặt phẳng quan sát, VPN (viewplane normal) ▪ n = (nx , ny , nz ), là một vector đơn vị . Vector đơn vị của trục V là v (vector “hướng lên”) Trong hệ tọa độ quan sát UVN . Cửa sổ, cĩ tọa độ trong mặt UV là (Wl , Wt , Wr ,Wb ) . Mắt nhìn, cĩ tọa độ là (eu , ev , en). Tọa độ mắt nhìn cịn được xem như tọa độ camera. 5
  6. cửa sổ V U z VPN (viewplane normal) v u N n r VRP (view reference point) x y 6
  7. • Cho điểm P cĩ tọa độ (x, y, z) trong hệ tọa độ thực. Tìm tọa độ của P trong hệ tọa độ quan sát! u u u Đặt x y z M vx vy vz nx ny nz thì ux vx nx 1 M uy vy ny uz vz nz 7
  8. Nếu P cĩ tọa độ (a, b, c) trong hệ tọa độ quan sát thì • (x, y, z) = (a, b, c) M + r . Vì vậy • (a, b, c) = (p - r) M -1 8
  9. Tìm ma trận dạng tọa độ đồng nhất: Aˆ (a, b, c, 1) = (x, y, z, 1) WV Dùng (a, b, c) = (p - r) M -1 = p M T - r M T và đặt r’ = ( r  u, r  v, r  n) Tìm được u v n 0 x x x Cách xác định ma trận biến đổi từ hệ tọa độ thực sang hệ uy vy ny 0 Aˆ tọa độ quan sát được trình WV u v n 0 z z z bày trong tài liệu. r'x r'y r'z 1 9
  10. • Đặc tả phép chiếu phối cảnh (các tọa độ ở đây đều là trong hệ UVN) – Tâm của phép chiếu: mắt tại e = (eu , ev , en ) – Mặt phẳng chiếuV : mặt phẳng quan sát UV x Wt N W l y Wr z U mắt e Wb 10
  11. • Tìm ảnh (u*, v*) của p = (pu , pv , pn ) dưới phép chiếu! – Đường thẳng qua mắt và p (tia chiếu) cĩ biểu diễn tham số • r(t) = e(1 - t) + pt • Gọi t’ là trị của tham số tại đĩ tia chiếu cắt mặt phẳng quan sát, thì [r(t’)]n = 0, tức là en(1 - t’) + pn t’ = 0. e Vậy t' n en pn 11
  12. • Voi u* = [r(t’)]u và v* = [r(t’)]v ta tìm được e p e p u* n u u n en pn e p e p v* n v v n en pn • Trường hợp mắt nằm trên trục N thì eu = ev = 0, khi đĩ từ biểu thức trên cĩ được p u* u 1 pn / en p v* v 1 pn / en 12
  13. Khối quan sát (= khối nhìn, view volume) là hình chĩp cụt giới hạn bởi Hình chĩp xác định bởi mắt nhìn và cửa sổ Mặt trước (front plane): mặt phẳng n = F Mặt sau (back plane): mặt phẳng n = B mặt trước: n = F V mặt sau: n = B Wt Wl N Wr W U b mặt phẳng nhìn 13
  14. Để ý là nếu mắt ở vơ cực thì hình chĩp cụt trở thành hình hộp. Khi đĩ phép chiếu là phép chiếu song song theo một hướng e. Chỉ các thành phần của cảnh quan nằm trong thể tích nhìn là được hiển thị; các thành phần khác sẽ được xén mất. 14
  15. mặt trước V mặt sau Wt Wl N Wr W U b mặt phẳng nhìn V NDC Wt Wl Wr U Wb 15
  16. • Prewarping là phép biến đổi affine cĩ ma trận dạng đồng nhất – Tính chất: prewarping ánh xạ khối nhìn thành thể tích nhìn đã được prewarped thể tích nhìn đã được prewarped thể tích nhìn V V Wt Wt ˆ ˆ M S M P F B N N F B Wb 1 F / en Wb 1 B / en : trục U 16
  17. Culling: so sánh vị trí vị trí, hướng của các polygon so với trường thấy được của vùng nhìn (view volume’s field of view), trong đĩ các polygon khuất cần phải được loại bỏ trong khi rendering. Hoạt động trên sẽ giảm thiểu các tính tốn khơng cần thiết trên các mặt khuất. Culling nhằm kiểm tra tính visibility của đối tượng, và dựa trên kiểm tra này để khơng hiển thị đối tượng nếu cần-hidden surface removal. 17
  18. Yêu cầu là xác định thứ tự trước sau (theo vị trí mắt nhìn) của các đối tượng 3D nhằm hiển thị đúng. Cách thực hiện dựa trên các phép tính vector, cụ thể hơn là tính dot product giữa vector chuẩn của polygon và vector nguồn sáng (vector từ tâm của phép chiếu đến polygon). Nếu dot product cĩ giá trị dương, thì polygon là visible (vector chuẩn thấy được với viewer), ngược lại khơng vẽ mặt đang xét. 18
  19. • Cĩ hai loại thuật giải khử mặt khuất: – Dựa trên khơng gian đối tượng. – Dựa trên khơng gian ảnh. 19
  20. Thuật giải khử mặt khuất phổ biến nhất: z-buffer algorithm. Dựa trên khơng gian ảnh. Đề xuất bởi Edwin Catmull 1975. Z-buffering, cịn gọi là depth-buffering. Trong đĩ, độ sâu mỗi pixel được xác định và lưu trữ trong buffer’s depth buffer. Dựa trên giá trị độ sâu, hay z-values, thuật giải sẽ xác định pixel cần phải vẽ (ứng với màu của pixel đĩ). Bước khử mặt khuất z-buffer thực hiện ngay sau bước rasterization. 20
  21. Tạo vùng nhớ chứa các giá trị z-buffer cĩ cùng kích thước và độ phân giải của color buffer. ▪ Vì tại một vị trí pixel cĩ nhiều mặt chứa nĩ cần lưu lại pixel cĩ z-value gần nhất. Kiểm tra fragment.z > depth[s][t] If true, the fragment is in front of whatever was there before, so set color[s][t]=frag.color and depth[s][t]=frag.z Else Cull 21
  22. foreach ( pixel in primitive ) if ( depth(x,y).z > pixel.z ) { color(x,y).r = pixel.r; color(x,y).g = pixel.g; color(x,y).b = pixel.b; depth(x,y).z = pixel.z; } else { // Discard pixel } 22
  23. Recall frame buffer configuration is a function of the window system. . Cần xác lập chế độ depth buffer cho cửa sổ. glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ); 23
  24. Bật chế độ kiểm tra depth. glEnable( GL_DEPTH_TEST ); Xác lập mọi buffer theo giá trị mặc định glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); 24
  25. Ưu điểm: . Always works. Đối tượng gần nhất luơn xác định màu pixel. . Dễ hiểu / Dễ cài đặt. Nhược điểm: . Tốn bộ nhớ 25
  26. Mơ phỏng quá trình họa sĩ vẽ. Dựa trên khơng gian mắt nhìn. Cách thực hiện: . Sắp xếp các đối tượng theo khoảng cách đến mắt. . Đối tượng nào gần thì được vẽ đè lên đối tượng nằm xa. 26
  27. Nhược điểm của thuật giải. . Khơng xét các phần giao của các đối tượng. . Sắp xếp chậm . Phải sắp xếp lại nếu mắt di chuyển. OpenGL khơng hỗ trợ thuật giải này. 27
  28. Tương tự như thuật giải tơ màu. Xác định màu của từng đoạn quét bằng cách tính giao điểm với mọi đa giác. Mỗi đoạn nối giữa hai điểm cắt sẽ cĩ màu trùng với màu của đa giác gần nhất. 28