Download miễn phí Khóa luận Xây dựng game engine đa nền tảng - Hiệu ứng ánh sáng và vật liệu





MỤC LỤC
LỜI CẢM ƠN . . . i
TÓM TẮT . . . . ii
MỤC LỤC . . . . iii
BẢNG CÁC TỪ VIẾT TẮT . . . v
DANH MỤC HÌNH VẼ . . . vi
DANH MỤC BẢNG BIỂU . . . viii
MỞ ĐẦU . . . . 1
Chương 1: TỔNG QUAN VỀ GEM . . 3
1.1. Khái niệm Game Engine . 3
1.2. Mô hình của GEM . 3
1.2.1. Các đặc điểm của GEM . 3
1.2.2. Kiến trúc tổng thể . 4
1.2.2.1. Thành phần Cấu trúc dữ liệu cơ bản . 5
1.2.2.2. Thành phần Giao tiếp với Hệ điều hành . 6
1.2.2.3. Thành phần Render Engine . 7
1.2.2.4. Các thành phần còn lại . 8
Chương 2: CƠ SỞ LÝ THUYẾT. . 9
2.1. Ánh sáng trong đồ họa máy tính . 9
2.1.1. Các thành phần của ánh sáng . 9
2.1.2. Các mô hình tạo bóng . 11
2.2. Đổ bóng . 12
2.2.1. Bóng của đối tượng trong khung cảnh . 12
2.2.2. Phương pháp đổ bóng . 12
2.3. Đối tượng có bề mặt phức tạp . 13
2.3.1. Đối tượng với mạng lưới nhiều đa giác . 13
2.3.2. Kỹ thuật sử dụng bản đồ vector pháp tuyến . 13
2.3.3. Không gian Texture . 14
Chương 3: MÔ HÌNH ĐỀ XUẤT . . 16
3.1. Các yêu cầu chung của mô đun . 16
3.2. Các thành phần trong mô đun . 17
Chương 4: THIẾT KẾ CHI TIẾT . . 19
4.1. Chiếu sáng . 19
4.1.1. Vật liệu . 19
4.1.2. Chiếu sáng bằng mô hình OpenGL cung cấp . 20
4.1.3. Chiếu sáng bằng mô hình tự định nghĩa . 22
4.1.3.1. Lớp DLightSceneNode . 22
4.1.3.2. Sử dụng DLightSceneNode . 25
4.2. Hiệu ứng đổ bóng . 27
4.3. Hiệu ứng Bump . 30
Chương 5: THỰC NGHIỆM . . . 34
5.1. Thực nghiệm chương trình . 34
5.1.1. Phương pháp đánh giá . 34
5.1.2. Kết quả đánh giá . 34
5.2. Demo chương trình . 35
KẾT LUẬN . . . 37
Kết luận . 37
Hướng phát triển . 37
PHỤ LỤC . . . . 38
TÀI LIỆU THAM KHẢO . . . a



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

Engine đa nền tảng. Chương này cũng trình
bày mô hình chung của một Game Engine và một số thành phần cơ bản khác của hệ
thống.
Chương 2: Trình bày các cơ sở lý thuyết để xây dựng nên mô đun Hiệu ứng ánh
sáng và vật liệu. Trong đó chương này trọng tâm vào trình bày một cách tổng quan
nhất về các lý thuyết được áp dụng để thiết kế và cài đặt mô đun này.
Chương 3: Trình bày mô hình tổng quan của mô đun Hiệu ứng ánh sáng và vật
liệu. Đó là đưa ra quan hệ giữa mô đun này với các mô đun khác trong hệ thống, cũng
như quan hệ giữa các thành phần trong cùng mô đun.
Chương 4: Trình bày chi tiết việc cài đặt các thành phần cơ bản của mô đun
Hiệu ứng ánh sáng và vật liệu. Đó là cấu trúc lớp để quản lý các thành phần của hệ
thống, và các luồng điều khiển thực thi.
Chương 5: Trình bày các đánh giá thực nghiệm và các demo chức năng mà mô
đun Hiệu ứng ánh sáng và vật liệu thực hiện được.
3
Chương 1: TỔNG QUAN VỀ GEM
1.1. Khái niệm Game Engine
Game Engine là một công cụ hỗ trợ, một lớp trung gian ở giữa các ứng dụng
game và nền tảng bên dưới, các thư viện lập trình cấp thấp. Game Engine giúp phát
triển ứng dụng game một cách nhanh chóng và đơn giản, đồng thời cung cấp khả năng
tái sử dụng mã nguồn cao do có thể phát triển nhiều ứng dụng từ một game engine.
Hình 1: Kiến trúc phân tầng của GEM
GEM là một game engine nên dĩ nhiên nó cũng tuân theo mô hình này (Hình 1).
1.2. Mô hình của GEM
1.2.1. Các đặc điểm của GEM
Như đã giới thiệu, GEM hỗ trợ đa nền (Window PC và Linux PC) và nhắm đến
thị trường phát triển game nhập vai trực tuyến, nên GEM có các đặc điểm sau:
Đầu tiên là khả năng chạy đa nền. Để đạt được điều này, GEM sử dụng các bản
build khác nhau trên các nền tảng khác nhau (chứ không phải sử dụng thông dịch). Các
đoạn code phụ thuộc nền tảng sẽ được phân chia bằng việc sử dụng các cờ tiền biên
dịch, hạn chế tối đa việc sử dụng các lớp ảo – vì việc nằm sẽ làm giảm đáng kể hiệu
suất chương trình [4][5]. Cũng vì lí do này chúng tui lựa chọn OpenGL làm giao diện
lập trình đồ họa 3D cấp thấp cho GEM, do chuẩn OpenGL là chuẩn mở và không bị
phụ thuộc vào hệ điều hành; và sử dụng Cg Shading Language làm ngôn ngữ tạo bóng.
Thứ hai, GEM được thiết kế hướng đối tượng và yêu cầu về hiệu năng chạy cao
nên chúng tui sử dụng ngôn ngữ C++ - ngôn ngữ đáp ứng hoàn hảo các điều kiện trên.
4
Cuối cùng, do GEM nhắm đến thị trường phát triển game nhập vai trực tuyến,
nên sẽ được thiết kế để tương thích với một phạm vi rộng cấu hình phần cứng, dự kiến
sẽ hỗ trợ các card đồ họa hỗ trợ OpenGL 1.4 và Shader 1.0 trở lên (Bảng 1).
Bảng 1: Dòng card đồ họa được GEM hỗ trợ
Hãng sãn xuất Dòng card hỗ trợ
nVIDIA Từ GeForce4 Ti trở lên
ATI Từ Radeon 9500 trở lên
Intel (card tích hợp) Từ Intel® GMA 3100 (chipset G31,Q33) trở lên
1.2.2. Kiến trúc tổng thể
GEM là được chia thành nhiều thành phần để tiện cho việc phát triển và bảo trì.
Cụ thể GEM gồm các thành phần như sau:
Hình 2: Kiến trúc tổng thể của GEM
5
Do giới hạn về thời gian, nên phạm vi của luận văn này chúng tui tập trung hoàn
thành các thành phần sau: Giao tiếp với Hệ điều hành, Các kiểu dữ liệu cơ bản,
Render Engine. Những thành phần này đủ để hỗ trợ người sử dụng tạo ra các khung
cảnh 3D và tương tác với chúng.
1.2.2.1. Thành phần Cấu trúc dữ liệu cơ bản
Các kiểu dữ liệu cơ bản là thành phần bao gồm các cấu trúc dữ liệu cơ bản như
mảng động, vector, ma trận…, và các phép toán trên các kiểu dữ liệu đó; cung cấp cho
thành phần khác sử dụng.
Hình 3: Biểu đồ lớp của thành phần Các kiểu dữ liệu cơ bản
Các kiểu dữ liệu này có thể chia thành 02 nhóm chính:
- Các yếu tố trong không gian 3D:
o Vector2, Vector, Vector4: các loại vector biểu diễn tọa độ 2 chiều, 3
chiều và đồng nhất.
o Aabb: hình hộp chữ nhật có các cạnh dọc theo các trục xyz, được mô
tả bằng 2 điểm (xmin, ymin, zmin ), (xmax, ymax, zmax).
6
o Sphere: hình cầu được mô tả bởi tọa độ tâm và bán kính.
o LineSequent, Line, Ray: mô tả đoạn thẳng, đường thẳng, và tia.
o Matrix: ma trận sử dụng để biểu diễn các phép biến đổi: dịch, xoay, co
giãn trong không gian 3 chiều.
o Plane: mặt phẳng được mô tả bởi phương trình ax + by + cz + d = 0.
o Frustum: là hình chóp cụt biểu diễn khung nhìn của camera, được mô
tả bằng 6 mặt phẳng tạo nên nó.
- Các kiểu đối tượng lưu trữ:
o String: lưu trữ xâu kí tự.
o Array: mảng động có thể tùy biến với hệ số mở rộng.
o GemAllocator: thực thi cấp phát và giải phóng bộ nhớ.
o List: Danh sách liên kết hai chiều.
o Stack: đặc tả ngăn xếp.
1.2.2.2. Thành phần Giao tiếp với Hệ điều hành
Hình 4: Quá trình điều phối sự kiện
7
Giao tiếp với Hệ điều hành là thành phần thực thi các công việc cần giao tiếp
với hệ điều hành như điều phối sự kiện, đọc ghi file, lấy thời gian hệ thống… Trong đó
quan trọng nhất là quá trình điều phối sự kiện (Hình 4).
GEM lấy sự kiện từ Message System của hệ điều hành, từ đó lấy các thông tin
cần thiết tạo ra một đối tượng GemEvent - lý do cần tạo ra GemEvent là để tránh bị
phụ thuộc vào hệ điều hành. Sau đó, GemEvent sẽ được gửi lần lượt đến các thành
phần có khả năng nhận và xử lý sự kiện này.
1.2.2.3. Thành phần Render Engine
Render Engine là thành phần cốt lõi của một Game Engine. Nó hỗ trợ người
dùng các công việc thiết yếu để tạo ra một khung cảnh 3D. Người dùng sẽ không cần
biết nhiều đến những công việc tầng thấp như quá trình đọc file tài nguyên, sử dụng
các API đồ họa 3D, tạo các hiệu ứng… mà quản lý logic các đối tượng bằng các giao
diện do Render Engine cung cấp.
Đây là thành phần duy nhất trong GEM giao tiếp với phần cứng đồ họa thông
qua thư viện đồ họa 3D cấp thấp, cụ thể ở đây là OpenGL và Cg.
Hình 5: Kiến trúc phân tầng của Render Engine
Thành phần này được thiết kế làm các mô đun sau:
- Graphic Driver là mô đun trực tiếp sử dụng các API đồ họa 3D (OpenGL),
cung cấp cho các mô đun khác một giao diện đơn giản hơn để tương tác với card
đồ họa.
8
- Quản lý tài nguyên là mô đun quản lý các tài nguyên cần thiết để xây dựng một
khung cảnh 3D như mạng lưới, texture 2D, cubemap… Mô đun này được trình
bày chi tiết trong khóa luận “Xây dựng Game Engine đa nền tảng – Quản lý tài
nguyền và chuyển động nhân vật ” - Hoàng Tuấn Hưng.
- Quản lý khung cảnh là mô đun thực hiện việc tổ chức và kiểm soát các đối
tượng tồn tại trong một khung cảnh 3D, từ đó thực hiện quá trình chuyển toàn bộ
khung cảnh đó tạo nên hình ảnh 2D tại vị trí nhìn. Mô đun này được trình bày chi
tiết trong khóa luận “Xây dựng Game Engine đa nền tảng – Quản lý khung
cảnh” - Trương Đức Phương.
- Hiệu ứng ánh sáng và vật liệu là mô đun mở rộng các thành phần của Quản lý
khung cảnh để tạo các hiệu ứng về ánh sáng, và vật liệu. Mô đun này được trình
bày chi tiết ở phần sau của khóa luận này.
- Mô phỏng tự nhiên là mô đun mở rộng các thành phần của Quản l...
 

Các chủ đề có liên quan khác

Top