Nghiên cứu một số kỹ thuật rút gọn bề mặt mô hình 3d

108 167 0
Nghiên cứu một số kỹ thuật rút gọn bề mặt mô hình 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

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG PHẠM MINH KHÔI NGHIÊN CỨU MỘT SỐ KỸ THUẬT RÚT GỌN BỀ MẶT MƠ HÌNH 3D LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUYÊN - 2015 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG PHẠM MINH KHÔI NGHIÊN CỨU MỘT SỐ KỸ THUẬT RÚT GỌN BỀ MẶT MÔ HÌNH 3D Chun ngành : Khoa học máy tính Mã số : 60480101 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS TS ĐỖ NĂNG TỒN THÁI NGUN - 2015 LỜI CAM ĐOAN Tơi xin cam đoan luận văn cơng trình nghiên cứu riêng cá nhân tơi, kết luận văn hồn tồn kết tự thân tơi tìm hiểu, nghiên cứu hướng dẫn giáo viên hướng dẫn PGS TS Đỗ Năng Tồn Tơi hồn tồn chịu trách nhiệm tính pháp lý q trình nghiên cứu khoa học luận văn Thái Nguyên, tháng 12 năm 2015 Học viên Phạm Minh Khôi LỜI CẢM ƠN Lời đầu tiên, em xin gửi lời biết ơn sâu sắc đến PGS TS.Đỗ Năng Toàn người tận tình hướng dẫn, bảo, giúp đỡ em suốt trình làm luận văn Em xin gửi lời cảm ơn đến thầy cô giáo trường Đại học Công nghệ thông tin Truyền thông - Đại học Thái Nguyên, thầy cô Viện Công nghệ thông tin truyền đạt kiến thức giúp đỡ em suốt trình học ửi lời cảm ơn tới Ban giám hiệu trường THPT Nguyễn Đức Cảnh - Hải Phòng tạo điều kiện thuận lợ tham gia khóa học q trình hồn thành luận văn ửi lời cảm ơn tới đồng nghiệp, gia đình bạn bè người ủng hộ, động viên tạo điều kiện giúp đỡ để viên có kết ngày hôm Thái Nguyên, tháng 12 năm 2015 Học viên Phạm Minh Khôi MỤC LỤC MỞ ĐẦU CHƯƠNG KHÁI QUÁT VỀ ĐỒ HỌA 3D VÀ BÀI TOÁN RÚT GỌN 1.1 Khái quát đồ họa 3D 1.1.1 Đồ họa 3D gì? 1.1.2 Các thành phần đồ họa 3D 1.1.3 Card hình 1.1.4 Các ứng dụng đồ họa 3D 1.2 BÀI TOÁN RÚT GỌN ĐỐI TƯỢNG 3D 10 1.2.1 Khái niệm lưới (Mesh): 10 1.2.2 Giới thiệu toán rút gọn 11 1.2.3 Một số cách tiếp cận rút gọn lưới 3D: 13 CHƯƠNG MỘT SỐ KỸ THUẬT RÚT GỌN BỀ MẶT MƠ HÌNH 3D 15 2.1 Rút gọn lưới kỹ thuật PM (Progressive Meshes) 15 2.1.1 Ý tưởng 15 2.1.2 Thuật toán PM (Progressive Meshes) 17 2.1.3 Diện mạo lưới: 18 2.1.4 Truyền tải lũy tiến 20 2.1.5 Nén lưới 20 2.1.6 Làm mịn có chọn lọc 23 2.1.7 Xây dựng lưới 24 2.1.8 Tóm lược: Tối ưu hóa lưới 25 2.1.9 Tổng quan thuật toán đơn giản hóa lưới 27 2.1.10 Bảo quản hình dạng bề mặt Edist Espring 29 2.1.11 Bảo tồn thuộc tính vơ hướngEscalar(M) 30 2.1.12 Duy trì đường cong gián đoạn (Edisc) 32 2.1.13 Cho phép thay đổi cấu trúc liên kết đường cong gián đoạn 34 2.2 Đơn giản hóa lưới kỹ thuật Quadric Error Metrics (QEM) 34 2.2.1 Các yêu cầu giữ nguyên hình dạng hình học vật thể (topology preservation) 35 2.2.2 Phương pháp đánh giá độ xấp xỉ 36 2.2.3 Ý tưởng bước thuật toán 40 2.2.3.1 Ý tưởng 40 2.2.3.2 Các bước thuật toán 40 2.2.4 Tập cặp đỉnh xem xét loại bỏ 42 2.2.4.1 Tập cặp đỉnh 42 2.2.4.2 Phép loại bỏ cặp đỉnh 43 2.2.5 Hàm xác định giá 43 2.2.5.1 Đại lượng sai số bậc hai (QEM) 45 2.2.5.2 Xác dịnh trọng số mặt 47 2.2.5.3 Xác định vị trí đỉnh 49 2.2.6 Kiểm tra tính tồn vẹn 49 CHƯƠNG CHƯƠNG TRÌNH THỬ NGHIỆM 52 3.1 Yêu cầu toán 52 3.2 Mô tả liệu thử nghiệm 52 3.3 Phân tích thiết kế chương trình thử nghiệm 54 3.3.1 Phân tích thiết kế 54 3.3.2 Chương trình thử nghiệm 55 3.3.3 Đánh giá kết đạt 58 PHẦN KẾT LUẬN 64 TÀI LIỆU THAM KHẢO 65 DANH MỤC HÌNH Hình 1.1 Đối tượng 3D Hình 1.2 Cấu trúc mơ hình 3D Hình 1.3 Các đối tượng nguyên thuỷ đa giác Hình 1.4 Mơ hình liên tục Hình 1.5 Card đồ họa hỗ trợ 3D Hình 1.6 Mơ hình lưới tam giác 10 Hình 1.7 Minh họa việc giảm thiểu bề mặt 2D 12 Hình 1.8 Minh họa việc giảm thiểu bề mặt 3D theo mức khác 12 Hình 2.1 Minh họa việc chuyển bó cạnh (ecol: hợp; vsplit: tách) 15 Hình 2.2 (a) Trình tự bó cạnh; (b) Kết đỉnh tương ứng 15 Hình 2.3 Minh hoạ đường dẫn thực tối ưu hóa cách sử dụng lưới ba thiết lập khác Crep 26 Hình 2.4 Minh hoạ PM đường dẫn thực thủ tục đơn giản hóa lưới đồ thị vẽ xác so với kích thước mắt lưới 28 Hình 2.5 Đơn giản hóa khơng sử dụng Edisc 34 Hình 2.6 Một vật thể gồm nhiều khối hộp giảm thiểu theo cách 36 Hình 2.7 Mơ tình khơng gian hai chiều 45 Hình 2.8 Mặt vng “lát” hình tam giác khác 48 Hình 2.9 Sau loại bỏ cặp xuất mặt bị ngược 50 Hình 2.10 Giải pháp QEM 50 Hình 3.1 Ví dụ u cầu rút gọn mơ hình 3D 52 Hình 3.2 Minh họa cấu trúc tệp OBJ 53 Hình 3.3 Thử nghiệm mơ hình Bunny 57 Hình 3.4 Thử nghiệm mơ hình Dragon 58 Hình 3.5 Thử nghiệm mơ hình Horse 58 Hình 3.6 Bunny 69665 mặt - 34835 đỉnh 59 Hình 3.7 Bunny 500 mặt 252 đỉnh 59 Hình 3.8 Bunny 100 mặt 52 đỉnh 59 Hình 3.9 Dragon 209227 mặt 104855 đỉnh 59 Hình 3.10 Dragon 500 mặt 250 đỉnh 60 Hình 3.11 Dragon 100 mặt 51 đỉnh 60 Hình 3.12 Horse 96966 mặt 48485 đỉnh 60 Hình 3.13 Horse 500 mặt 252 đỉnh 60 Hình 3.14 Horse 100 mặt 52 đỉnh 61 Hình 3.15 Car 8160 mặt - 425931 đỉnh 61 Hình 3.16 Car 1686 mặt 425931 đỉnh 62 DANH MỤC TỪ VIẾT TẮT STT Ký hiệu Tiếng Anh Tiếng Việt 2D Two- dimensional Không gian hai chiều 3D Three-dimensional Không gian ba chiều CPU Central Processing Unit Bộ xử lí trung tâm GPU Graphic Processing Unit Bộ xử lí đồ họa GIS IEEE NURBS PDE GeographicInformation Hệ thống thơng tin địa lí System Institute of Electrical and Electronics Engineers Non-Uniform Rational Chuẩn dấu phẩy động số học B- B-spline hữu tỉ không đồng spline Partial Differential Equation Phương trình vi phân phần Thuật tốnlưới lũy tiếnđơn PM Progressive Meshes giản lưới biểu diễn bề mặt đa diện Thuật toán đơn giản lưới biểu 10 QEM Quadric Error Metrics diễn bề mặt đa diện sử dụng độ đo sai số bậc hai 11 RBF 12 VRML Radial Basic Function Hàm sở bán kính Virtual Reality Modeling Ngơn ngữ mơ hình hóa thực Language Số hóa Trung tâm Học liệu – ĐHTN ảo http://www.lrc.tnu.edu.vn Output:Từ mơ hình cho đưa mơ hình với số mặt mơ hình ban đầu.Ví dụ cho thấy rút gọn thỏ (bunny.obj) với số tam giác bề mặt xuống 100 3.3 Phân tích thiết kế chương trình thử nghiệm 3.3.1 Phân tích thiết kế Có nhiều định dạng khác để lưu trữ mơ hình 3D như: *.3Ds, *.off, *.ply, *.obj… chương xin trình bày với tệp liệu input với tệp *.obj Dòng tệp thích bắt đầu với #, Ví dụ “#3D Model A” Định nghĩa đỉnh bắt đầu với v theo sau giá trị thực đỉnh Mỗi đỉnh gán số Đỉnh có số Ví dụ v -1.53 2.06 3.82 v 6.98 -11.3 -0.008 1.0 Tọa độ kết cấu quy định vt biểu tượng hai ba giá trị dấu chấm động khoảng [0, 1] Tọa độ texture ánh xạ tới đỉnh phối thơng qua mặt (polygon) Tập có số Ví dụ vt 0.25 0.90 v 0.0 0.5 0.5 Đỉnh thông thường quy định cách sử dụng lệnh Các thành phần gán cho đỉnh thông qua lệnh ('f') Tập đỉnh thường gán số Ví dụ -0.256 0.1888 -0.756 Một định nghĩa đa giác sử dụng lệnh bắt đầu với f theo sau danh sách số nguyên dương số đỉnh hợp lệ Ví dụ f f 15 22 Lệnh f có hình thức tổng qt fv/vt/vn v/vt/vn v/vt/vn sử dụng để kết hợp kết cấu bình thường thuộc tính với đỉnh Cả hai trường /vt /vn tùy chọn Ví dụ f 2/3/1 3/5/2 6/1/7 f 15/2 8/3 1/5 f 6//11 7//6 2//22 22/9 Ví dụ định nghĩa tam giác bao gồm kết cấu tọa độ bình thường đỉnh Ví dụ thứ hai kết cấu phối hợp tham chiếu đến đỉnh, ví dụ thứ ba sử dụng vectơ bình thường Trong chương chủ yếu dùng lưới tam giác nên v f sử dụng ba giá trị (một tam giác có ba đỉnh, đỉnh có tọa độ gồm ba giá trịx,y,z) 3.3.2 Chương trình thử nghiệm Trong luận văn tơi sử dụng chương trình tiến sĩ Forstmann, J Ohyadùng kỹ thuật QEM có tên gốc “FastQuadricMeshSimplification” viết môi trường Visual Studio 2013, sử dụng ngôn ngữ lập trình Visual C++ Chương trình gốc tác giả chạy với mơ hình thời điểm tên tệp mơ hình cần rút gọn cố định chương trình Vì lời gọi thủ tục OBJ obj(" /data/bunny.obj",1);) để mở tệp cố định, muốn thay đổi mơ hình cần vào hàm main() để gõ tên mơ hình cần rút gọn Trong chương trình gốc tác giả,tham số mặt cần rút gọn tên tệp output cố định hàm main()như sau: Simplify::simplify_mesh(20000); Simplify::write_obj(" /test_out.obj");nên bất lợi cho việc đóng gói khó triển khai sử dụng rơng rãi Để thuận thiện cho việc thử nghiệm, học viên sửa lại chương trình nguồn để đưa tệp đầu vào tham số chuyển chương trình sang dạng dòng lệnh (commander) nhằm tham số hóa đầu vào, đầu giúp cho việc đóng gói sử dụng sau hiệu int main(int argc, char* argv[]) { int temp_c; //Chứa số mặt cần giảm tới char input_name[256]; //Chứa tên tệp mơ hình vào char output_name[256]; //Chứa tên tệp mơ hình float c; if (argc == 1) { OutputUsage(); // Đưa hướng đẫn sử dụng } else if (argc = 4) { strcpy(input_name, argv[1]); //Gán tệp vào strcpy(output_name, argv[2]); //Gán tệp sscanf(argv[3], "%f", &c); //Gán mặt cần giảm tới } … obj.load_obj(input_name, 100); … Simplify::simplify_mesh((int)c); Simplify::write_obj(output_name); … Như ta tham số hóa chương trình, để sử dụng chương trình sau biên dịch đóng gói, mang tới máy khác vơ đơn giản (cần cài thêm VC++ 2012 Runtime) sử dụng với cú pháp sau: Simplification Ví dụ: Gõ lệnh Simplification bunny.obj o_bun1000.obj 1000 Ví dụ cho thấy việc rút gọn mơ hình bunny.obj đưa tệp kết o_bun1000.obj với số mặt cần có 1000 Để rút gọn nhiều mơ hình ta cần soạn tệp *.bat nhiều dòng với cú pháp Ví dụ: tệp test.bat có nội dung: Simplification bunny.obj b100.obj 100 //Rút gọn thỏ xuống 100 mặt Simplification bunny.obj b1000.obj 10000 Simplification dragon.obj d500.obj 5000 Simplification horse.obj h2000.obj 2000 Lưu ý tệp cần rút gọn phải nằm thư mực với tệp chương trình (Mã nguồn: https://github.com/sp4cerat/Fast-Quadric-Mesh- Simplification) Thử nghiệm Input: “bunny.obj” mơ hình thỏ gốc Hình 3.3 a Output: Hình 3.3 b, Hình 3.3 c Hình 3.3 Thử nghiệm mơ hình Bunny Tệp gốc hình a 3,389Kb với hình b 397Kb (85%) thời gian xử lý 163ms, hình c 15Kb với thời gian xử lý 187ms Thử nghiệm Input: “Dragon.obj” mơ hình rồng gốc Hình 3.4a Output: Hình 3.4b, Hình 3.4c Hình 3.4 Thử nghiệm mơ hình Dragon Tệp gốc hình a 9,342Kb với hình b 396Kb (92%) thời gian xử lý 706ms, hình c 14Kb với thời gian xử lý 832ms Thử nghiệm Input: “Horse.obj” mơ hình ngựa gốc Hình 3.5a Output: Hình 3.5b, Hình 3.5c Hình 3.5 Thử nghiệm mơ hình Horse Tệp gốc hình a 3,389Kb với hình b 393Kb thời gian xử lý 187ms, hình c 13Kb với thời gian xử lý 226ms 3.3.3 Đánh giá kết đạt Các minh họa sau cho thấy việc bảo quản hình dạng chi tiết quan trọng vật thể Hình 3.6 Bunny 69665 mặt - 34835 đỉnh Hình 3.7 Bunny 500 mặt 252 đỉnh Hình 3.8 Bunny 100 mặt 52 đỉnh Hình 3.9 Dragon 209227mặt 104855 đỉnh Hình 3.10 Dragon 500mặt 250 đỉnh Hình 3.11 Dragon 100 mặt 51 đỉnh Hình 3.12 Horse 96966 mặt 48485 đỉnh Hình 3.13 Horse 500mặt 252 đỉnh Hình 3.14 Horse 100mặt 52 đỉnh Từ Hình 3.3 đến Hình 3.5 cho ta thấy mơ hình giảm thiểu với mức độ khác nhau, giảm số lượng tam giác cực lớn tính giây nên thuật toán đáp ứng ứng dụng thực ảo thời gian thực tốt Với hình 3.5 thời gian xử lý 226ms tức 1/5s từ 96966 tam giác xuống 500 tam giác bề mặt Từ Hình từ 3.6 đến Hình 3.14 cho ta thấy mức độ giảm thiểu lớn song mơ hình đối tượng giữ dáng vẻ tương đối giống với mơ hình gốc Ta thấy tỉ lệ rút gọn mơ hình Horse: 100(mặt rút gọn)/96966(mặt gốc)=0,103% Như vật thể với mức giảm thiểu 99.9% mà giữ dáng vẻ bề đáng hiệu Hình 3.15 Car 8160 mặt - 425931 đỉnh Hình 3.16 Car 1686 mặt 425931 đỉnh Bảo tồn ranh giới vật chất đường gấp khúc, đứt đoạn: Với mơ hình xe Car, với tỷ lệ giảm thiểu 1686/8160=20.7% số bề mặt đỉnh không giảm số lượng chi tiết phức tạp mơ bánh xe, cánh, ghế… chi tiết phụ phức tạp khác Như thuật tốn coi trọng bảo tồn ranh giới, vùng tạo nên đặc tính riêng mơ hình Về mặt hiệu thuật tốn, ta thử nghiệm mơ hình dragon.obj (209227 mặt tam giác bao phủ, 104885 đỉnh) Ta thử nghiệm máy có cấu hình: CPU Core Duo 1.7GHz; RAM DRII 2Gb; Chipset: Intel 965; Hệ điều hành Windows 10 (1) Rút gọn 20.000 mặt thu lưới 10023 đỉnh với thời gian 1786 ms (xấp xỉ giây); (2) Rút gọn 10.000 mặt thu lưới 5015 đỉnh với thời gian 2122 ms (xấp xỉ 2,1 giây); (3) Rút gọn 5.000 mặt thu lưới 1512 đỉnh với thời gian 2275 ms (xấp xỉ 2,2 giây); (4) Rút gọn 500 mặt thu lưới 262 đỉnh với thời gian 2612 ms (xấp xỉ 2,26 giây) Như ta nhận thấy thuật tốn xử lý mơ hình với không gian104885 đỉnh với bốn thử nghiệm thời gian không chênh lệch nhiều ta thấy không gian đỉnh bị loại bỏ nhanh chóng, với (1) 10023/104885 ta thấy khơng gian lưu trữ mơ hình giảm 1/10; tương tự với (4) 262/104885 số nhỏ không gian lưu trữ đảm bảo yêu cầu hình dạng ban đầu mơ hình vật thể Vậy đáp ứng ứng dụng thời gian thực nhớ nhường cho yêu cầu điều khiển khác đồ họa 3D PHẦN KẾT LUẬN Nội dung đạt được: Sau thời gian tìm hiểu hướng dẫn tận tình, luận văn tơi đạt số kết bước đầu sau: - Luận văn trình bày tổng quan đối tượng 3D, tốn rút gọn mơ hình bề mặt 3Dvà cách tiếp cận giải toán - Hệ thống trình bày lý thuyết hai kỹ thuật rút gọnđối tượng3D: Kỹ thuật rút gọn lưới lũy tiến (PM – Progressive Mesh)và kỹthuật rút gọn đối tượng dựa đại lượng sai số bậc (QEM – Quadric Error Metrics) - Cài đặt thử nghiệm kỹ thuật rút gọn là: Kỹthuật rút gọn đối tượng dựa đại lượng sai số bậc (QEM – Quadric Error Metrics) Hạn chế - Luận văn chủ yếu tập trung vào xử lý mơ hình lưới tam giác, thực tế lưới có nhiều dạng trình bày Chương I - Chỉ tập trung vào xử lý bề mặt lưới, chưa quan tâm đến yếu tố khác Texture, tạo bóng, tương tác với vật thể… Hướng phát triển Trong thời gian tới, tác giả tiếp tục phát triển vấn đề nghiên cứu luận văn là: tiếp tục nghiên cứu cài đặt mở rộng với mơ hình lưới đa giác, đường cong, mặt cong chất liệu che phủ bề mặt tiến tới cài đặt thử nghiệm bước đầu với số kỹ thuật xử lý song song khác nhằm làm tăng tốc độ tính tốn phục vụ cho ứng dụng thời gian thực TÀI LIỆU THAM KHẢO TIẾNG VIỆT [1] Đ N Toàn N V Hn, “Tạp chí khoa học cơng nghệ,” Một thuật tốn rút gọn biểu diễn bề mặt mơ hình 3D, 2, pp 123-133, 2010 [2] N V Thắng, “Phục dựng hình ảnh 3D từ liệu ảnh y tế DICOM,” Luận văn thạc sĩ, Thái Nguyên, 2012, p 51 TIẾNG ANH [3] C 4.6.3, "Triangulated Surface Mesh," CGAL.ORG, 29 2015 [Online] Available: http://doc.cgal.org/latest/Surface_mesh_simplification/ [Accessed 29 2015] [4] Jarek Rossignac and Paul Borrel, "Multi-resolution 3d approximation for rendering complex scenes," in Geometric Modeling in Computer Graphics, Springer Verlag, 1993, p 455–465 [5] Schroeder, W., Zarge, J and Lorensen, W., Decimation of triangle meshes, Computer Graphics (SIGGRAPH, 1992 [6] Michael Garland and Paul S Heckbert, "Surface simplification using quadric error metrics," in Proceedings of the 24th annual conference on Computer graphics and interactive techniques, New York, NY, USA, 1997, p 209–216 [7] G Turk, Re-tiling polygonal surfaces.Computer Graphics, SIGGRAPH ‟92 Proceedings, 1992 [8] M H Gross, O G Staadt and Roger Gatti, "Efficient triangular surface approximation using wavelets and quadtree data structures," in IEEE Transaction on Visualization and Computer Graphics, 1996, p 130–143 [9] Hoppe,H., DeRose, T., Duchamp, T., McDonald, J and Stuetzle, W., "Mesh optimization," in Computer Graphics (SIGGRAPH ’93 Proceedings), SIGGRAPH ‟93 Proceedings, 1993, pp 1926 [10] Lounsbery, M., DeRose, T and Warren, J., Multiresolution analysis for surfaces of arbitrary topological type., Washington: Dept of Computer Science and Engineering, 1994 [11] J M Lounsbery, Multiresolution analysis for surfaces of, University of Washington: Department of Computer Science and Engineering, 1994 [12] M Deering, Geometry compression, SIGGRAPH ‟95 Proceedings, 1995 [13] Taubin, G and Rossignac, J., "Geometry compression through topological surgery," Research Report RC-20340, IBM, 1996 [14] G Turan, "Succinct representations of graphs," in Discrete Applied Mathematics 8, 1984, pp 289-294 [15] Witten, I., Neal, R and Cleary, J., Arithmetic coding for data compression, Communications of the ACM, 1987 ... lưới 3D bất thường gồm kỹ thuật dựng lại lưới CHƯƠNG MỘT SỐ KỸ THUẬT RÚT GỌN BỀ MẶT MÔ HÌNH 3D Nội dung chương trình bày chi tiết hai kỹ thuật sử dụng phổ biến ứng dụng rút gọn bề mặt mô hình 3D. .. họa 3D, song nghiên cứu chưa nhiều Từ lý kể với gợi ý thầy hướng dẫn học viên lựa chọn đề tài Nghiên cứu số kỹ thuật rút gọn bề mặt mơ hình 3D Đối tượng phạm vi nghiên cứu - Đối tượng nghiên cứu: ... niệm rút gọn lưới :Rút gọn mơ hình 3D là[3] nghiên cứu lớp thuật toán nhằm giảm thiểu số mặt lưới bề mặt cho giữ lại cách tương đối hình dạng ban đầu vật thể (Hình 1.8) Cụ thể là: Thu lưới có mặt,

Ngày đăng: 23/11/2018, 09:44

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan