Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 53 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
53
Dung lượng
1,61 MB
Nội dung
Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mơ Phỏng Chuyển Động Robot Đá Bóng LỜI MỞ ĐẦU -o0o- Sự phát triển khoa học, kĩ thuật, kinh doanh công nghệ luôn thuộc vào khả truyền đạt thông tin chúng ta, thông qua bit liệu lưu trữ microchip thông qua giao tiếp tiếng nói Câu châm ngơn từ xa xưa “một hình ảnh có giá trị vạn lời” hay “trăm nghe không thấy” cho thấy ý nghĩa lớn hình ảnh việc truyền tải thơng tin Hình ảnh cảm nhận nhanh dễ dàng hơn, đặc biệt trường hợp bất đồng ngơn ngữ Do khơng có ngạc nhiên mà từ xuất máy tính, nghiên cứu cố gắng sử dụng để phát minh hinh ảnh sử dụng hình Trong suốt gần 50 năm phát triển máy tính, khả phát sinh hình ảnh đạt tới mức tất máy tính có khả đồ họa - Đồ họa máy tính lĩnh vực lí thú phát triển nhanh tin học Ngay từ xuất hiện, đồ họa máy tính có sức lơi mãnh liệt, hút nhiều người nhiều lĩnh vực khác như: khoa học, nghệ thuật, kinh doanh, quản lí, … Tính hấp dẫn đa dạng đồ họa máy tính minh họa trực quan thông qua việc khảo sát ứng dụng - Và để hiểu rõ kỹ thuật đồ họa máy tính chúng em tìm hiểu hồn thành tập lớn đề tài: “Xây dựng chương trình mơ chuyển động Robot đá bóng” - Trong q trình làm chúng em cố gắng, song chắn khơng thể tránh khỏi thiếu sót, mong có đóng góp ý kiến quý thầy bạn Chúng em chân thành cảm ơn giảng viên Phùng Thế Bảo giúp chúng em hoàn thành tập này! NHÓM BÁO CÁO 1|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng MỤC LỤC LỜI MỞ ĐẦU .1 MỤC LỤC .2 PHẦN TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT CHƯƠNG GIỚI THIỆU THƯ VIỆN OPENGL 1.1 Lịch sử phát triển .3 1.2 Khái niệm 1.3 Cài đặt thư viện môi trường MS Visual Studio 2013 1.3.1 Download thư viện OpenGL cài đặt 1.3.2 Kiểm tra hàm chương trình CHƯƠNG TÌM HIỂU THƯ VIỆN OPENGL PHẦN VẬN DỤNG 17 ĐẶC VẤN ĐỀ 17 1.1 Yêu cầu 17 PHẦN TÍCH YÊU CẦU 17 2.1 Phân tích yêu cầu 17 2.2 Định hướng giải vấn đề .17 2.3 Nguyên lý hoạt động .17 CÀI ĐẶT CHƯƠNG TRÌNH 18 3.1 Cấu trúc chương trình 18 3.2 Mơ tả chi tiết q trình cài đặt 21 3.3 Xử lý lý chuyển động 43 NHẬN XÉT .49 4.1 Kết đạt 49 4.2 Hạn chế 52 4.3 Hướng giải 52 TÀI LIỆU THAM KHẢO 53 2|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng PHẦN TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT CHƯƠNG GIỚI THIỆU THƯ VIỆN OPENGL 1.1 Lịch sử phát triển - Nguyên thủy, GL Silicon Graphics Incorporated (SGI) thiết kế để dùng cho trạm làm việc (workstation) đồ họa IRIS GL với cấu hình phần cứng khác có vấn đề phát sinh - OpenGL kết nối nổ lực SGL nhằm cải ithieejn tính tương thích IRIS GL Ngơn ngữ có khả GL, đồng thời “mở” nghĩa dễ dàng tương thích với loại cấu hình phần cứng, hệ điều hành khác - Version 1.0 OPENGL giới thiệu vào ngày 01/7/1992 Để bảo đảm tính “mở”, nâng cấp OpenGL phải thông qua Ủy Ban Xem Xét Kiến Trúc OpenGL (OpenGL Architecture Review Board AEB) gồm thành viên sang lập SGI, Digittal Equipment Corporation, IBM, Intel Microsoft ARB họp năm hai lần (Các cơng ty khác tham gia thảo luận khơng có quyền bỏ phiếu) OpenGL version 1.1 ARB thông qua vào tháng 12/1995 1.2 Khái niệm - OpenGL định nghĩa “giao diện phần mềm cho phần cứng đồ họa” Thực chất, OpenGL thư viện hàm đồ họa, xem tiêu chuẩn thiết kế công nghiệp cho đồ họa ba chiều - Với giao diện lập trình mạnh mẽ, OpenGL cho phép tạo ứng dụng 3D phức tạp với độ tinh vi, xác cao mà người thiết kế khơng phải đánh vật với núi cơng thức tốn học mã nguồn phức tạp Và OpenGL tiêu chuẩn cơng nghiệp, ứng dụng tạo từ dung phần cứng hệ điều hành khác - Các mục sau giới thiệu cách nhìn tổng quát cách làm việc OpenGL: - Các phần tử đồ họa lệnh giới thiệu phần tử đồ họa (primitive) thực lệnh - Cách làm việc OpenGL cho biết loại thao tác đồ họa mà OpenGL kiểm sốt - Mơ hình hoạt động nói mơ hình client/server cho việc thơng dịch lệnh OpenGL 3|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng - Thao tác OpenGL đưa mô tả mức cao cách OpenGL xử lí liệu tạo hình ảnh tương ứng lên đệm khung Các phần tử đồ họa lệnh: Primitive xác định nhóm hay nhiều vertex điểm không gian Mỗi vertex xác định điểm, đầu đoạn thẳng hay đỉnh đa giác Dữ liệu (bao gồm tọa độ vertex, màu sắc, Normal, texture cờ xác định loại cạnh) kết hợp với vertex Khi xử lí primitive, cặp vertex liệu kết hợp với xử lí độc lập với cặp khác, theo thứ tự phương pháp Ngoại lệ trường hợp khử phần khuất primitive (clipping) Khi đó, liệu vertex sửa vào vertex khác tạo Loại clipping tùy thuộc loại primitive mà nhóm vertex biểu diễn Các lệnh ln ln xử lí theo thứ tự mà tiếp nhận, có trì hỗn khơng xác định trước lệnh có hiệu lực Nghĩa primitive vẽ trọn vẹn trước lệnh có hiệu lực Cách làm việc OpenGL: OpenGL ngôn ngữ đồ họa theo thủ tục ngơn ngữ mơ tả Thay cảnh cách chúng xuất OpenGL đưa bước cần thiết để có thể hay hiệu định Các “bước” lời gọi đến giao diện lập trình ứng dụng gồm xấp sỉ 120 lệnh hàm Chúng dùng để vẽ phần tử đồ họa điểm, đường đa giác khơng gian ba chiều Ngồi ra, OpenGL cịn hỗ trợ chiếu sang, tơ bóng, gán cấu trúc, tạo ảo giác chuyển động hiệu đặc biệt khác OpenGL khơng có chức quản lí sổ, tương tác với người dung hay xuất nhập file Mơi trường chủ (tức hệ điều hành) có chức chịu trách nhiệm thực biện pháo quản lí cho OpenGl Mơ hình hoạt động: Mơ hình thơng dịch lệnh OpenGL client/server Mã ứng dụng (vai trò client) đưa lệnh Lệnh thơng dịch sử lí OpenGL (vai trị server) Server client máy tính khác Theo nghĩa này, OpenGl network-transparent (tạm dịch m ạng suốt) 4|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng Server trì nhiều ngữ cảnh OpenGL, ngữ cảnh trạng thái OpenGL Client nói với ngữ cảnh Giao thức mạng sử dụng độc lập hóa dựa giao thức mạng có (tức OpenGl dụng máy độc lập hay môi trường mạng) Không có lệnh OpenGL tiếp nhận việc nhận việc nhập liệc trực tiếp từ người dùng Cuối cùng, hệ thống cửa sổ kiểm soát tác dụng lệnh OpenGl đệm khung qua thao tác: Quyết định phần đệm khung mà OpenGL truy suất thời điểm cho phép Truyền đạt cho OpenGL thông tin cấu trúc phần Như vậy, khơng có lệnh OpenGL định dạng đệm khung hay khỏi tạo OpenGL Sự định dạng đệm khung thực bên OpenGL liên kết với hệ thống cửa sổ Sự khởi tạp OpenGL tiến hành hệ thống cấp phát cửa sổ cho việc biểu diễn Khối lệnh OPENGL Phía Clie nt OpenGL DLL Sever DLL Win DLL Phía Seve r Video Driver Hình 1.1 Mơ hình hoạt động OpenGL Thao tác OpenGL 5|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mơ Phỏng Chuyển Động Robot Đá Bóng Sơ đồ khối Hình 1.2 tóm tắt OpenGL xử lý liệu Các lệnh vào phía trái sơ đồ qua “đường ống xử lí” Một số lệnh xác định đối tượng hình học vẽ số khác kiểm soát cách quản lý đối tượng qua giai đoạn xử lý khác Danh sách Khối lệnh Bước ước lượng Thao tác Vertex Primitive Rasteri zation Thao tác fragme Bộ đệm khung Bộ nhớ texture Các thao tác pixel Hình 1.2 Sơ đồ sữ lý liệu OpenGL 1.3 Cài đặt thư viện môi trường MS Visual Studio 2013 1.3.1 Download thư viện OpenGL cài đặt - Download đây: http://www.mediafire.com/file/4mxl8e14pa6e8il/glut-3.7.6-bin.rar - Sau download xong bạn giải nén có file (File header, file lib file dll) - Nếu bạn cài VS 2013 môi trường Windows x64 (viết ứng dụng 32 bit 64 bit), copy sau: Copy file header vào thư mục: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include Copy file lib vào thư mục: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib Copy file dll vào thư mục: - C:\Windows\System32 Với phiên Windows 32bit (viết ứng dụng 32 bit) o Sao chép tập tin glut.h glut.def vào thư mục C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl 6|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng o Sao chép tập tin glut32.lib vào thư mục C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib o Sao chép tập tin glut32.dll vào thư mục C:\windows\system32\ 1.3.2 Kiểm tra hàm chương trình - Khai báo hàm sau: + Hàm Init để khởi tạo lựa chọn ban đầu cho môi trường đồ họa : xóa hình, thiết lập chế độ ánh sáng, chiều sâu + Hàm Reshape sử dụng để thiết lập chế độ view cho môi trường đồ họa + Hàm RenderScene dùng để viết đối tượng đồ họa 10 11 12 13 14 15 16 17 18 19 20 21 22 23 void Init() { glClearColor(0.0, 0.0, 0.0, 0.0); } void ReShape(int width, int height) { glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-10.0, 10.0, -10.0, 10.0, 10.0, -10.0); glMatrixMode(GL_MODELVIEW); } void RenderScene() { glutWireTeapot(2.0); glFlush(); } - Sau xây dựng hàm Main void main() { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 7|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mô Phỏng Chuyển Động Robot Đá Bóng glutInitWindowSize(500, 500); glutInitWindowPosition(100, 100); 10 11 glutCreateWindow("Do Hoa"); 12 13 Init(); 14 15 glutReshapeFunc(ReShape); 16 17 glutDisplayFunc(RenderScene); 18 19 glutMainLoop(); 20 21 return; 22 } 23 24 - glutCreateWindow("Do Hoa"); Hình 1.3 Chương trình vẽ ấm trà OpenGL 8|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mơ Phỏng Chuyển Động Robot Đá Bóng CHƯƠNG TÌM HIỂU THƯ VIỆN OPENGL 2.1 Cấu trúc lệnh OpenGL 2.2 Một số thuật tốn vẽ hình học 2D 2.2.1 Vẽ điểm, đường, đa giác (POINT, LINES, POLYGON) - OpenGL khơng có sẵn hàm để xây dựng đối tượng hình học phức tạp, người dùng phải tự xây dựng chúng từ đối tượng hình học mà OpenGL hỗ trợ: điểm, đoạn thẳng, đa giác Khai báo điểm, dùng hàm glVertexXY với X số chiều (2,3,4) Hình 1.4 Các dạng hàm glVertex - Ví dụ ta định điểm khơng gian 2d 3d: glVertex2s(2,3); glVertex3d(0.0,0.0,1.0 Các đỉnh liệt kê hai hàm: glBegin(tham số) /* xác định tọa độ màu sắc điểm hình*/ glEnd(); Tham số đưa vào cho hàm glBegin(thamso) giúp OpenGL định vẽ từ Vertex khai báo bên ví dụ: glBegin(GL_POLYGON); glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0); glEnd(); 2.2.2 Hàm vẽ hình học phức tạp - Tên hàm GLUT có tiền tố glut 9|Page Báo cáo tập lớn Kỹ Thuật Đồ Họa - Mơ Phỏng Chuyển Động Robot Đá Bóng GLUT hỗ trợ sẵn số hàm để vẽ đối tượng hình học phức tạp hơn: - Vẽ hình lập phương + Vẽ khung: glutWireCube (Gldouble size); + Vẽ đặc: glutSolidCube (Gldouble size); - Vẽ hình cầu: glutWireSphere (GLdouble radius, GLdouble slices, GLdouble stacks); glutSolidSphere (GLdouble radius, GLdouble slices, GLdouble stacks); Trong đó: Radius: bán kính hình cầu; Slices: Số đường tựa vĩ tuyến hình cầu; Stacks: Số đường tựa kinh tuyến hình cầu - Vẽ hình đế hoa glutWireTorus (GLdouble innerRadius, GLdoubleouterRadius, GLdouble nsides, GLdouble rings); glutSolidTorus (GLdouble innerRadius, GLdouble outerRadius, GLdouble nsides, GLdouble rings); - Vẽ hình ấm pha trà glutWireTeapot(GLdouble size); glutSolidTeapot(GLdouble size); - Vẽ hình nón glutWireCone (GLdouble Radius, GLdouble height, GLint slices, GLint stacks); glutSolidCone (GLdouble Radius, GLdouble height, GLint slices, Glint stacks); - Vẽ đối tượng Quadric: đối tượng đối xứng trục quay quanh trục, ví dụ hình cầu, hình trụ, chóp cầu + Bước 1: Khai báo đối tượng GLUquadric obj; + Bước 2: Tạo đối tượng 66 obj= gluNewQuadric(); + Bước 3: Vẽ đối tượng 10 | P a g e