84-511 3842771 Website: http://dut.udn.vn/khoacntt, E-mail: cntt@dut.udn.vn BÁO CÁO MÔN HỌC ĐỒ HOẠ MÁY TÍNH ĐỀ TÀI:XÂY DỰNG CHƯƠNG TRÌNH HIỂN THỊ ĐỐI TƯỢNG ĐỒ HỌA, TỰ XÂY DỰNG CÁC HÀM SỬ
CƠ SỞ LÝ THUYẾT
1.1.1 Tổng quan về Model Transformation
• Model transformation trong đồ họa 2D và 3D là quá trình thay đổi vị trí, quay, tỉ lệ hoặc biến dạng của các đối tượng trong không gian 2 chiều hoặc 3 chiều thông qua sử dụng vector biến đổi vật thể Vector biến đổi vật thể là một vectơ được sử dụng để áp dụng các phép biến đổi trên vật thể, bao gồm phép tịnh tiến (translation), phép xoay (rotation), phép co giãn (scaling), phép cắt tỉa (shearing) và các phép biến dạng (deformation)
• Các phép biến đổi này thường được áp dụng trên đối tượng 2D hoặc
3D để thay đổi vị trí, hướng, kích thước và hình dạng của đối tượng đó Các phép biến đổi này cũng có thể được kết hợp với nhau để tạo ra các phép biến đổi phức tạp hơn, như xoay và dịch chuyển đồng thời
Hình 1: Tổng quan về Model Transformation
1.1.2 Các bước chính trong quá trình hiển thị đồ họa
• Mỗi đối tượng được mô tả trong một hệ tọa độ riêng được gọi là hệ tọa độ đối tượng/ Hệ tọa độ cục bộ
• Thực hiện biến đổi từ hệ tọa độ đối tượng sang hệ tọa độ thế giới thực
• Khi biểu diển đối tượng ta có thể chọn gốc tọa độ và đơn vị đo lượng sao cho việc biểu diễn là thuận lợi nhất
• Thường chuẩn hóa kích thước của đối tượng khi biểu diễn
Hình 2: Các bước chính trong quá trình hiền thị đồ họa
Ví dụ: Một khối lập phương được xác định bởi 8 đỉnh: (1, 1, 1), (-1, -1, -1),
(1, 1, -1) …Kết quả ta được khối lập phương 2x2x2, với tâm tại (0, 0, 0)
Hình 3: Các đỉnh của khối lập phương được xác định trong World Space
Geometry (hình học) thường được sử dụng nhiều lần trong cùng một kết xuất
Các phép biến đổi mô hình được biểu diễn bằng một ma trận mô hình, áp dụng cho tập hợp các đỉnh hình học chung để chuyển đổi các đỉnh này từ không gian mô hình sang không gian thế giới.
Hình 4: Các khối hình chữ nhật trong World Space
Ma trận mô hình M được tạo thành từ phép tịnh tiến (dịch chuyển) T, phép quay R và phép tỉ lệ S của đối tượng Sau đó nhân vị trí của đỉnh với ma trận mô hình M để chuyển đổi từ không gian cục bộ (local space) của đối tượng sang không gian thế giới (world space).
Hình 5: Biểu diễn các đối tượng trong Camera Space
PHÁT BIỂU BÀI TOÁN
Đề tài yêu cầu xây dựng chương trình hiển thị đối tượng đồ họa, tự xây dựng các hàm sử dụng ma trận biến đổi vật thể (Model transformation) bằng cách:
• Vẽ một khối lập phương có cạnh a (với giá trị a nhập vào)
• Xây dựng các hàm biến đổi affine: tịnh tiến, đối xứng, tỉ lệ In các ma trận biến đổi tương ứng (myTranslate(); mySacle(), )
• Quay đối tượng một góc a (tự chọn) quanh một trục AB có A(xa, ya), B(xb, yb) In các ma trận biến đổi tương ứng (myRotate(), )
• Triển khai chạy chương trình, in hình ảnh kết quả, đánh giá, nhận xét
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
PHÁT BIỂU BÀI TOÁN
• Đề tài yêu cầu sử dụng các nguyên lý biến đổi bằng ma trận và thư viện hỗ trợ OpenGL để xây dựng chương trình thực hiện các phép biến đổi vật thể (tịnh tiến, tỉ lệ, quay, đối xứng)
2.1.2 Nghiên cứu và tìm hiểu thư viện mã nguồn mở OpenGL
• OpenGL (Open Graphics Library) là một tiêu chuẩn kỹ thuật đồ họa có mục đích định ra một giao diện lập trình ứng dụng (API) đồ họa ba chiều OpenGL cũng có thể được dùng trong các ứng dụng đồ họa 2 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ử Ngoài ra nó còn được dùng ứng dụng CAD, thực tại ảo, mô phỏng khoa học, mô phỏng thông tin, phát triển trò chơi
• OpenGL còn một đối thủ cạnh tranh là DirectX của Microsoft
• Không gian trong OpenGL được miêu tả qua hình học xạ ảnh Một điểm trong không gian này có tất cả 4 tọa độ Cách thể hiện các điểm trong không gian bằng 4 tọa độ cho phép xử lý các điểm vô tận một cách tổng quát Vì vậy mã nguồn các ứng dụng đã được đơn giản hóa đi nhiều
• OpenGL được thiết kế nhằm thoả mãn mục đích chính sau:
▪ Che dấu sự tương tác phức tạp với các bộ máy xúc tiến 3 chiều bằng cách đưa ra một giao diện lập trình thống nhất
Giao diện OpenGL giúp che giấu sự khác biệt giữa các phần cứng 3D bằng cách yêu cầu các phần cứng tương thích với OpenGL phải hỗ trợ toàn bộ các chức năng của giao diện.
12 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 gồm có nhận các nguyên hàm hình học như điểm, đường thẳng và đa giác sau đó chuyển đổi chúng thành các điểm đồ họa (pixel) hiển thị trên màn hình.
2.1.2.4 Một số hạn chế trong OpenGL
• 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
2.1.2.5 Các trò chơi được viết với OpenGL
PHÂN TÍCH CHỨC NĂNG
Chức năng này sẽ tiến hành xây dựng một ma trận tịnh tiến M theo công thức như sau:
Với tx, ty, tz lần lượt là tọa độ của vecto tịnh tiến T = (tx, ty, tz)
Sau khi có được ma trận tịnh tiến, chương trình sẽ thực hiện phép nhân ma trận giữa M và vecto tọa độ các đỉnh của khối lập phương cũ, từ đó cho ra tọa độ các đỉnh của khối lập phương mới
Chức năng này sẽ tiến hành xây dựng một ma trận tịnh tiến M theo công thức như sau:
Với sx, sy, sz lần lượt là giá trị các tỉ lệ muốn biến đổi theo chiều Ox,
Sau khi xác định ma trận tỷ lệ, chương trình nhân ma trận M với tọa độ các đỉnh của khối lập phương ban đầu Kết quả nhân chính là tọa độ các đỉnh của khối lập phương mới.
Chương trình sẽ tiến hành các bước sau:
1 Tịnh tiến theo vecto (-x1, -y1, -z1) với x1, y1, z1 là tọa độ của đỉnh
A để A trùng với gốc tọa độ O
2 Quay quanh trục Ox 1 góc thetax phù hợp để AB nằm trong mặt Oxz
3 Quay quanh trục Oy 1 góc thetay phù hợp để AB nằm trên trục Oz
4 Quay quanh trục Oz góc theta
5 Quay ngược lại quanh trục Oy góc thetay
6 Quay ngược lại quanh trục Ox góc thetax
7 Tịnh tiến ngược lại vecto ban đầu
Tương ứng với từng bước, chương trình sẽ xây dựng một ma trận biến đổi phù hợp và thực hiện phép nhân ma trận vừa tạo với vecto tọa độ các đỉnh của khối lập phương để đạt được tọa độ mới của khối lập phương
Ma trận quay có công thức như sau:
Chức năng này sẽ tiến hành xây dựng một ma trận đối xứng M theo công thức như sau: Đối xứng qua Oxy: M 1 0 0 0
KẾT CHƯƠNG
Chương này trình bày về các nội dung sau:
• Bài toán mà đề tài cần phải giải quyết được
• Giới thiệu về thư viện mã nguồn mở OpenGL (không gian trong OpenGL, mục đích thiết kế, hạn chế, một số trò chơi được lập trình với OpenGL)
• Các chức năng trong đề tài
TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ
MÔ HÌNH TRIỂN KHAI
• Triển khai lập trình dưới dạng file thực thi exe để dễ dàng trong việc chạy chương trình trên các máy khác nhau
3.1.2 Các công cụ sử dụng
• Cấu hình hệ thống được sử dụng để lập trình và debug chương trình:
▪ Hệ điều hành Window 11 Pro for Workstation
• Cấu hình hệ thống được sử dụng để chạy demo file thực thi:
▪ Hệ điều hành Window 11 Pro for Workstation.
KẾT QUẢ THỰC NGHIỆM
• Người dùng chạy chương trình và giao diện chính sẽ hiện ra như sau:
• Người dùng sử dụng bàn phím để nhập các thông tin cần thiết nhằm đạt được kết quả mong muốn
• Dưới đây là một số hình ảnh kết quả thực thi chương trình
Hình 7: Giao diện khi tịnh tiến vật thể theo (x, y, z) = (0,200,0)
17 Hình 8: Giao diện khi tỉ lệ vật thể theo (x, y, z) = (1,1.5,1.5)
Hình 9: Giao diện khi quay vật quanh trục AB 60 độ (A = (0,300,400) và B = (200,200,0)
Hình 10: Giao diện khi đối xứng vật quanh mặt phẳng Oyz
Hình 11: Ma trận biến đổi (phép tịnh tiến)
Hình 12: Tọa độ các đỉnh trước khi biến đổi
Hình 13: Tọa độ các đỉnh sau khi biến đổi
NHẬN XÉT ĐÁNH GIÁ KẾT QUẢ
Qua kết quả thực nghiệm, ta có những nhận xét như sau:
- Kết quả của các phép biến đổi có độ chính xác cao
- Khả năng biến đổi và hiển thị các vật thể sau khi biến đổi tốt
- Đồ họa của chương trình khá bắt mắt
KẾT CHƯƠNG
Chương này trình bày về các nội dung cơ bản sau:
- Mô hình triển khai của của hệ thống
- Kết quả thực thi của chương trình
- Nhận xét và đánh giá về kết quả của chương trình