XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG -HIỆU ỨNG ÁNH SÁNG VÀ VẬT LIỆU
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Hoàng Khánh XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG - HIỆU ỨNG ÁNH SÁNG VÀ VẬT LIỆU KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin HÀ NỘI – 2009 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Bùi Hoàng Khánh XÂY DỰNG GAME ENGINE ĐA NỀN TẢNG - HIỆU ỨNG ÁNH SÁNG VÀ VẬT LIỆU KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Cán bộ hướng dẫn: ThS. Vũ Quang Dũng HÀ NỘI – 2009 i LỜI CẢM ƠN Lời đầu tiên tôi xin bày tỏ lòng biết ơn chân thành tới các thầy cô giáo Trường Đại học Công Nghệ, Đại học Quốc Gia nói chung và các thầy cô bộ môn công nghệ Phần mềm nói riêng. Trong suốt thời gian tôi học tại trường, các thầy cô đã luôn tận tình dạy dỗ, chỉ bảo để tôi có được kết quả như ngày hôm nay. Đặc biệt, tôi xin chân thành cảm ơn giảng viên, thạc sĩ Vũ Quang Dũng. Cảm ơn thầy vì những định hướng, nhận xét quý báu và động viên kịp thời của thầy đã giúp tôi hoàn thành khóa luận này. Tôi cũng xin cảm ơn phòng thí nghiệm Toshiba – Coltech đã tạo điều kiện cho tôi có môi trường làm việc trong quá trình thực hiện khóa luận này. Cuối cùng tôi xin bày tỏ lòng biết ơn sâu sắc tới gia đình và bạn bè, những người đã luôn động viên, giúp đỡ tôi cả về vật chất lẫn tinh thần trong suốt những năm tháng qua. Hà Nội, ngày 19 tháng 05 năm 2009 Sinh viên Bùi Hoàng Khánh ii TÓM TẮT Sự phát triển của công nghệ mô phỏng và giải trí, ngày càng có nhiều ứng dụng đồ họa và trò chơi 3D được xây dựng nhằm phục vụ mục đích nghiên cứu, mô phỏng và giải trí… Cùng với đó, công nghệ phần cứng cũng phát triển rất nhanh, đặc biệt là các phần cứng xử lý đồ họa có thể lập trình được và các ngôn ngữ lập trình trên các phần cứng này. Tuy nhiên, để xây dựng một ứng dụng đồ họa và trò chơi 3D đảm bảo các yêu cầu: hỗ trợ một dải phần cứng và phần mềm (cụ thể là hệ điều hành) lớn, có khả năng lựa chọn API đồ họa mức thấp (OpenGL, OpenGL ES hay DirectX), dễ d àng quản lý và phát triển các tài nguyên; các ứng dụng này được xây dựng từ một game engine, chứ không phát triển từ nguyên thủy. Xuất phát từ thực tế đó, khóa luận tập trung nghiên cứu xây dựng một hệ thống Game Engine hỗ trợ xây dựng ứng dụng đồ họa và trò chơi 3D trên nhiều nền tảng khác nhau. Hệ thống Game Engine được xây dựng sẽ cung cấp giao diện lập trình ở mức cao. Khi phát triển các ứng dụng đồ họa 3D, người lập trình không cần phải quan tâm đến quá trình quản lý tài nguyên, cũng như xử lý đồ họa ở mức thấp bên dưới. Thay vào đó, họ chỉ cần tập trung vào quản lý ở mức lôgíc các thành phần của ứng dụng, hoặc thêm mới các thành phần dựa trên thành phần cơ sở do hệ thống cung cấp. Nội dung của khóa luận này tập trung nghiên cứu các vấn đề sau: - Môi trường phát triển hệ thống Game Engine ứng dụng đồ họa và trò chơi 3D, gồm nền tảng phần cứng, phần mềm, và các công nghệ đồ họa ở mức thấp (như OpenGL, OpenGL ES, DirectX). - Thiết kế và xây dựng một hệ thống đồ họa có cấu trúc và tương tác với người dùng. - Nghiên cứu và triển khai các kỹ thuật tạo hiệu ứng về ánh sáng trong khung cảnh 3D. iii 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 iv 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 v BẢNG CÁC TỪ VIẾT TẮT Ký hiệu Từ tiếng Anh Giải thích CPU Central processing unit Đơn vị xử lý trung tâm GPU Graphics processing unit Đơn vị xử lý đồ họa MMORPG Massively multiplayer online role-playing game Trò chơi nhập vai trực tuyến nhiều người chơi SL Shading language Ngôn ngữ tạo bóng SV Shadow volume Vùng giới hạn bóng vi DANH MỤC HÌNH VẼ Hình 1: Kiến trúc phân tầng của GEM . 3 Hình 2: Kiến trúc tổng thể của GEM 4 Hình 3: Biểu đồ lớp của thành phần Các kiểu dữ liệu cơ bản 5 Hình 4: Quá trình điều phối sự kiện . 6 Hình 5: Kiến trúc phân tầng của Render Engine 7 Hình 6: Tác động của Ánh sáng trong đồ họa 3D 9 Hình 7: Vẽ vật thể với áng sáng Ambient 10 Hình 8: Vẽ vật thể với thành phần Diffuse . 10 Hình 9: Vẽ vật thể với thành phần Specular . 11 Hình 10: Kết quả của một số mô hình tạo bóng . 11 Hình 11: Kết quả của cùng một mô hình ánh sáng trên Vertex và Pixel 12 Hình 12: Mô hình của SV . 13 Hình 13: So sánh giữa sử dụng bản đồ pháp tuyến và thiết kế mô hình 14 Hình 14: Mô hình liên kết với các thành phần khác bên ngoài 16 Hình 15: Các thành phần của mô đun Hiệu ứng ánh sáng và vật liệu 17 Hình 16: Quá trình Chiếu sáng . 19 Hình 17: Lớp Material 20 Hình 18: Lớp LightSceneNode . 20 Hình 19: Sơ đồ “bật” nguồn sáng . 21 Hình 20: Lớp DLightSceneNode 22 Hình 21: Sơ đô trạng thái “bật” nguồn sáng động 23 Hình 22: Lớp DLightEffect 24 Hình 23: Ví dụ về một lớp sử dụng DLightSceneNode . 25 Hình 24: Quá trình chiếu sáng bằng hệ thống ánh sáng động 26 vii Hình 25: Lớp Shadow . 27 Hình 26: Sơ đồ trạng thái vẽ bóng 27 Hình 27: Lớp ShadowEffect . 28 Hình 28: Cấu trúc dữ liệu tính toán Vùng đổ bóng 29 Hình 29: Sơ đồ hoạt động của renderShadow() 30 Hình 30: Lớp BumpSceneNode 30 Hình 31: Tính ma trận chuyển từ không gian World sang không gian Texture . 31 Hình 32: Sơ đồ lớp BumpEffect . 32 Hình 33: Sơ đồ hoạt động của phương thức render() của BumpSceneNode . 33 Hình 34: Hình hộp sử dụng hiệu ứng bump . 36 Hình 35: Trò chơi cờ vua 36 Hình 36: Khung cảnh bên trong một ngôi nhà . 36 viii DANH MỤC BẢNG BIỂU Bảng 1: Dòng card đồ họa được GEM hỗ trợ . 4 Bảng 2: Bảng đánh giá Thực nghiệm 1 34 Bảng 3: Bảng đánh giá Thực nghiệm 2 35 Bảng 4: Bảng đánh giá Thực nghiệm 3 35 [...]... ứng ánh sáng và vật liệu thực hiện được 2 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. .. tượng, vật liệu tạo nên đối tượng…) Hình 6: Tác động của Ánh sáng trong đồ họa 3D 2.1.1 Các thành phần của ánh sáng Mỗi nguồn sáng được chia làm ba thành phần sáng cơ bản [7][12]: Thành phần Ambient Thành phần ánh sáng bao quanh vật thể, và đến từ mọi hướng Vì thế nó không phụ thuộc vào vị trí của nguồn sáng mà phụ thuộc vào độ phản xạ ánh sáng của vật thể và màu sắc của nguồn sáng 9 Hình 7: Vẽ vật thể... 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ý khung cảnh để mô phỏng các yếu tố tự nhiên cần có trong game. .. luận Xây dựng Game Engine đa nền tảng – Mô phỏng tự nhiên” - Trần Thái Dương - Chuyển động của đối tượng là mô đun mở rộng các thành phần của Quản lý hung cảnh, thực hiện quá trình nội suy trong các mô hình chuyển động (thường là các nhân vật trong game) thông qua hai kĩ thuật thông dụng là keyframe và skinning 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 –... 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. .. gương 10 Quá trình chiếu sáng ngoài phụ thuộc vào vị trí, hướng, màu sắc của nguồn sáng; độ phản xạ ánh sáng của vật thể, còn phụ thuộc vào hướng nhìn của mắt Hình 9: Vẽ vật thể với thành phần Specular Ngoài ra, mỗi nguồn sáng còn có một số đặc trưng riêng, mô tả cho các loại nguồn sáng khác nhau, như: hướng ánh sáng, vị trí nguồn sáng, cường độ ánh sáng và vùng giới hạn chiếu sáng 2.1.2 Các mô hình... cường độ sáng attenuation tại điểm P, cường độ này giảm dần theo khoảng cách từ nguồn sáng đến P Tính vùng chiếu sáng spotEffect, nếu là nguồn sáng spotlight thì vùng này là một hình nón có đỉnh là vị trí nguồn sáng 24 - Tính các thành phần sáng ambient, diffuse và specular dựa vào hướng nhìn, hướng chiếu sáng và điểm được chiếu sáng - Tính màu tại điểm P dựa vào các thành phần sáng và vật liệu tại... vật thể với áng sáng Ambient Thành phần Diffuse Thành phần ánh sáng đến từ một nguồn sáng cụ thể, sau đó phản xạ tại bề mặt vật thể theo nhiều hướng Màu sắc của vật thể được chiếu sáng bởi thành phần này phụ thuộc vào vị trí, hướng, màu sắc của nguồn sáng và độ phản xạ của vật thể Hình 8: Vẽ vật thể với thành phần Diffuse Thành phần Specular Thành phần ánh sáng này cũng đến từ một nguồn sáng cụ thể, nhưng... 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... của công nghệ phần cứng (cụ thể là các phần cứng xử lý đồ họa lập trình được và các ngôn ngữ lập trình trên phần cứng này) và công nghệ mô phỏng và giải trí, các ứng dụng đồ họa và trò chơi 3D được xây dựng và phát triển ngày càng nhiều Cách đây 20 năm, các ứng dụng này rất đơn giản và chỉ cần một người hoặc một nhóm nhỏ người phát triển Nhưng ngày nay, với tính năng xử lý đồ họa và tương tác ấn tượng