Com do hoa may tinh 3d

38 169 0
Com do hoa may tinh 3d

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Com do hoa may tinh 3d tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các lĩnh vực kinh...

Đồ án tốt nghiệp trang1 LỜI NÓI ĐẦU Đồ họa máy tính lãnh vực phát triển nhanh tin học Nó áp dụng rộng rãi nhiều lãnh vực khác thuộc khoa học, kỹ nghệ, y khoa, kiến trúc giải trí Năm 1966, Sutherland Học viện Công nghệ Massachusetts người đặt bóng cho đồ họa 3D việc phát minh thiết bị hiển thị trùm đầu (head-amounted display) điều khiển máy tính Nó cho phép người nhìn thấy hình ảnh dạng lập thể 3D Từ đến đồ họa 3D trở thành lĩnh vực phát triển rực rỡ đồ họa máy tính Nó ứng dụng rộng rãi hầu hết tất lĩnh vực Điện ảnh, Hoạt hình, kiến trúc ứng dụng xây dựng mơ hình thực ảo… Và khơng thể khơng nhắc đến vai trò tối quan trọng đồ họa 3D việc tạo game sử dụng đồ họa Doom, Halflife… Việc sử dụng đồ họa 3D game làm cho người chơi thích thú có cảm giác sống giới thực Có thể nói đồ họa 3D tạo nên công nghiệp game phát triển mạnh mẽ Mục đích đồ họa 3D tạo mơ tả đối tượng, mơ hình giới thật máy tính cho giống với thật tốt Việc nghiên cứu phương pháp kỹ thuật khác đồ họa 3D hướng đến mục tiêu cho nhân vật, đối tượng, mô hình tạo máy tính giống thật Và phương pháp tạo bóng cho đối tượng Hình 1: Bóng tạo kịch: hình-shot từ id phần mềm sáng tạo Doom Một ví dụ cách sử dụng stenciled bóng khối tin Đồ án tốt nghiệp trang2 Xuất phát từ vấn đề đồ án em xây dựng gồm chương: CHƯƠNG 1:CÁC KIẾN THỨC CƠ BẢN ĐỒ HỌA 3D VÀ TẠO BĨNG Chương nói kiến thức ánh sáng, hiển thị 3D đệm, khái quát kỹ thuật tạo bóng CHƯƠNG 2:CÁC KỸ THUẬT TẠO BĨNG CỨNG PHỔ BIẾN Chương vào chi tiết kỹ thuật đề tạo bóng cứng Bóng khối Bản đồ bóng CHƯƠNG 3:CHƯƠNG TRÌNH THỰC NGHIỆM CHƯƠNG 1:CÁC KIẾN THỨC CƠ BẢN CỦA ĐỒ HỌA 3D VÀ TẠO BÓNG CÁC KIẾN THỨC CƠ BẢN CỦA ĐỒ HỌA 3D 1.1 ÁNH SÁNG (LIGHTING) Đồ án tốt nghiệp trang3 Ánh sáng đồ họa 3D đóng vai trò quan trọng Và đặc biệt thành phần khơng thể thiếu để tạo bóng Có nguồn sáng chiếu theo hướng đinh (giống ánh sáng mặt trời), có nguồn sáng chiếu tồn khung cảnh….Trong khung cảnh có nhiều nguồn sáng Các nguồn sáng tắt bật giống ta tắt đèn cơng tắc Theo mơ hình ánh sáng OpenGl ánh sáng gồm có thành phần chính: Emissive Light, Ambient Light, Diffuse Light, Specular Light Các thành phần tính tốn độc lập với nhau, cuối kết hợp lại với Ambient Light ánh sáng bị phân rã môi trường xác định hướng chúng Nếu khung cảnh ta không xác định nguồn sáng kết đưa giống sử dụng Ambient Light Hình 4: Chiếc ấm chiếu Ambient Light Diffuse Light (ánh sáng khuếch tán) ánh sáng chiếu theo hướng nhất, nhiên gặp bề mặt bị phân rã hướng, Vì sáng cho dù có đặt mắt nhìn đâu Mọi nguồn sáng đến từ điểm hay từ hướng định có thành phần Diffuse Light Đồ án tốt nghiệp trang4 Hình 5: Ấm chè chiều Diffuse Light Specular Light ánh sáng phản xạ Khi gặp bề mặt phản xạ lại theo quy luật phản xạ Nó nhìn thấy bề mặt cong Hình Ấm chè chiếu Specular Light 1.2 HIỂN THỊ 3D (3D VIEWING) 1.2.1 Biểu diễn điểm phép biến đổi Sự chuyển đổi từ tọa độ giới sang tọa độ thiết bị chuỗi phép biến đổi affine phép chiếu không gian Decarts chiều Các phép biến đổi affine phép chiếu khơng gian Decarts chiều biểu diễn tốt ma trận 4x4 tương ứng với tọa độ đồng (Homogeneous coordinates) (x,y,z,w) Điểm 3D với tọa độ đồng (x,y,z,w) có tọa độ affine (x/w,y/w,z/w) Mối quan hệ tọa độ affine tọa độ đồng quan hệ 11 Cách đơn giản để chuyển từ tọa độ affine (x,y,z) điểm sang tọa độ đồng đặt w=1: (x,y,z,1) Chúng ta thừa nhận tất tọa độ giới biểu diễn cách Ta biểu diễn phép biến đổi affine (như co giãn (scaling transformations), phép quay (rotations), phép tịnh tiến (translations)) ma trận mà không làm thay đổi thành phần w (w=1) ● Tịnh tiến véc tơ T (Tx , T y , Tz ) : Đồ án tốt nghiệp trang5 ● Phép co giãn theo nhân tố S ( S x , S y , S z ) ● Phép quay quanh gốc tọa độ mà theo tập véc tơ chuẩn tắc { u , v, n }, trực giao đôi một, chuyển { X , Y , Z } 1.2.2 Tổng quan Các đối tượng mơ hình 3D xác định với tọa độ giới Cùng với tọa độ đối tượng, người dùng phải xác định vị trí hướng camera ảo khơng gian 3D xác định vùng nhìn (là vùng khơng gian hiển thị hình) Việc chuyển từ tọa độ giới sang tọa độ hình thực theo bước (hình 2.1):  Bước thực phép biến đổi để đưa camera ảo trở vị trí hướng tiêu chuẩn Khi điểm nhìn (eyepoint) đặt gốc tọa độ, hướng nhìn trùng với hướng âm trục Z Trục X phía phải trục Y lên phía hình Hệ tọa độ gọi Hệ tọa độ Mắt (Eye Coordinate System) Phép biến đổi từ tọa độ giới sang tọa độ mắt phép biến đổi affine, gọi phép biến đổi hiển thị (Viewing Transformation) Cả tọa độ giới tọa độ mắt biểu diễn tọa độ đồng (Homogeneous Coordinates) với w=1 Đồ án tốt nghiệp trang6  Bước thứ Tọa độ mắt chuyển qua tọa độ thiết bị chuẩn hóa (Nomalized Device Coordinates) vùng khơng gian mà ta muốn nhìn đặt khối lập phương tiêu chuẩn: Các điểm gần điểm nhìn (điểm đặt camera) có thành phần z nhỏ Bước gồm bước  Bước cuối cùng, phép biến đổi cổng nhìn (Viewport Transformation) kết hợp phép co giãn tuyến tính phép tịnh tiến Sẽ chuyển thành phần x y tọa độ thiết bị chuẩn hóa   x 1,  y 1 sang tọa độ Pixel hình Thành phần z (   z 1 ) chuyển sang đoạn [0,1] sử dụng giá trị chiều sâu (Depth-Value) thuật toán Z-Buffer (bộ đệm Z) sử dụng cho việc xác định mặt hiển thị Bước thứ bao gồm bước o Một phép chiếu chuyển từ vùng nhìn sang khối lập phương tiêu chuẩn với tọa độ đồng nhất:   x 1,  y 1,  z 1 Trong trường hợp sử dụng phép chiếu trực giao, vùng nhìn có dạng ống song song 3D với mặt song song với mặt hệ tọa độ mắt Trong trường hợp sử dụng phép chiếu đối xứng, vùng nhìn hình tháp cụt với đầu mút gốc tọa độ hệ tọa độ mắt Hệ tọa độ đồng (4 thành phần) thu sau phép chiếu gọi hệ tọa độ cắt (Clipping Coordinate System) Phép chiếu phép biến đổi affine trường hợp phép chiếu phép chiếu trực giao Nếu phép chiếu phép chiếu phối cảnh phép biến đổi affine (Vì w nhận giá trị khác 1) o Bước tiếp theo, vùng không gian hiển thị mà không nằm khối tiêu chuẩn (Khối gọi khối nhìn tiêu chuẩn) bị cắt Các đa giác, đường thẳng chứa có phần thay đổi để phần nằm Đồ án tốt nghiệp trang7 khối nhìn tiêu chuẩn giữ lại Phần lại không cần quan tâm nhiều o Sau cắt gọt, tọa độ đồng chuyển sang tọa độ thiết bị cách chia x,y,z cho w Nếu w nhận giá trị qua phép chiếu, phép chia cho động phối cảnh mong muốn hình Vì lý đó., phép chia gọi phép chia phối cảnh (Perspective Division) Hình7: Tổng quan hiển thị 3D phép chiếu Đồ án tốt nghiệp trang8 1.2.3 Phép biến đổi hiển thị (Viewing Transformation) Phép biến đổi hiển thị đưa camera ảo cho tùy ý camera với điểm nhìn trùng với gốc tọa độ hướng nhìn dọc theo chiều âm trục Z (xem hình 2.1) Trục Y sau phép biến đổi tương ứng lên phía hình Trục X phía phải Một cách thuận tiện để xác định vị trí camera ảo cho sãn vị trí điểm nhìn E , Một điểm khung nhìn R (điểm tham chiếu) hướng V lên phía hình Phép biển đổi hiển thị gồm bước: ● Một phép tịnh tiến đưa điểm nhìn E gốc tọa độ Ma trận biến đổi tương ứng M t ( E ) Kết sau: ● Một phép quay chuyển hướng nhìn ngược trục Z, quay vectơ V mặt phẳng YZ Vector V quay trùng với trục Y V vng góc với hướng nhìn Trước hết ta xây dựng tập véc tơ chuẩn tắc phù hợp tọa độ giới n u E R E R V n V n v n u Ngược với hướng nhìn  Z ( Oz ) Chỉ phía phải, vng góc với n  X Chỉ lên giống V , vuống góc với n u  Y Đồ án tốt nghiệp trang9 Như ma trận phép quay là: M r (u,v, n) Và ma trận phép biến đổi là: Trong u, v v tính từ E , R V 1.2.4 Phép chiếu trực giao (Orthographic Projection) Trong trường hợp phép chiếu trực giao, vùng không gian hiển thị ống song song hệ tọa độ mắt Các mặt ống song song song song với mặt hệ tọa độ mắt Kích thước vị trí vùng không gian hiển thị xác định tọa độ mắt xleft, xright, ybottom, ytop, zfront zback (xleft, ybottom) (xright, ytop) xác định cửa sổ mặt phẳng chiếu (hoặc mặt song song với mặt XY) mà vùng không gian hiển thị hiển thị Cửa sổ phải đưa dạng hình vng [-1,+1]2 zfront zback định nghĩa mặt phẳng cắt trước cắt sau Tọa độ tất điểm khơng gian (hoặc điểm ta muốn nhìn) phải thỏa mãn zback  z  zfront Khoảng giá trị z phải đưa giá trị chiều sâu (depth value) nằm đoạn [-1,+1] Các điểm gần mắt có giá trị chiều sâu nhỏ Hình : Vùng khơng gian hiển thị phép chiếu trực giao Đồ án tốt nghiệp trang10 Phép chiếu trực giao thu cách thực phép biến đổi sau theo thứ tự: ● Phép tịnh tiến M t ( M ) đưa tâm vùng không gian hiển thị gốc tọa độ hệ tọa độ mắt ● Một phép co giãn để đưa kích thước vùng hiển thị đơn vị chiều ● Một phép đối xứng qua mặt XY để điểm nằm gần nhận giá trị z nhỏ Phép co giãn phép đối xứng thu phép biển đổi đơn: M s (S ) với: Như ma trận phép chiếu trực giao là: Thành phần z không thay đổi, phép chiếu trực giao phép biến đổi affine Phép chiếu sử dụng ứng dụng cần đến quan hệ hình học (các tỉ số khoảng cách) CAD 1.2.5 Phép chiếu phối cảnh (Perspective Projection) Phép chiếu phối cảnh phù hợp gần với quan sát người (bằng mắt) giới 3D Tất điểm đường thẳng qua điểm nhìn ánh xạ lên điểm hình 2D Điểm ảnh xác định tọa độ thiết bị chuẩn hóa x y Nếu điểm ánh xạ vào điểm hình, ta cần phải xác định điểm hiển thị thuật toán Z-buffer, nghĩa so sánh chiều sâu chúng Vì lý cần Đồ án tốt nghiệp trang24 - Loại bỏ khỏi danh sách else - Thêm cạnh vào danh sách End; End; 2.3.3 Xác định tứ giác bao quanh bóng khối Khi có danh sách cạnh viền rồi, tạo bóng khối cách xây dựng tứ giác từ cạnh viền dựa vào vị trí nguồn sáng đỉnh đầu tứ giác đỉnh cạnh viền đỉnh nằm đường thẳng nối nguồn sáng đỉnh đầu đỉnh theo lý thuyết chiếu vô cực khơng cần thiết ta cho chúng giá trị tọa độ lớn v1 v2 đỉnh cạnh viền danh sách L vị trí nguồn sáng v3 v4 điểm cần tìm tọa độ để tạo tứ giác Const He_so_chieu 100 //Hệ số chiếu phải số lớn v3.x = (v1.x - L.x) * He_so_chieu; v3.y = (v1.y - L.y) * He_so_chieu; v3.z = (v1.z - L.z) * He_so_chieu; v4.x = (v2.x - L.x) * He_so_chieu; v4.y = (v2.y - L.y) * He_so_chieu; v4.z = (v2.z - L.z) * He_so_chieu; Đồ án tốt nghiệp trang25 Hình 16: Bóng khối tạo nhờ cạnh viền Từ điểm ta vẽ tứ giác bao ngồi bóng khối Vấn đề lại cần phải giải với bóng khối phải “đậy nắp” (Capping) đầu khối lại để trở thành khối kín Lúc ta thực phép kiểm tra cách xác Để “nấp” phía trước đơn giản ta dùng ln mặt trước vật thể vị trí ánh sáng Nấp mặt sau ta cần chiếu mặt sau vật thể với ánh sáng vơ cực Phần khơng cần thiết ta chiếu gần vơ cực Nên điểm khơng cần xét đến nhiều Hình 17: Hình bên trái với bóng khối chưa “đậy nắp”, hình bên phải “đậy nắp” 2.3.4 Tạo bóng thuật toán Z-Pass Khi ta tạo lưới đa giác bao ngồi bóng khối Chúng ta phải thực vẽ bóng vật thể ra, hay nói xác vẽ vật thể với bóng Để làm việc ta phải xác định pixel có nằm vùng bóng khối hay khơng Thuật tốn xác định pixel có nằm vùng bóng khối hay khơng đơn giản Tư tưởng là, nối điểm cần kiểm tra với điểm đặt camera (mắt nhìn) Nếu số mặt trước số mặt sau bóng khối mà cắt điểm khơng nằm vùng bóng khối Nếu cắt số mặt trước bóng khối nhiều số mặt sau mà cắt có nghĩa điểm nằm vùng bóng khối Đồ án tốt nghiệp trang26 Để xác định xem đoạn cắt mặt trước, mặt sau ta dùng đếm cho điểm cần kiểm tra, mà tăng lên đơn vị xuyên qua mặt trước giảm đơn vị xuyên qua mặt sau bóng khối Khi đếm cho giá trị điểm khơng nằm phần bóng, Còn lớn có nghĩa điểm nằm vùng bóng khơng được vẽ Và Stencil Buffer thực điều Stencil Buffer cung cấp cho pixel hình “bộ đếm” tăng giảm pixel ghi vào Frame Buffer Sau hồn tồn kiểm tra đếm để xác định xem điểm ghi hình hay khơng Thuật tốn mô tả mã sau: Procedure IN_SHADOW_TEST // Z-pass For {tất vật thể cần đổ bóng} - Xây dựng danh sách cạnh viền - Tính tốn tứ giác bao quanh bóng khối dựa cạnh viền từ vị trí nguồn sáng End for For {Tất mặt trước bóng khối nhìn từ vị trí điểm nhìn} if Depth test passes then - Tăng giá trị Stencil Buffer End if End for For {Tất mặt sau bóng khối nhìn từ vị trí điểm nhìn} if Depth test passes then - Giảm giá trị Stencil Buffer End if End for Đồ án tốt nghiệp trang27 Hình 18: Bước một, Vẽ mặt trước bóng khối Hình 19: Bước 2, Vẽ mặt sau bóng khối Đồ án tốt nghiệp trang28 Hình 20: Kết Giá trị Stencil Buffer vùng Hình 21: Trái: Khơngcó bóng, Giữa: Bóng khối tạo ra, Phải: Kết cuối Các bước thực sau:  Xóa hết Z-buffer Stencil-Buffer, Chắc chắn Chế độ ghi vào Z-buffer chế độ Stencil test bật  Tạo ảnh toàn khung cảnh (bao gồm vật thể mặt hứng bóng) với Ambient Light Z-buffer cập nhật  Tắt chế độ ghi vào Z-buffer  Vẽ mặt trước bóng khối, Nếu chúng thực vẽ (Có nghĩa Depth Pass) tăng giá trị Stencil Buffer Đồ án tốt nghiệp  trang29 Vẽ mặt sau bóng khối, Nếu chúng thực vẽ ra.(Có nghĩa Depth Pass) giảm giá trị Stencil Buffer  Bật chế độ Stencil test (chỉ điểm có giá trị Stencil = vẽ hình), Xóa Z-buffer, bật chế độ ghi vào Z-buffer, bật nguồn sáng  Vẽ tồn khung cảnh điểm có giá trị stencil Buffer 2.3.5 Tạo bóng thuật tốn Z-Fail Thuật tốn Z-Pass có nhược điểm lớn chưa xử lý trường hợp điểm nhìn (viewpoint) nằm vùng bóng khối Có giải pháp để xử lý trường hợp này:  Trừ giá trị Stencil Buffer đơn vị cho phần bóng khối mà điểm nhìn nằm (trong trường hợp có nhiều vật thể) Tuy nhiên làm chi phí tính tốn đắt  Tạo mặt phẳng nằm trước gần điểm nhìn cho phần bóng khối mà điểm nhìn nằm Cách vậy, phức tạp chi phí tính tốn đắt  Cách thứ sử dụng thuật toán Z-Fail Thay tính tốn giá trị Stencil việc tăng mặt trước bóng khối giảm giá trị mặt sau Z-Buffer Pass, tồn q trình thay đổi để đếm từ vô cực thay đếm từ điểm nhìn Vì thuật tốn gọi Z-Fails Thuật tốn Z-fail thể đoạn mã giả sau: Procedure IN_SHADOW_TEST // Z-fail For {tất vật thể cần đổ bóng} - Xây dựng danh sách cạnh viền - Tính tốn tứ giác bao quanh bóng khối dựa cạnh viền từ vị trí nguồn sáng End for For {Tất mặt trước bóng khối nhìn từ vị trí điểm nhìn} Đồ án tốt nghiệp trang30 if Depth test fails then - Giảm giá trị Stencil Buffer End if End for For {Tất mặt sau bóng khối nhìn từ vị trí điểm nhìn} if Depth test fails then - Tăng giá trị Stencil Buffer End if End for 2.3.6 So sánh giữa thuật toán Thuật toán Z-Pass Ưu điểm  Không cần thiết phải “đậy nắp” (Cap)  Tạo mặt (do khơng Tḥt tốn Z-fail  Giải trường hợp điểm nhìn nằm bóng khối cần tạo capping)  Nhanh Z-fail  Dễ thực Nhược điểm  Không giải vấn đề điểm nhìn bóng khối  Khơng có tự bóng (Selfshadow)  Chậm Z-pass  Đòi hỏi bóng khối phải Capping  Phải tạo nhiều mặt phải Capping  Khó thực Đồ án tốt nghiệp trang31  Không có tự bóng (SelfShadow) CHƯƠNG 3:CHƯƠNG TRÌNH THỰC NGHIỆM chương trình ứng dụng kỹ thuật tạo bóng cứng minh họa cho kết đề tài sử dụng ngôn ngữ lập trình vísual c.net chạy mơi trường window.Đầu vào chương trình tori quay quanh điểm sáng Shadow volumes Đồ án tốt nghiệp trang32 Mô tả: Dự án hiển thị bốn Tori xoay quanh điểm ánh sáng nguồn Mỗi casts Shadows khác Tori tường Hiệu đạt ba qua: Vẽ toàn cảnh lit ambient lượng nhỏ diffuse ánh sáng Điều vượt qua đặt giá trị chiều sâu cho nhìn thấy cảnh Vẽ khối tin vào bóng tối stencil buffer Theo mặc định, bóng tối khối tin, sử dụng "zFail" kỹ thuật, với infinite clip bay xa, mô tả "mạnh mẽ Stenciled Shadow volumes" giấy Vẽ cảnh lit với đầy đủ diffuse specular, khu vực unshadowed (nơi stencil == 0) Yêu cầu: Đối với hai bên-stencil Shadows: EXT_stencil_two_side EXT_stencil_wrap Đối với khối lượng chương trình vertex phun ra: ARB_vertex_program Tài liệu tham khảo: [1] Bài giảng Xử lý ảnh, Đỗ Năng Tồn, Viện cơng nghệ thơng tin Quốc Gia 2.Nehe tutorials học 28 - stencil bóng khối tin Nehe.gamedev.net 3.Ikrima Elhassan, “Shadow Algorithms” , 20-02-2007 4.Andrew V.Nealen, “Shadow Volume and Shadow Mapping, Recent Development 5.in Real-time Shadow Rendering”, University of British Columbia, 2000 6.Phạm Anh Phương, Nguyễn Hữu Tài, “Giáo trình Lý thuyết Đồ họa”, 1509-2006 7.& Thực tế mạnh mẽ Stenciled Shadow volumes cho phần cứngAccelerated Ra, Cass Everitt Mark J Kilgard Developer.nvidia.com Đồ án tốt nghiệp trang33 PHỤ LỤC PHẦN CODE CHÍNH CỦA CHƯƠNG TRÌNH 3.3.1 Tìm danh sách cạnh viền for(int ring=1; ring

Ngày đăng: 18/01/2018, 13:13

Từ khóa liên quan

Mục lục

  • 1.2. HIỂN THỊ 3D (3D VIEWING)

    • 1.2.1. Biểu diễn điểm và các phép biến đổi

    • 1.2.2. Tổng quan

    • 1.2.3. Phép biến đổi hiển thị (Viewing Transformation)

    • 1.2.4. Phép chiếu trực giao (Orthographic Projection)

    • 1.2.5. Phép chiếu phối cảnh (Perspective Projection)

    • 1.2.6. Phép biến đổi cổng nhìn (Viewport Transformation)

    • 1.3. BỘ ĐỆM VÀ CÁC PHÉP KIỂM TRA

      • 1.3.1. Bộ đệm chiều sâu (Z-Buffer)

      • 1.3.2. Bộ đệm khuôn (Stencil Buffer)

      • CHƯƠNG 2:CÁC KỸ THUẬT TẠO BÓNG CỨNG PHỔ BIẾN

        • 2.1 CÁC KỸ THUẬT TẠO BÓNG CỨNG

        • 2.1.1 Tạo bóng giả (Fakes Shadow)

        • 2.1.2 Bóng khối (Shadow Volume)

        • 2.1.3 Dùng bản đồ bóng (Shadow Mapping)

        • 2.1.4 Lần theo tia sáng (Ray Tracing)

        • 2.2 CÁC KỸ THUẬT TẠO BÓNG MỀM

        • 2.2.1 Thuật toán bộ đệm khung (Frame Buffer Algorithms)

        • 2.2.2 Dõi quang tia 2 chiều và phân bố (Distributed and Bidirectional Ray Tracing)

        • 2.2.3 Ánh sáng nâng cao (Radiosity)

        • 2.3 BÓNG KHỐI (SHADOW VOLUME)

          • 2.3.1 Giới thiệu

          • 2.3.2 Tìm danh sách cạnh viền.

          • 2.3.3 Xác định các tứ giác bao quanh bóng khối

Tài liệu cùng người dùng

Tài liệu liên quan