Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
645,7 KB
Nội dung
Header Page of 126 Công trình ñược hoàn thành ĐẠI HỌC ĐÀ NẴNG BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG Người hướng dẫn khoa học: TS NGUYỄN TẤN KHÔI ĐỖ PHÚ DUY Phản biện 1: XÂY DỰNG BỀ MẶT LƯỚI TỪ TẬP HỢP ĐIỂM 3D VÀ PHƯƠNG PHÁP CHIA NHỎ BỀ MẶT LƯỚI Chuyên ngành: Khoa học máy tính Mã số: 60.48.01 Phản biện 2: Luận văn ñược bảo vệ trước Hội ñồng chấm Luận văn tốt nghiệp thạc sĩ kỹ thuật họp Đại học Đà Nẵng vào ngày tháng năm 2012 TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT Có thể tìm hiểu luận văn tại: Trung tâm thông tin – Học liệu, Đại học Đà Nẵng Trung tâm Học liệu, Đại học Đà Nẵng Đà Nẵng – Năm 2012 Footer Page of 126 Header Page of 126 “XÂY DỰNG BỀ MẶT LƯỚI TỪ TẬP HỢP ĐIỂM 3D VÀ MỞ ĐẦU PHƯƠNG PHÁP CHIA NHỎ BỀ MẶT LƯỚI” Lý chọn ñề tài Đối tượng, phạm vi, phương pháp nghiên cứu Trong năm gần ñây phát triển ñồ họa máy tính Đề tài tập trung vào nghiên cứu xây dựng bề mặt lưới 3D từ làm thay ñổi hoàn toàn tương tác người máy, kỹ thuật tập hợp ñiểm rời rạc kỹ thuật chia nhỏ bề mặt nhằm cải thiện chất ứng dụng ñồ họa ngày cao nên có nhiều người quan tâm lượng bề mặt lưới ñược xây dựng làm mịn mặt lưới Để ñạt ñược nghiên cứu ñến lĩnh vực Nhờ ñó mà ứng dụng ñồ họa mục tiêu nghiên cứu ñã ñề ra, ñề tài ñã thực cách tiếp cận máy tính ñời như: phim hoạt hình, game ñịnh hướng tương lai nghiên cứu sau: với hệ thống thực ảo ñã ñóng góp cho phát triển chung Trên sở lý thuyết ñồ họa, tìm hiểu vấn ñề mô ngành Công nghệ Thông tin Do vậy, ñồ họa máy tính trở thành hình hóa ñối tượng 3D, phương pháp biểu diễn bề mặt lưới lĩnh vực hấp dẫn có nhiều ứng dụng thực tế 3D máy tính Nghiên cứu thuật toán xây dựng bề mặt lưới từ Biểu diễn bề mặt ñối tượng chiều (3D) ñược coi bước khởi ñầu hệ thống mô thực ảo, góp phần tập hợp ñiểm rời rạc không gian Tìm hiểu phương pháp chia nhỏ bề mặt lưới tam giác tạo nên hệ thống mô hoàn chỉnh Một cách Từ việc nghiên cứu tiếp thu phương pháp, thuật tiếp cận biểu diễn bề mặt ñối tượng chiều phổ biến toán phần mềm chuyên dụng tiên tiến giới lĩnh dựa kỹ thuật biểu diễn bề mặt lưới vực ñồ họa máy tính Tìm hiểu rõ ưu, nhược ñiểm Trong biểu diễn bề mặt ảo chiều vấn ñề biểu diễn phương pháp ñể ñề xuất cách tiếp cận phù hợp cho ñề tài Sử dụng bề mặt ñảm bảo chất lượng phải ñáp ứng yêu cầu tính ñơn công nghệ, công cụ lập trình như: Ngôn ngữ lập trình Visual giản nhằm giảm thiểu không gian lưu trữ, rút ngắn thời gian biểu diễn C++ 6.0, thư viện hỗ trợ xử lý ñồ họa OpenGL bề mặt phục vụ cho bước mô sau Việc xây dựng Mục ñích ñề tài hệ thống mô hình hóa bao gồm xây dựng biểu diễn bề mặt lưới Tìm hiểu cách biểu diễn mô hình 3D ñối tượng chiều nhằm tái tạo lại mô hình thực tế Xây dựng cấu trúc liệu ñể lưu trữ phần tử biểu diễn không gian từ tập ñiểm ño ñược ñối tượng thực bề mặt lưới 3D Với nhu cầu mô hình hóa bề mặt lưới tam giác từ tập hợp Ứng dụng giải thuật Delaunay xây dựng lưới tam giác từ tập ñiểm ño ñược không gian chiều, tối ưu bề mặt lưới ñể lưu trữ, hợp ñiểm 3D ñầu vào ñể tạo bề mặt lưới tam giác nhằm tái tạo mô tinh chỉnh lưới rời rạc hội tụ bề mặt nhẵn hình Xuất phát từ nhu cầu thực tiễn trên, ñề xuất ñề tài luận văn cao học sau: Footer Page of 126 Ứng dụng phương pháp Loop chia nhỏ bề mặt lưới nhằm cải tiến, xây dựng bề mặt mịn, trơn Header Page of 126 4 Ý nghĩa khoa học thực tiễn phân loại ñiểm không gian ba chiều: phía Mô hình hóa ñối tượng 3D, xử lý ñối tượng 3D hiển trong, phía ngoài, bề mặt ñối tượng thị thông số hình học thuộc tính ñối tượng 1.1 Khả tái tạo vật thể từ tập hợp ñiểm rời rạc 3D thành mô hình ñối tượng lưới 3D Thiết kế hiệu chỉnh mô hình lưới 3D, kết xuất liệu sang ñịnh dạng phần mềm CAD/CAM chuyên dụng Hệ tọa ñộ không gian Hệ tọa ñộ không gian dựa vào trục vuông góc ñôi x'Ox, y'Oy, z'Oz mà ñó ñã chọn véc-tơ ñơn vị i, j, k cho ñộ dài véc-tơ [1], [2] 1.2 Phục vụ cho công tác nghiên cứu thiết kế mô hình ñối tượng Phép biến ñổi mô hình 3D Các ñiểm không gian ba chiều ñược biểu diễn hệ tham số 3D phòng thí nghiệm, công ty trục tọa ñộ ba chiều, xem mở rộng hệ trục tọa ñộ hai Bố cục luận văn chiều Trong giới hai chiều, mặt phẳng XY chứa toàn ñối Nội dung luận văn bao gồm chương sau: tượng Trong giới ba chiều, trục Z vuông góc ñược ñưa ñể Chương 1: Tổng quan sở ñồ họa 3D tạo thêm hai mặt phẳng khác YZ ZX [1], [2] Chương 2: Xây dựng lưới từ tập hợp ñiểm 3D phương 1.3 Các ñối tượng giới thực phần lớn ñối tượng pháp chia nhỏ bề mặt lưới Loop Chương 3: Phân tích xây dựng chương trình xây dựng bề mặt Biểu diễn ñối tượng 3D ba chiều thiết bị hiển thị biểu diễn hai chiều Do muốn có hình ảnh ba chiều ta cần phải tiến hành giả lập Ngoài lưới 3D Chương TỔNG QUAN VỀ CƠ SỞ ĐỒ HỌA mô hình hoá hiển thị ñối tượng ba chiều, ta cần phải Trong kỹ thuật biểu diễn mô hình, ta phân thành hai nhóm xem xét nhiều khía cạnh khác mặt phẳng, mặt cong biểu diễn mô hình sau: mô hình hóa hình học mô hình hóa vật thể Kỹ thuật mô hình hóa hình học ñược phát triển số thông tin bên ñối tượng 1.3.1 ngành công nghiệp tự ñộng hóa chủ yếu ñược sử dụng ñể thiết kế hình dạng xe Hiện nay, mô hình ñược ứng dụng Biểu diễn mô hình khung dây Biểu diễn mô hình ta biểu diễn dạng mô hình khung dây, mô hình lưới ña giác, … ngành công nghiệp hàng không, hải quân… số Biểu diễn mô hình dạng khung dây cho ta thấy ñược chi lĩnh vực khác Mô hình hỗ trợ cho việc ñiều khiển tiết bên mô hình, sử dụng phương pháp di chuyển, mặt hình dạng xoay, xoá ñi ñường khuất (ñể thể mô hình dạng mặt) Kỹ thuật mô hình hóa vật thể ñược xây dựng dựa 1.3.2 Biểu diễn ñường, mặt cong thông tin biểu diễn ñầy ñủ, xác, rõ ràng ñối tượng Các ñường cong mặt cong ñược tạo từ tập không gian chúng tạo mô hình máy tính với khả hàm toán học ñịnh nghĩa ñối tượng tập ñiểm ñối Footer Page of 126 Header Page of 126 tượng Đối với ñối tượng hình học hình tròn hay elip thư Trong công nghệ CNC ñối tượng thực ñược tạo từ viện ñồ họa ñã cung cấp sẵn hàm vẽ ñối tượng lên mặt phẳng hiển hình khối chiều mẫu có máy tính Để tạo mô hình ba thị Hình biểu diễn ñường cong tập ñiểm dọc theo hình chiếu chiều mẫu máy tính, nhiều kỹ thuật khác ñược áp dụng ñường mô tả hàm số Nhưng với ñường cong hay mặt ñược gọi công nghệ ñảo ngược Trên giới công nghệ ñảo ngược cong quy luật, tập ñiểm hay lưới ña giác xấp xỉ với ñược ứng dụng rộng rãi vào lĩnh vực CAD/CAM, thực ñường mặt cong tạo Hệ ñồ họa hay tạo lưới tam giác ñể ảo, kiến trúc, bảo tồn di sản văn hoá, v.v Công nghệ ñảo ñảm bảo tính ñồng phẳng cạnh [2] ngược thu thập liệu ñối tượng thực dạng ñiểm, từ Thư viện xử lý ñồ họa OpenGL liệu ñiểm thu ñược lưới ña giác ñược xây dựng ñể liên kết OpenGL tiêu chuẩn kỹ thuật ñồ họa nhằm mục ñích ñiểm ba chiều không gian Mô hình ñối tượng thực ñược số hoá tạo giao diện lập trình ứng dụng ñồ họa 3D ñược phát triển hoàn toàn sau thực số bước tinh chỉnh làm mịn ñầu tiên Silicon Graphic, Inc OpenGL ñã trở thành chuẩn (bóng), vá lỗ thủng, chia nhỏ lưới ña giác ñể tăng cường chi tiết công nghiệp ñặc tính kỹ thuật OpenGL Uỷ ban kỹ thuật hoá mô hình số Xuất phát từ vấn ñề trên, luận văn ARB OpenGL cho phép phát triển ứng dụng ñồ họa sử dụng triển khai nghiên cứu phương pháp biểu diễn bề mặt lưới từ nhiều ngôn ngữ lập trình khác C/C++, Java, Delphi, v.v…, tập hợp ñiểm ño ñược nhằm tìm kiếm giải pháp tốt ñể triển nhiên OpenGL ñược dùng ứng dụng ñồ họa 2D khai mô hình hoá ñối tượng 3D từ tập hợp ñiểm ñã cho Giao diện lập trình chứa khoảng 250 hàm ñể vẽ cảnh phức 2.1 1.4 Biểu diễn bề mặt lưới 3D tạp từ hàm ñơn giản ñược ứng dụng rộng rãi trò Để lưu trữ sở liệu số không gian nhằm tham chơi ñiện tử Ngoài ñược dùng ứng dụng CAD, thực chiếu ñể tạo mô hình Hệ thống thông tin ñịa lý GIS ảo, mô khoa học, mô thông tin, phát triển trò chơi sở liệu số chuyên dụng hệ trục tọa ñộ không gian Như OpenGL sử dụng hệ tọa ñộ theo quy tắc bàn tay phải GIS có quan hệ với ứng dụng sở liệu Toàn thông tin Chương PHƯƠNG PHÁP TẠO LƯỚI 3D VÀ CHIA NHỎ BỀ MẶT LƯỚI LOOP GIS ñều liên kết với tham chiếu không gian Cách thức nhập, lưu trữ, phân tích liệu GIS phải phản ánh ñúng cách thức thông tin ñược sử dụng việc lập ñịnh hay nghiên cứu Mô hình hoá ñối tượng 3D máy tính cách số hoá ñối tượng thực ñã ñang ñược ñầu tư rộng rãi giới Tại Việt Nam, công nghệ CNC ñã ñược biết ñến ứng dụng rộng rãi vào nhiều ngành công nghiệp khác cụ thể 2.2 Xây dựng bề mặt lưới Phương pháp xây dựng lưới tam giác từ tập hợp ñiểm phương pháp dựng hình không gian 2-chiều 3-chiều Các trình tam giác hoá ñược thực với liệu ñầu vào tập Footer Page of 126 Header Page of 126 hợp hỗn ñộn ñiểm ñã thu thập ñược Thuật toán tam giác hoá có tròn ñi qua hai ñiểm pj,pj mà không chứa ñiểm thể trình bày [4], [10], [11]: (pj,pj) cạnh tam giác Delaunay [7], [8], [9] 2.3 Các lược ñồ xây dựng bề mặt lưới 3D 2.3.2 Cho V tập hữu hạn ñỉnh mặt phẳng R2 [3] Cho E tập cạnh mà ñiểm ñầu cuối ñỉnh thuộc tập V Ta có ñịnh nghĩa sau: Định nghĩa Lưới tam giác T = (V,E) ñồ thị phẳng mà cạnh không chứa ñỉnh khác hai ñỉnh ñầu cuối Với D(P) ñường thẳng ñối ngẫu V(P) Mỗi tam giác D(P) tương ứng ñến ñỉnh V(P) Mỗi cạnh D(P) tương ứng ñến cạnh V(P) Mỗi nút D(P) tương ứng ñến vùng V(P) Đường bao D(P) bao lồi P Bên tam giác D(P) bao lồi P nó, hai cạnh cắt tất mặt tam giác với hội chúng bao lồi tập ñỉnh V Định nghĩa Bài toán nối ñiểm cho trước mặt phẳng ñoạn thẳng không cắt ñể tạo thành lưới tam giác gọi toán xây dựng lưới tam giác Về mặt chất, toán xây dựng lưới tam giác từ tập ñiểm cho trước không Một ñiều kiện xây dựng lưới tam giác hay ñược sử dụng ứng dụng ñiều kiện Delaunay Định nghĩa Ta nói lưới tam giác thỏa ñiều kiện Delaunay bên ñường tròn ngoại tiếp tam giác không chứa ñiểm thuộc lưới tam giác ñó 2.3.1 Sơ ñồ Voronoi Sơ ñồ Voronoi biểu diễn sau: vùng Voronoi V(pi) ña giác lồi, với V(pi) không ñóng kín pi thuộc bao lồi tập ñiểm Nếu v ñỉnh Voronoi ñiểm giao V(p1), V(p2) V(p3) v tâm ñường tròn C(v) xác ñịnh p1, p2, p3 Trong ñó C(v) ñường tròn ngoại tiếp tam giác Delaunay tương ứng với v Bên C(v) không chứa ñiểm pj Nếu pj ñiểm gần ñến pj (pj,pj) cạnh tam giác Delaunay Bất kì ñường Footer Page of 126 Sơ ñồ Delaunay Phép chia nhỏ tạo số tam giác lớn không tồn cạnh nối hai ñiểm thêm vào mà không phá vỡ phép chia nhỏ S Tam giác tập P (n>=2 ñiểm) Delaunay ñường tròn qua không chứa ñiểm thứ tư 2.4 Thuật toán Delaunay Thuật toán tạo lưới tam giác Delaunay toán hình học tính toán ñược sử dụng nhiều lĩnh vực hệ thống thông tin ñịa GIS, phần tử hữu hạn, ñồ họa máy tính ña phương tiện… Để xây dựng lưới tam giác Delaunay từ tập hợp ñiểm ñầu vào ta chia thành hướng tiếp cận sau: a) Hướng tiếp cận chia ñể trị Đầu tiên, tập ñiểm ñầu vào ñược chia thành tập con, thực xây dựng lưới tam giác cho tập hợp lại ñể tạo lưới tam giác kết cuối Tuy nhiên, phần hợp kết thường cài ñặt phức tạp Giải pháp ñược ñề cập Dwyer công trình [6] b) Hướng tiếp cận sử dụng dòng quét Header Page of 126 10 Giải thuật theo hướng tiếp cận ñã ñược ñưa Fortune [7], sau ñó ñược tổng hợp lại de Berg công trình [5] Fortune ñã phát triển giải thuật xây dựng ñồ thị ñối ngẫu lưới tam giác Delaunay sơ ñồ Voronoi Việc cài ñặt giải thuật phức tạp c) Hướng tiếp cận thêm ñiểm Các giải thuật thuộc hướng tiếp cận ñơn giản ñể cài ñặt Giả sử có lưới tam giác Delaunay ñược xây dựng từ i-1 ñiểm Điểm thứ i ñược thêm vào lưới tam giác theo cách sau: Xác ñịnh tam giác chứa ñiểm i thêm vào lưới Phân rã tam giác ñó thành tam giác thuộc lưới hiệu chỉnh thoả ñiều kiện Delaunay [4] 2.5 Phương pháp chia nhỏ bề mặt lưới tam giác Loop Các mô hình 3D ñược tạo từ tập hợp ñiểm giải thuật Delaunay tạo bề mặt lưới tam giác thô Để tạo ñược bề mặt lưới mịn ta áp dụng thuật toán chia nhỏ bề mặt lưới Phương pháp Loop chia nhỏ bề mặt lưới dựa vào lưới tam giác ñầu vào Với bề mặt lưới ñầu vào bề mặt tam giác ñược tạo từ phương pháp tạo lưới thông qua giải thuật Delaunay Trong phạm vi luận văn này, ñã tập trung vào phương pháp Loop chia nhỏ bề mặt lưới, phép tính xấp xỉ, nhằm tạo bề mặt có tính liên tục Với thuật toán Loop, chia nhỏ mặt lưới ñầu vào ñược chia thành bốn mặt nhỏ Hình 2.16 Biểu diễn giải thuật chia nhỏ Loop Mô hình chia nhỏ theo phương pháp Loop tiến hành chia nhỏ mặt lưới tam giác cách thực số bước lặp Chú ý ña giác tạo nên bề mặt phải tam giác, bề mặt ña giác phẳng Giải thuật Charles Teorell Loop ñề cập [12], ông ñã cải tiến giải thuật chia nhỏ tam giác thành tam giác Giải thuật ñược biết ñến với tên giải thuật chia nhỏ Loop nhị phân Giải thuật Loop nhị phân bắt ñầu tập ñiểm ñỉnh tam giác Mỗi phép lặp tính tập cạnh ñiểm ñỉnh tạo nên ñỉnh tam giác nhỏ Đặc biệt, ñối với cạnh ñiểm ñỉnh ñiểm cạnh ñược tính cho ñỉnh lưới tam giác Giải thuật chia nhỏ Loop ñược chia làm hai bước Bước ñầu tiên tạo tất ñiểm tam giác mới, bước thứ hai ñịnh vị lại tất ñiểm cũ Giải thuật Loop giải thuật tính xấp xỉ nghĩa ñỉnh ñược hiệu chỉnh lại suốt trình phân chia Các ñỉnh lẻ ñỉnh ñược thêm vào suốt trình phân chia ñó ñỉnh chẵn ñỉnh sẵn có trước lúc chia Các cạnh biên cạnh nằm ñường biên lưới Nghĩa là, tồn cạnh ab tam giác mà chung với cạnh tam giác khác cạnh biên Đỉnh a, b mô tả Footer Page of 126 Header Page of 126 11 12 ñỉnh biên Các cạnh bên (không phải cạnh biên) Các bước xây dựng chương trình tái tạo bề mặt lưới từ tập tập bổ sung vào cạnh có chung tam giác Một ñỉnh bên hợp ñiểm 3D phương pháp chia nhỏ bề mặt lưới ñược minh họa nằm cạnh bên sau: β c 1/8 a 3/8 b a v a 1/8 1/2 β 3/8 aa a β β 1-kβ d a β β 1/2 (a) ñỉnh lẻ 1/8 3/4 1/8 (b) ñỉnh chẳn Hình 2.18 Hình minh họa ñỉnh lẻ ñỉnh chẵn Chương PHÂN TÍCH XÂY DỰNG CHƯƠNG TRÌNH XÂY DỰNG BỀ MẶT LƯỚI 3D Hình 3.1 Sơ ñồ tạo lưới tam giác Delaunay làm mịn 3.1 Tổ chức liệu bề mặt lưới Ngày nay, kỹ thuật mô hình hoá ñối tượng 3D ñã có Việc tái tạo lại mô hình từ vật thể từ ñối tượng thực nhiều ứng dụng rộng rãi, ñặc biệt thiết kế biểu diễn ñối công nghệ tái tạo mô hình vật thể máy tính Việc thu thập tượng ba chiều Việc tái lập lại ñối tượng 3D thực sử liệu ñối tượng thực dạng ñiểm, liên kết liệu dụng chế tái tạo ngược thu thập liệu ñối tượng tái tạo lại mô hình mô hình ñối tượng thực không gian thực dạng ñiểm ñể liên kết liệu tái tạo lại mô hình Để 3D Từ liệu ñiểm, lưới tam giác ñược xây dựng ñể liên lưu trữ tập hợp ñiểm 3D thu ñược mô hình hóa hình học ta sử kết ñiểm chiều không gian sử dụng thuật toán Delaunay dụng ngôn ngữ VRML (Virtual Reality Modeling Language) Mô hình ñối tượng ñược số hoá, sau thực số bước tinh 3.2 chỉnh, làm mịn, vá lỗ thủng chia nhỏ lưới tam giác ñể tăng cường chi tiết hoá mô hình số giải thuật chia nhỏ Loop Footer Page of 126 Xây dựng lưới tam giác Delaunay từ tập hợp ñiểm rời rạc 3D 3.2.1 Sơ ñồ khối thuật toán ñược mô tả sau: Header Page of 126 14 13 sau: với ñỉnh gốc ñược ký hiệu e →Goc, ñỉnh ñích ký hiệu e→Dich, mặt phẳng bên trái ký hiệu e→Trai, mặt phẳng bên phải ký hiệu e→Phai, cạnh ngược chiều ký hiệu e→NguocChieu, cạnh có gốc ký hiệu e→Goctiep, cạnh ngược chiều kim ñồng hồ thuộc mặt phẳng bên trái ký hiệu e→Traitiep, chiều kim ñồng hồ ký hiệu CCW ngược chiều kim ñồng hồ ký hiệu CW Với cạnh e (ký hiệu cạnh e) ta dễ tìm thấy ñỉnh lân cận, cạnh, mặt cạnh ñối xứng theo hướng ngược lại Hình 3.2 Sơ ñồ xử lý tập hợp ñiểm tạo lưới tam giác Delaunay 3.2.2 Cấu trúc liệu 3.2.2.1 Phân tích cấu trúc liệu Phép chia nhỏ S cắt miền M chứa ñiểm P:={p1,p2,…,p3} thành ba tập hợp ñỉnh, cạnh, mặt phẳng liên kết với có thuộc tính sau: tập ñỉnh ñiểm pi thuộc M, tập cạnh ñoạn thẳng nối ñỉnh thuộc M, tập mặt phẳng chứa tam giác ñều Hinh 3.3 Các thành phần quanh cạnh e thuộc M, ñường biên mặt phẳng qua cạnh ñỉnh 3.2.2.2 Cạnh góc (QuadEdge) Chúng ta biểu diễn phép chia nhỏ S cấu trúc liệu cạnh góc (quad-edge) Mỗi mẫu tin cạnh (edge record) chứa bốn cạnh e[0], e[1], e[2], e[3] cạnh e[r] với r=0,1,2,3 chứa hai trường Data Next Trường Data lưu trữ thông tin hình học, trường Next chứa tham chiếu cạnh Với cạnh phép chia nhỏ có hướng ứng với chiều cạnh Mỗi cạnh ký hiệu e ñịnh nghĩa Footer Page of 126 Hinh 3.4 Biểu diễn hướng theo chiều ngược chiều kim ñồng hồ Header Page of 126 15 16 3.2.3 Các toán tử thao tác cạnh góc (Quad-edge) 3.2.3.1 Toán tử tạo cạnh e → MakEdge() Trả cạnh e khởi tạo cấu trúc liệu Do ñó, có cạnh phép chia nhỏ nên vòng lặp: eGoc # eDich //gốc cạnh e khác với ñích cạnh e eTrai = ePhai //cạnh bên trái e với cạnh bên phải e Hình 3.5 Biểu diễn theo hướng chiều kim ñồng hồ eTraitiep = ePhaitiep = eNguocchieu // cạnh bên trái tiếp e với cạnh bên phải tiếp e cạnh ngược chiều e eGoctiep = eGoctruoc = eNguocchieu // gốc bên trái tiếp e với gốc bên phải trước e với cạnh e ngược chiều Hình 3.6 Cấu trúc cạnh góc (quad-edge) e Hình 3.8 Khởi tạo cạnh e 3.2.3.2 Toán tử nối cạnh Splice(a,b) Toán tử nối vòng aGoc bGoc không phụ thuộc hai Hình 3.7 Cấu trúc quad-edge ñồ thị (vòng ñậm ñỉnh, vòng nét ñứt mặt phẳng) Footer Page of 126 cạnh vòng aTrai bTrai Trong trường hợp Nếu hai vòng riêng biệt Splice kết hợp chúng thành Header Page 10 of 126 17 18 Nếu hai vòng, Splice bẻ thành hai phần Nếu hai vòng có chiều ñối ngược, Splice e.Dich=b.Dich; } 3.2.4 ñảo ngược thứ tự ñoạn vòng 3.2.3.3 Toán tử ghép cạnh Connect(a,b) Thực tạo cạnh e ñi từ ñỉnh a ñến gốc b ñó aTrai=eTrai=bTrai Được ñịnh nghĩa qua toán tử Splice sau: connect(a,b) { Xây dựng lưới tam giác Delaunay Xây dựng sơ ñồ Voronoi tam giác Delaunay từ cấu trúc liệu quad-edge theo phương pháp chia ñể trị “divide and conquer” Guibas Stofi với bậc n log n có cải tiến tối ưu hoá cấp phát nhớ, thủ tục trộn kiểm tra bốn ñiểm ñường tròn [6] Nội dung phương pháp chia ñể trị ta chia nhỏ tập e=MakEdge(); e.Goc=a.Dich; e.Dich=b.Goc; ñiểm làm hai phần bên trái L bên phải R, xây dựng tam giác splice(e,a.Traitiep); Delaunay theo ñiều kiện kiểm tra Incircle(A,B,C,D) cho splice(e.Nguocchieu,b); ñiểm phần bên trái L (ký hiệu L) bên phải R (ký hiệu R) theo return e; } thứ tự tăng y Sau ñó trộn hai phần có kết 3.2.3.4 Toán tử loại bỏ cạnh Delete(e) 3.3 Thực loại bỏ cạnh e khỏi cấu trúc quad-edge Ngược với toán tử ghép cạnh Connect Chia nhỏ bề mặt lưới Loop Chia nhỏ kỹ thuật mà nhằm tăng chất lượng mặt lưới cách tạo thêm nhiều ñỉnh Sự chia bề mặt delete(e) trình lặp ñi lặp lại Quá trình bắt ñầu với mặt lưới ña giác { splice(e,e.Goctruoc); cho trước sau bước lặp mô hình cụ thể ñược áp dụng vào splice(e.Nguocchieu,e.Nguocchieu.Go mặt lưới Nhiều ñỉnh mặt sở ñược tạo dựa cạnh xung quanh ctruoc); } Trong luận văn này, ñơn giản thực thuật toán chia 3.2.3.5 Toán tử hoán vị cạnh Swap(e) swap(e) nhỏ Loop Vẫn nhiều thuật toán chia nhỏ tốt ñối với { a=e.Goctruoc; người bắt ñầu việc phân chia mặt lưới tam giác với b=e.Nguocchieu.Goctruoc; thuật toán Loop khởi ñầu phù hợp Khởi ñầu cho thuật toán Loop ñọc lưới tam giác Delaunay, splice(e,a); splice(e.Nguocchieu,b); bước áp dụng thuật toán chia nhỏ theo phương pháp Loop, splice(e,a.Traitiep); trình chia nhỏ tạo lưới tam giác mịn, tô bóng lưới tam splice(e.Nguocchieu,b.Traitiep); giác xuất hình theo sơ ñồ khối thuật toán Loop e.Goc=a.Dich; sau: Footer Page 10 of 126 Header Page 11 of 126 19 20 Thuật toán chia nhỏ Loop áp dụng cho mặt lưới tam giác ñó vấn ñề mặt lưới ña giác liền kề chuyển thành dạng mặt lưới tam giác cách phân chia bề mặt gồm bước: Bước 1: tạo tất ñiểm tam giác Bước 2: tinh chỉnh tất ñiểm cũ không ñược tạo bước Đây thuật toán gần ñúng Có nghĩa có ñiều chỉnh ñỉnh ñang tồn suốt trình phân chia Trong chương trình LoopSubdivisionEdge Hình 3.26 Sơ ñồ xử lý lưới tam giác tạo lưới tam giác mịn ñã xây dựng LoopSubdivision lớp Lớp LoopSubdivisionEdge lưu trữ thông tin cạnh bao gồm Thuật toán chia nhỏ Loop tương tự thuật toán chia ñiểm kết thúc, tam giác liền kề ñỉnh cạnh ñể nhỏ ña giác, hai ñều thực lưới tam giác chia nhỏ giúp kiểm tra xem có phải cạnh bao quanh hay không ñể có mặt tam giác thành tam giác bước Trong trường hợp ñược mối quan hệ liền kề cách nhanh chóng thuật toán Loop mục tiêu xây dựng bề mặt mịn với hình dạng phân chia Loop Lớp LoopSubdivision ñảm trách toàn công việc tổng quát ñược ñiều khiển ña giác gốc Khi kết thúc, giải thuật thực thuật toán Loop loop ñặt ñỉnh sử dụng mặt nạ gồm có ñỉnh cũ ñặt lại Quy trình tính toán : ñỉnh cũ cách sử dụng mặt nạ khác sáp nhập tất ñỉnh trung Gọi hàm build_edge_set(mesh, edge_set, adjacent_edge_set) gian ñể tìm tất cạnh tạo danh sách cạnh liền kề cho ñỉnh Theo số lượng cạnh hình tam giác, biết số lượng ñỉnh hình tam giác lưới Cấp phát nhớ cho lưới Bước 1: tạo tất ñiểm LoopSubdivisionEdge giúp kiểm tra có ñúng cạnh bao quanh hay không cách Hình 3.27 Hình minh họa cho cài ñặt thuật toán Loop Footer Page 11 of 126 nhanh chóng Header Page 12 of 126 21 22 Bước 2: tinh chỉnh tất ñiểm cũ Sử dụng ñỉnh danh sách cạnh liền kề ñể kiểm tra ñỉnh ranh giới tìm ñỉnh toán Delaunay với tập ñiểm 2D Với tập hợp ñiểm lưới ñầu vào, ñược lưu trữ file có phần mở rộng Vertex.tri Chương trình ñọc file cho hiển thị ranh giới liền kề Kết nối ñỉnh tạo lưới dạng ñiểm ta thu ñược hình Thay lưới cũ ñỉnh tam giác mới; Khi trình phân chia làm thay ñổi kích cỡ mặt lưới, chương trình phải cấp phát nhớ cho họat ñộng phân chia Và chương trình nên xoá nhớ cũ sau lưới ñược tạo 3.4 Kết thực chương trình Chương trình ñược xây dựng môi trường Visual Studio Hình 3.30 Tập ñiểm 3D ñầu vào Hình 3.31 Lưới Delaunay nhìn theo hướng hình chiếu nhìn theo hướng hình chiếu C++ 6.0, kết hợp thư viện ñồ họa OpenGL Với liệu ñầu vào khác nên luận văn xây dựng hai chương trình ñể ñọc liệu khác Sau chạy chương trình ta có kết thực nghiệm sau: Với tập hợp ñiểm lưới ñầu vào, ñược lưu trữ file có Hình 3.32 Tập ñiểm 3D ñầu vào theo hướng hình chiếu ñứng phần mở rộng Vertex.nod Chương trình ñọc file cho hiển thị dạng ñiểm ta thu ñược hình Thực thuật toán Delaunay với tập hợp ñiểm ñầu vào ta thu ñược kết hình sau: Hình 3.33 Lưới Delaunay nhìn theo hướng hình chiếu ñúng Thực chạy chương trình chia nhỏ Loop với file ñầu vào chứa lưới tam giác Delaunay ta có kết sau: Hình 3.28 Tập hợp ñiểm 2D Footer Page 12 of 126 Hình 3.29 Sau thực thuật Header Page 13 of 126 24 23 Kết thực nghiệm xây dựng ñược mặt lưới tam giác phương pháp Delaunay Các tập hợp ñiểm thu thập ñược thông qua hình mẫu (vật thể, ñịa hình,…) tập hợp ñiểm chiều chiều, tập hợp ñiểm tổ chức Từ tập hợp ñiểm, sử dụng phương Hình 3.34 Sau chia nhỏ mặt lưới lần thứ pháp Delaunay tam giác hoá Việc xây dựng ñược mặt lưới tam giác từ tập ñiểm chiều chiều mặt lưới thô nên cần thực số thao tác tinh chế làm mịn Sau trình xử lý thu ñược lưới tam giác ñặc tả hình mẫu Để thực ñiều luận văn ñã ñề xuất giải pháp chia nhỏ mặt lưới tam giác cách sử dụng giải thuật Loop Để chia nhỏ mặt lưới, luận văn tiến hành tìm hiểu nghiên cứu lý thuyết lĩnh vực Có nhiều thuật toán áp dụng Hình 3.35 Sau chia nhỏ mặt lưới lần thứ KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Ngày ñồ họa máy tính ngày phát triển nhanh chóng việc nghiên cứu ứng dụng vào lĩnh vực thực tế xu hướng tất yếu Trong trình tìm hiểu, nghiên cứu tái tạo bề mặt lưới từ tập hợp ñiểm ño ñược không gian chia nhỏ bề mặt lưới vừa tạo từ tập hợp ñiểm nhằm làm mặt lưới ñạt ñược kết tốt hơn, luận văn ñã ñạt ñược kết khả quan Kết ñạt ñược luận văn mặt lý thuyết ñã ñi sâu vào tìm hiểu chế ñồ họa máy tính, tìm hiểu qui trình xử lý, hiển thị ñối tượng, mô hình hoá vật thể môi trường ñồ họa chiều Nghiên cứu cách xây dựng mặt lưới tam giác từ tập hợp ñiểm chiều rời rạc không gian, trình nghiên cứu, nhận thấy với thuật toán Delaunay ta dễ dàng xây dựng mặt lưới tam giác từ tập hợp ñiểm Footer Page 13 of 126 ñể chia nhỏ lưới ñể tối ưu bề mặt lưới Nhưng ñề tài nghiên cứu sử dụng lưới tam giác Delaunay nên tiến hành nghiên cứu giải thuật Loop chia nhỏ bề mặt lưới Kết ñã xây dựng ñược chương trình chia nhỏ mặt lưới tam giác, làm mịn bề mặt lưới Tuy nhiên luận văn dừng lại mức xây dựng từ tập hợp ñiểm ñã có, chưa sử dụng thiết bị ñặc dụng ñể quét mô hình vật thể môi trường không gian thực Nên luận văn dừng lại mức mô hình hoá vật thể Hiện công nghệ tái tạo ngược ñã ñang phát triển mạnh giới Việt Nam, công nghệ ñã ñược áp dụng rộng rãi vào lĩnh vực CAD/CAM, thực ảo, kiến trúc, bảo tồn di sản văn hoá nhằm tái tạo lại hình mẫu ñiêu khắc Hướng phát triển ñề tài tiếp tục hoàn thiện chương trình, bổ sung thêm vào chức phần mềm thiết kế CAD/CAM có ... dụng thuật toán chia nhỏ bề mặt lưới Phương pháp Loop chia nhỏ bề mặt lưới dựa vào lưới tam giác ñầu vào Với bề mặt lưới ñầu vào bề mặt tam giác ñược tạo từ phương pháp tạo lưới thông qua giải...Header Page of 126 “XÂY DỰNG BỀ MẶT LƯỚI TỪ TẬP HỢP ĐIỂM 3D VÀ MỞ ĐẦU PHƯƠNG PHÁP CHIA NHỎ BỀ MẶT LƯỚI” Lý chọn ñề tài Đối tượng, phạm vi, phương pháp nghiên cứu Trong năm gần ñây... cứu giải thuật Loop chia nhỏ bề mặt lưới Kết ñã xây dựng ñược chương trình chia nhỏ mặt lưới tam giác, làm mịn bề mặt lưới Tuy nhiên luận văn dừng lại mức xây dựng từ tập hợp ñiểm ñã có, chưa