nghiên cứu opengl và xây dựng ứng dụng mô phỏng

67 1.2K 7
nghiên cứu opengl và xây dựng ứng dụng mô phỏng

Đ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

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài : “NGHIÊN CỨU OPENGL VÀ XÂY DỰNG ỨNG DỤNG MÔ PHỎNG” Giảng viên hướng dẫn : Ths. TRỊNH THỊ VÂN ANH Sinh viên thực hiện : ĐỖ DUY Lớp : D07CNPM1 Khóa : 2007 – 2012 Hệ : CHÍNH QUY Hà Nội, tháng 12 /2011 GVHD : Ths. Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài : “NGHIÊN CỨU OPENGL VÀ XÂY DỰNG ỨNG DỤNG MÔ PHỎNG” Giảng viên hướng dẫn : Ths. TRỊNH THỊ VÂN ANH Sinh viên thực hiện : ĐỖ DUY Lớp : D07CNPM1 Khóa : 2007 – 2012 Hệ : CHÍNH QUY Hà Nội, tháng 12 /2011 GVHD : Ths. Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… Điểm: …………………….………………… …(bằng chữ: … ………………… ….) Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp? …………, ngày tháng năm 2011 GIẢNG VIÊN HƯỚNG DẪN (ký, họ tên) GVHD : Ths. Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… Điểm: …………………….……….………… (bằng chữ: … …………………….….) Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp? …………, ngày tháng năm 2011 GIẢNG VIÊN PHẢN BIỆN (ký, họ tên) GVHD : Ths. Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 MỤC LỤC DANH MỤC BẢNG DANH MỤC HÌNH GVHD : Ths. Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 MỞ ĐẦU Cùng với sự phát triển của công nghệ thông tin, đồ họa máy tính cũng có những bước tiến nhất định, và ngày càng được sử dụng rộng rãi trong các lĩnh vực của cuộc sống như giải trí, quảng cáo, nghệ thuật… Mỗi lĩnh vực khi có sự góp mặt của đồ họa đều trở lên sinh động và lôi cuốn hơn. Chính vì vậy việc nghiên cứu phát triển đồ họa ngày càng được quan tâm và phát triển. Do đó để hiểu được phần nào về thế giới đồ họa đồ án này sẽ trình bày những phần cơ bản của thư viện đồ họa OpenGL, một thư viện đồ họa mạnh mẽ dùng trong nhiều ứng dụng giải trí yêu cầu độ phức tạp cao. Tuy nhiên, do kiến thức chuyên môn còn chưa đầy đủ nên đồ án sẽ có nhiều thiếu sót và mong được sự đóng góp của thầy cô, bạn bè để đồ án được hoàn thiện hơn, Lời cuối, em xin bày tỏ lời cảm ơn tới tất cả thầy, cô đã chỉ dạy và bạn bè đã giúp đỡ trong thời gian theo học tại trường. Đặc biệt em xin chân thành cảm ơn cô giáo Ths. Trịnh Thị Vân Anh đã nhiệt tình hướng dẫn để em hoàn thành đồ án này. Sinh viên Đỗ Duy. GVHD : Ths. Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 GVHD : Ths. Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 Phần 1 : Cơ sở lý thuyết – Thư viện đồ họa OPENGL Trang 8 PHẦN 1 : CƠ SỞ LÝ THUYẾT – THƯ VIỆN ĐỒ HỌA OPENGL CHƯƠNG 1: KHÁI NIỆM CHUNG 1.1.Giới thiệu OpenGL OpenGL (Open Graphics Library) : một tiêu chuẩn kỹ thuật đồ họa có mục đích tạo ra một giao diện lập trình ứng dụng (API) đồ họa ba chiều. OpenGL cũng có thế dùng trong các ứng dụng đồ họa hai chiều. Giao diện lập trình này chứa khoảng 250 hàm để vẽ các cảnh phức tạp từ những hàm đơn giản. Nó được dùng rộng rãi trong các trò chơi điện tử (Half – Life, Warcraft 3 ). Ngoài ra nó còn dùng trong các ứng dụng CAD, thực tế ảo, mô phỏng khoa học, mô phỏng thông tin, phát triển trò chơi. OpenGL còn có một đối thủ cạnh trạn là DirectX của Microsoft. OpenGL được thiết kế nhằm thỏa mãn mục đích chính sau: • Che dấu sự tuơng tác phức tạp với các bộ máy xúc tiến ba chiều bằng cách đưa ra một giao diện lập trình thống nhất. • Che dấu các sự khác biệt giữa các phần cứng ba chiều bằng cách bắt buộc các phần cứng tương thích OpenGL phải hỗ trợ tất cả các chức năng của giao diện OpenGL. Nếu cần, các chức năng chưa được hỗ trợ đầy đủ bởi phần cứng có thể được hỗ trợ bằng phần mềm. Các thao tác OpenGL cơ bản là nhận các nguyên hàm hình học như điểm, đường thẳng và đa giác rồi chuyển thành các điểm đồ họa (pixel) trên màn hình. Điều này được thực hiện bởi luồng ống dẫn đồ họa (graphics pipeline). Nó còn được gọi là bộ máy trạng thái OpenGL. Đa số các lệnh OpenGL được dùng để tạo ra các hình học cơ bản đã gặp ở trên hoặc là qui định cách chuyển đổi hình học trong bộ máy trạng thái OpenGL. Trước khi OpenGL 2.0 ra đời, mỗi giai đoạn trong luồng ống dẫn đồ họa thi hành một nhiệm vụ nhất định, khó có thể thay đổi được. Từ phiên bản OpenGL 2.0, một số giai đoạn đó có thể sửa đổi bằng cách dùng ngôn ngữ chuyển màu GLSL. Những thứ OpenGL không hỗ trợ : • Bản thân OpenGL không có sẵn các hàm nhập xuất hay thao tác trên window. • OpenGL không có sẵn các hàm cấp cao để xây dựng các mô hình đối tượng, thay vào đó, người dùng phải tự xây dựng từ các thành phần hình học cơ bản ( điểm, đoạn thẳng, đa giác). Rất may là một số thư viện cung cấp sẵn một số hàm cấp cao được xây dựng nên từ OpenGL. GLUT (OpenGL Utility Toolkit) là một trong số đó và được sử dụng rộng rãi. Nó có nhiều hàm hỗ trợ như quản lý window, display callback, nhập xuất (bàn phím, chuột…), vẽ một đối tượng 3D phức tạp (mặt cầu, khối hộp…). Trong tài liệu này, chúng ta sẽ sử dụng chủ yếu là thư viện GLUT. Những thứ OpenGL hỗ trợ là các hàm đồ họa : GVHD : Ths. Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 Phần 1 : Cơ sở lý thuyết – Thư viện đồ họa OPENGL Trang 9 • Xây dựng các đối tượng phức tạp từ các thành phần hình học cơ bản (điểm, đoạn, đa giác, ảnh, bitmap). • Sắp xếp đối tượng trong 3D và chọn điểm thuận lợi để quan sát. • Tính toán màu sắc của các đối tượng (màu sắc của đối tượng được quy định bởi điều kiện chiếu sáng, texture của đối tượng, mô hình được xây dựng hoặc là kết hợp của cả ba yếu tố đó). • Biến đổi những mô tả toán học của đối tượng và thông tin màu sắc thành các pixel trên màn hình (quá trình này được gọi là resterization). 1.2.Hệ tọa độ 2D Định nghĩa bởi hai trục tọa độ Ox, Oy (hệ tọa độ phẳng). Một vertex trên hệ tọa độ có dạng P(Px, Py) và một hình phẳng thì được xác định bằng tập các vertex nối với nhau. Hình 1. Hệ tọa độ 2D  Các phép biến hình trong hệ tọa độ 2D : • Phép tịnh tiến (tịnh tiến một hình theo trục Ox hoặc Oy bằng cách cộng trừ các vertex với một giá trị nào đó) • Phép co giãn : Để co giãn một hình ta sẽ nhân các vertex của nó với một hệ số co giãn nào đó • Phép quay : Thực hiện quay hình quanh gốc tọa độ một góc alpha nào đó 1.3. Hệ tọa độ 3D và phương pháp thể hiện hình 3D Được định nghĩa bởi ba trục tọa độ Ox, Oy, Oz. Đối với hệ tọa độ 3D đòi hỏi nhiều tính toán phức tạp hơn khi thực hiện các thao tác với các đối tượng. Một vertex GVHD : Ths. Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 Phần 1 : Cơ sở lý thuyết – Thư viện đồ họa OPENGL Trang 10 trong hệ tọa độ 3D có dạng P(Px, Py, Pz). Để tạo một đối tượng 3D như mong muốn chúng ta cần phải xác định các vertex một cách chính xác. Hình 2. Hệ tọa độ 3D  Các phép biến hình trong hệ tọa độ 3D • Phép tịnh tiến : Tịnh tiến đối tượng theo trục Ox, Oy, hay Oz. • Phép co giãn : Biến đổi tỉ lệ đối tượng với một hệ số tỉ lệ tương ứng với ba trục Ox, Oy, Oz. • Phép quay : Quay đối tượng quanh một trục tọa độ theo một góc alpha.  Các phương pháp thể hiện hình 3D • Phương pháp 1 : Phép chiếu song song Với phép chiếu song song, một đối tượng 3D được thể hiện lên màn hình bằng cách bỏ qua các tọa độ z. Kết quả là một hình 2D đơn giản. Nếu có một khối vuông thì ta chỉ thu được một hình vuông. • Phương pháp 2 : Phép chiếu phối cảnh Là hình chiếu được xây dựng bằng phép chiếu xuyên tâm nó tạo cho người xem có cảm giác gần giống như nhìn trong thực tế. CHƯƠNG 2 : VẼ HÌNH 2.1. Cấu trúc lệnh OpenGL và các kiểu dữ liệu trong OpenGL 2.1.1.Cấu trúc lệnh OpenGL GVHD : Ths. Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 [...]... OPENGL Trang 36 số width và height là chiều rộng và cao của khung nhìn Ở chế độ mặc định giá trị tham số của khung nhìn là (0, 0, winWidth, winHeight) trong đó winWidth và winHeight là kích thước của cửa sổ hiển thị khung nhìn CHƯƠNG 4 : ÁNH SÁNG 4.1 Các loại nguồn sáng Ánh sáng cung cấp màu sắc và tạo ánh sáng cho đối tượng 3D làm hình ảnh nhận được trở lên thực hơn OpenGL có 4 loại nguồn sáng : môi... Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 Phần 1 : Cơ sở lý thuyết – Thư viện đồ họa OPENGL Trang 35 lớn của ảnh Phép chiếu trực giao thường được dùng nhiều trong các ứng dụng CAD/CAM như các trình ứng dụng tạo các bản vẽ kỹ thuật lĩnh vực thiết kế Để thực hiện phép chiếu trực giao chúng ta có thể sử dụng hàm : glOrtho(Gldouble left, Gldouble right, Gldouble bottom, Gldouble top, Gldouble near,... Glbitfield dạng vector usv GLushort dạng vector Bảng 2 : Các hậu tố OpenGL 2.1.2 Các kiểu dữ liệu OpenGL GVHD : Ths Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 Phần 1 : Cơ sở lý thuyết – Thư viện đồ họa OPENGL Trang 12 OpenGL định nghĩa kiểu dữ liệu để dễ dàng thao tác trong chương trình: Kiểu dữ liệu trong OpenGL Kiểu dữ liệu tương ứng Ý nghĩa trong C GLbyte Signed char Số nguyên 8 bit GLshort Short... 1 : Cơ sở lý thuyết – Thư viện đồ họa OPENGL Trang 33 Để lựa chọn ma trân cần thao tác Để sử dụng ma trận vào việc biến hình, trước tiên cần khởi tạo nó bằng ma trận đơn vị Chúng ta cần gọi hàm : glLoaddentity(); 3.2.1 Một số hàm biến đổi OpenGL hỗ trợ sẵn các hàm biết đổi cơ bản như sau:  Tịnh tiến : glTranslate{fd}(TYPEx, TYPEy, TYPEz); Ý nghĩa : tịnh tiến mô hình theo vector tịnh tiến (x,y,z) ... không dấu 32 bit GLvoid Void Hàm không đối số hoặc không trả về giá trị HGLRC HGDIOBJ Handle của đối tượng GDI Bảng 3 : Các kiểu dữ liệu trong OpenGL Ví dụ khai báo biến trong OpenGL : GLint x; GLfloat y; 2.2 Chương trình OpenGL tối thiểu Đoạn mã sau sử dụng các hàm OpenGL để vẽ một tứ giác màu đỏ //Khai báo thư viện đồ họa glut.h #include void ve_hinh_tu_giac(){ //Thiết lập màu nền là màu trắng... tập hợp các vertex Một đa giác có ít nhất 3 cạnh (tương ứng ít nhất 3 vertex phân biệt) Đa giác đơn giản nhất là tam giác OpenGL có thế vẽ đa giác như các điểm, các đường ngoài, hay đối tượng đặc biệt Một đa giác có 2 mặt trước và sau do đó có thế vẽ theo hai cách riêng và có thể quay một đa giác để xem mặt bên kia Hàm glPolygonMode() được sử dụng trong vẽ đa giác: glPolygonMode(GL_FRONT_AND_BACK,... Ths Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 Phần 1 : Cơ sở lý thuyết – Thư viện đồ họa OPENGL Trang 18 Hình 8 Vẽ đường với glLineWidth() Vẽ đường chấm bằng cách sử dụng lệnh glLineStipple() Chúng ta cần định nghĩa màu chấm bằng cách tạo ra một giá trị nhị phân, với 1 tương ứng với chấm, 0 tương ứng với 0 chấm Để vẽ đường chấm chúng ta cần kích hoạt nó bằng lệnh glEnable(GL_LINE_STIPPLE); //glLineStipple()...Phần 1 : Cơ sở lý thuyết – Thư viện đồ họa OPENGL Trang 11 OpenGL sử dụng tiền tố gl và tiếp theo đó là những từ được viết hoa ở chữ cái đầu để tạo nên tên của một lệnh Ví dụ : glColor2f() - Trong đó gl – Tiền tố Color – hàm cơ bản chỉ màu sắc 2 – Số lượng (hai chiều)... không gian ba chiều (3D) Quá trình chuyển đổi tọa độ từ không gian 3D thành các điểm (pixel) xuất hiện trên màn hình được mô tả như sau: Bước 1 : Áp dụng các phép biến đổi được biểu diễn bởi các phép nhân ma trận bao gồm phép biến đổi mô hình (Modeling), phép biến đổi điểm nhìn (Viewing) và phép chiếu (Projection) Nhìn chung ta kết hợp một số phép biến đổi khi đó đối tượng cần vẽ trong không gian 3D được... Hình 4 Các đối tượng hình học cơ bản Dựa vào các hàm vẽ hình cơ bản mà OpenGL cung cấp chúng ta có thể vẽ được hầu hết các hình phức tạp Để vẽ được hình chúng ta phải sử dụng các điểm vẽ, để chỉ định 1 điểm ta dùng lệnh sau: glVertex{234}{sifd}[v](tọa độ điểm); GVHD : Ths Trịnh Thị Vân Anh SVTH : Đỗ Duy – Lớp : D07CNPM1 Phần 1 : Cơ sở lý thuyết – Thư viện đồ họa OPENGL Trang 15 Trong đó : -{234} : chỉ . CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài : “NGHIÊN CỨU OPENGL VÀ XÂY DỰNG ỨNG DỤNG MÔ PHỎNG” Giảng viên hướng dẫn : Ths. TRỊNH THỊ VÂN ANH Sinh viên thực hiện :. CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài : “NGHIÊN CỨU OPENGL VÀ XÂY DỰNG ỨNG DỤNG MÔ PHỎNG” Giảng viên hướng dẫn : Ths. TRỊNH THỊ VÂN ANH Sinh viên thực hiện :. nó còn dùng trong các ứng dụng CAD, thực tế ảo, mô phỏng khoa học, mô phỏng thông tin, phát triển trò chơi. OpenGL còn có một đối thủ cạnh trạn là DirectX của Microsoft. OpenGL được thiết kế nhằm

Ngày đăng: 25/11/2014, 09:58

Mục lục

  • PHẦN 1 : CƠ SỞ LÝ THUYẾT – THƯ VIỆN ĐỒ HỌA OPENGL

  • 1.2.Hệ tọa độ 2D

  • 1.3. Hệ tọa độ 3D và phương pháp thể hiện hình 3D

  • CHƯƠNG 2 : VẼ HÌNH

    • 2.1. Cấu trúc lệnh OpenGL và các kiểu dữ liệu trong OpenGL

    • 2.2. Chương trình OpenGL tối thiểu

    • 2.3.3. Vẽ đa giác lồi

    • 2.3.7. Vẽ đường gấp khúc không khép kín

    • 2.3.8. Vẽ đường gấp khúc khép kín

    • 2.3.9. Vẽ dải tam giác

    • 2.3.10. Vẽ các tam giác liên kết theo hình quạt

    • 2.3.11. Vẽ 1 dải tứ giác liên kết với nhau

    • 2.4. Màu sắc

      • 2.4.1. Chế độ màu RGBA

      • 2.4.2. Thiết lập mô hình shading

      • CHƯƠNG 3 : CÁC PHÉP BIẾN ĐỔI 3D

        • 3.1. Quá trình chuyển đổi tọa từ không gian 3D đến pixel trên màn hình

        • 3.2. Thao tác trên ModelView

          • 3.2.1. Một số hàm biến đổi

          • 3.3. Thao tác trên Projection

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

            • 3.3.2. Phép chiếu trực giao

            • 3.4. Phép biến đổi cổng nhìn (viewport transformation)

            • CHƯƠNG 4 : ÁNH SÁNG

              • 4.1. Các loại nguồn sáng

              • 4.2. Thiết lập các mảng giá trị ánh sáng

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

Tài liệu liên quan