1. Trang chủ
  2. » Tất cả

lap trinh do hoa 3d voi opengl

67 12 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 67
Dung lượng 7,08 MB

Nội dung

OpenGL – Open Graphic Library  OpenGL là bộ thư viện đồ họa có khoảng 150 hàm giúp xây dựng các đối tượng và giao tác cần thiết trong các ứng dụng tương tác 3D.  Tuy nhiên OpenGL không hỗ trợ + Các hàm nhập xuất hay thao tác trên window, + 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).

BÀI LẬP TRÌNH ĐỒ HỌA 3D VỚI OPENGL Ths Nguyễn Xn Hồng Sơ đồ quy trình mơ LẬP TRÌNH ĐỒ HỌA 3D VỚI OPENGL Bắt đầu Kích thước, hình ảnh, sơ đồ,… A Add-in Xây dựng mơ hình thiết lập phương trình giải phương trình Visual C++ Connect OpenGL Thư viện đồ DirectX họa Matlab Maple Solve Robot Simulator Programming Load SolidWorks Inventor Export STL files Import HUST Vẽ mô hình 3D Dimensions Data files (q, v, a) AutoCAD Robot Simulator Software 9/20/2015 MỤC TIÊU Có hiểu biết thư viện đồ họa OpenGL Khởi tạo ứng dụng MFC sử dụng OpenGL Nắm số khái niệm OpenGL HUST 9/20/2015 NỘI DUNG HUST Giới thiệu OpenGL Các chương trình OpenGL Các khái niệm OpenGL 9/20/2015 NỘI DUNG HUST Giới thiệu OpenGL Các chương trình OpenGL Các khái niệm OpenGL 9/20/2015 Lập trình OpenGL  OpenGL – Open Graphic Library  OpenGL thư viện đồ họa có khoảng 150 hàm giúp xây dựng đối tượng giao tác cần thiết ứng dụng tương tác 3D  Tuy nhiên OpenGL không hỗ trợ + Các hàm nhập xuất hay thao tác window, + Các hàm cấp cao để xây dựng mơ hình đối tượng, thay vào đó, người dùng phải tự xây dựng từ thành phần hình học ( điểm, đoạn thẳng, đa giác) HUST 9/20/2015 Thư viện GLUT  GLUT (OpenGL Utility Toolkit) thư viện nhằm giúp nhanh chóng tạo cửa sổ quản lý kiện từ bàn phím, chuột mà khơng phải quan tâm q nhiều tới hàm trực tiếp OpenGL GLUT gọi hàm thay cho  GLUT thay cho OpenGL mà thành phần bổ sung để dễ dàng việc lập trình OpenGL Việc thiết lập GLUT để lập trình OpenGL hồn tồn dễ dàng HUST 9/20/2015 NỘI DUNG HUST Giới thiệu OpenGL Các chương trình OpenGL Các khái niệm OpenGL 9/20/2015 Các chương trình OpenGL Chương trình OpenGL Chương trình OpenGL MFC HUST 9/20/2015 Chương trình OpenGL Các bước thực Chạy chương trình Các thành phần chương trình HUST 9/20/2015 10 NỘI DUNG HUST Giới thiệu OpenGL Các chương trình OpenGL Các khái niệm OpenGL 9/20/2015 53 OpenGL: Các khái niệm Các đối tượng hình học • Điểm • Đoạn thẳng • Đa giác Quan sát (Viewing) • • • • • HUST Màu sắc Bóng màu (shading) Phép biến đổi quan sát (Viewing Transformation) Phép chiếu 28 Ánh sáng 9/20/2015 54 Các đối tượng hình học • • • • HUST OpenGL định nghĩa đối tượng hình học là: điểm, đoạn thẳng đa giác Mỗi đối tượng hình học mơ tả loại đối tượng tập hợp đỉnh Lệnh glVertex*() dùng để định đỉnh Dấu * sử dụng có số biến thể lệnh glVertex () Ví dụ glVertex3fv(): số tham số cần truyền vào lệnh, f tham số kiểu float, v cho biết tham số thuộc loại véc-tơ (mảng) 9/20/2015 55 Vẽ điểm OpenGL • • Để vẽ điểm, truyền tham số GL_POINTS cho lệnh glBegin() Kết thúc vẽ glEnd() Muốn thay đổi kích thước điểm ảnh, dùng glPointSize() Ví dụ glPointSize(10); glBegin(GL_POINTS); glVertex2f(0.0, 0.0); glVertex2f(0.0, 3.0); glVertex2f(2.0, 3.0); glVertex2f(4.0, 1.5); glVertex2f(2.0, 0.0); glEnd(); HUST 9/20/2015 56 Vẽ đoạn thẳng OpenGL • Để vẽ đoạn thẳng dùng tham số sau cho lệnh glBegin()  – GL_LINES: Vẽ loạt đoạn thẳng tách biệt HUST 9/20/2015 57 Vẽ đoạn thẳng OpenGL…  – GL_LINE_STRIP: Vẽ đoạn thẳng từ đỉnh cuối Đoạn thẳng giao tùy tiện HUST 9/20/2015 58 Vẽ đoạn thẳng OpenGL…  – GL_LINE_LOOP: Tương tự GL_LINE_STRIP, ngoại trừ cạnh cuối tự động thêm vào để đóng đa giác HUST 9/20/2015 59 Vẽ đa giác OpenGL • Có số lệnh để vẽ đa giác:  đỉnh (hình tam giác, GL_TRIANGLES)  đỉnh (tứ giác, GL_QUADS)  Đa giác tổng qt (GL_POLYGON) • Ví dụ HUST 9/20/2015 60 Màu sắc OpenGL • • • • Khác với vẽ giấy, máy tính ta cần xóa đặt màu trước vẽ lệnh vẽ đối tượng Trong OpenGL, lệnh xóa đặt màu glClearColor () Tham số lệnh màu thành phần: đỏ, xanh cây, xanh dương độ mờ (Red,Green,Blue, Alpha blending – RGBA) Giá trị màu thay đổi từ 0.0 đến 1.0 Để thiết lập màu sắc, sử dụng lệnh glColor3f () Nó có ba thông số nằm 0.0 1.0 Giá trị số màu glColor3f(0.0, 0.0, 0.0); //black glColor3f(1.0, 0.0, 0.0); //red glColor3f(0.0, 1.0, 0.0); //green glColor3f(0.0, 1.0, 1.0); //cyan HUST 9/20/2015 glColor3f(0.0, 0.0, 1.0); //blue glColor3f(1.0, 1.0, 0.0); //yellow glColor3f(1.0, 0.0, 1.0); //magenta glColor3f(1.0, 1.0, 1.0); //white 61 Bóng màu (shading) OpenGL • • HUST Trong OpenGL đặt màu cho đỉnh riêng rẽ đối tượng OpenGL tự động nội suy để màu vùng trung gian Phép đổ bóng gọi Đổ bóng Gouraud 9/20/2015 62 Phép biến đổi quan sát (Viewing Transformation) • • • • Để thay đổi hình ảnh đối tượng, cần thay đổi vị trí đối tượng người quan sát Trong đồ họa máy tính, camera đặc trưng cho người quan sát Để reset lại góc quan sát camera, dùng lệnh glLoadIdentity() (Đặt ma trận chuyển đổi ma trận đơn vị) Dùng lệnh gluLookAt() để đặt vị trí camera (người quan sát) hướng nhìn Ví dụ: lệnh gluLookAt( 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) ; đặt camera điểm (0.0, 0.0, 5.0), nhìn điểm (0.0, 0.0, 0.0) đặt véc-tơ hướng lên camera (0,1,0) (tức nằm ngang) HUST 9/20/2015 63 Phép chiếu (projection) • Khi vẽ OpenGL ln sử dụng kích thước thật đối tượng Thể đối tượng tính tốn tùy thuộc vào vị trí camera phương pháp chiếu hình • Có hai phương pháp chiếu hình chính: trục đo (orthographic) phối cảnh (perspective) • Để đặt phương pháp chiếu trục đo, sử dụng lệnh glOrtho(), với phối cảnh dùng lệnh glFrustum() HUST 9/20/2015 64 Ánh sáng OpenGL • • • • • HUST Hiệu ứng ánh sáng quan trọng đồ họa 3D khơng có ánh sáng đối tượng 3D trông đối tượng 2D OpenGL cung cấp hai loại nguồn sáng: hướng vị trí Một nguồn sáng hướng coi nằm cách đối tượng khoảng cách vô hạn (như AS mặt trời) Vì vậy, tia ánh sáng coi song song tiếp cận đối tượng Ngược lại, nguồn sáng vị trí, gần cảnh có tia sáng khơng song song (như AS đèn) Lệnh glLightfv() sử dụng để đặt vị trí ánh sáng, cho AS hướng vị trí Cũng dùng định nguồn sáng có màu thuộc loại nền, khuếch tán, phản chiếu, hay phát xạ 9/20/2015 65 Ánh sáng OpenGL… • • • Trong OpenGL tạo đồng thời tối đa tám nguồn ánh sáng có tên GL_LIGHT0, GL_LIGHT1,… • Để tạo nguồn ánh sáng, phải chọn tên, vị trí nguồn sáng thơng số màu sắc chất lượng Ví dụ GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0}; GLfloat light_position[] = {1.0, 1.0, 1.0, 0.0}; glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); HUST 9/20/2015 66 HUST 9/20/2015 67 ... Giới thiệu OpenGL Các chương trình OpenGL Các khái niệm OpenGL 9/20/2015 NỘI DUNG HUST Giới thiệu OpenGL Các chương trình OpenGL Các khái niệm OpenGL 9/20/2015 Lập trình OpenGL  OpenGL – Open... glBegin(GL_QUADS); glColor3d(1, 0, 0); glVertex3d(-2, 2, 0); glColor3d(0, 1, 0); glVertex3d(2, 2, 0); glColor3d(0, 0, 1); glVertex3d(2, -2, 0); glColor3d(0, 1, 1); glVertex3d(-2, -2, 0); glEnd();... gian (timer) int timerElapse;// Khoảng thời gian lần vẽ lại }; HUST 9/20/2015 35 Tệp OpenGLInit.cpp // OpenGLInit.cpp #include "stdafx.h" #include "OpenGLInit.h" COpenGLInit::COpenGLInit() { hDC

Ngày đăng: 02/03/2023, 14:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w