Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 76 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
76
Dung lượng
2,27 MB
Nội dung
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA TIN - - PHAN NGỌC AN NGHIÊN CỨU XÂY DỰNG GAME 3D TRÊN NỀN ĐỒ HỌA OPENGL KHĨA LUẬN TỐT NGHIỆP LỜI CẢM ƠN Tơi xin chân thành cảm ơn thầy cô khoa Tin học cũng thầy cô giảng dạy trường Đại học Sư Phạm, Đại học Đà Nẵng truyền đạt cho kiến thức quý báu suốt năm học vừa qua Đặc biệt xin chân thành cảm ơn thầy giáo Nguyễn Thanh Tuấn, khoa Tin học, trường Đại học Sư phạm tận tình hướng dẫn, động viên giúp suốt thời gian thực hiện đề tài Để có được kết ngày hơm nay, tơi rất biết ơn gia đình đợng viên, khích lệ, tạo điều kiện thuận lợi nhất suốt trình học tập cũng trình thực hiên đề tài tốt nghiệp Xin chân thành cảm ơn giám đốc Ngô Chí Trung, anh Phạm Thanh Trung, Phan Ngọc Tú, Nguyễn Minh Giám nhân viên công ty AsNet bạn khoa Tin học – khóa 08 chân thành giúp đỡ lúc gặp khó khăn, đặc biệt bạn lớp 08CNTT2 ủng hộ, giúp đỡ, chia sẽ kiến thức, kinh nghiệm tài liệu có được cho tơi q trình nghiên cứu thực hiện đề tài Mặc dù rất cố gắng hoàn thành luận văn với tất nổ lực của thân luận văn không tránh khỏi sai sót hạn chế, kính mong sự thông cảm đóng góp ý kiến của quý Thầy Cô, anh bạn Tôi xin chân thành cảm ơn! Đà Nẵng, Ngày 15 tháng 05 năm 2012 Sinh viên thực hiện Phan Ngọc An LỜI CAM ĐOAN Tôi xin cam đoan: 1) Những nội dung luận văn thực hiện dưới sự hướng dẫn trực tiếp của thầy ThS GV Nguyễn Thanh Tuấn 2) Mọi tham khảo dùng luận văn được trích dẫn rõ ràng trung thực tên tác giả, tên cơng trình, thời gian, địa điểm công bố 3) Mọi chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, xin chịu hoàn toàn trách nhiệm Sinh viên: Phan Ngọc An MỤC LỤC TỔNG QUAN ĐỀ TÀI 1 Đặt vấn đề Lý chọn đề tài Mục đích nghiên cứu Nội dung khóa luận Đối tượng phạm vi nghiên cứu 4.1 Đối tượng nghiên cứu 4.2 Phạm vi nghiên cứu: Phương pháp nghiên cứu Công cụ sử dụng NỘI DUNG NGHIÊN CỨU VÀ GIẢI PHÁP THỰC HIỆN Chương - GIỚI THIỆU VỀ CÔNG CỤ SỬ DỤNG 1.1 Ngơn ngữ lập trình 1.2 Visual C++ 1.3 Thư viện đồ họa OpenGL (Open Graphics Library) 1.4 Ngơn ngữ mơ hình hóa thống UML (Unified Modeling Language) 1.4.1 Giới thiệu 1.4.2 Các bước phân tích thiết kế hướng đối tượng Chương - CƠ SỞ LÝ THUYẾT 10 2.1 Các vấn đề quan trọng lập trình 3D 10 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 Khái niệm 3D 10 Các hệ trục tọa độ 10 Xác định vị trí điểm hệ tọa độ 3D 12 Các mơ hình 3D 13 Các hình dạng 3D 14 Quy trình xử lý đồ họa (Graphics Pipeline) 15 2.1.7 Các phép biến đổi (Transformation) 16 2.1.8 Các phép chiếu 3D 20 2.1.9 Kỹ thuật gắn kết cấu (texture mapping) 22 2.1.10 Loại bỏ mặt sau (backface culling) 24 2.1.11 Hộp biên (Bounding Boxes) 24 2.2 Thư viện đồ họa OpenGL 25 2.2.1 Cơ OpenGL 25 2.2.2 Các kỹ thuật Open GL 29 2.3 Kiến thức lập trình Game 41 2.3.1 Vòng lặp game (Game Loop) 41 2.3.2 Khung hình (Frame) 43 2.3.3 FPS (Frame Per Second) 43 2.3.4 Bộ nhớ (Memory) 44 2.3.5 Game AI (Artifical Intelligent) 44 2.3.6 Tương tác vật lý (game physics) 45 2.3.7 Âm (sound) 45 2.3.8 Trạng thái game (State) 46 Chương - PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 47 3.1 Xây dựng kịch cho game Warship 47 3.2 Phân tích hệ thống 47 3.2.1 Yêu cầu đặt chương trình 47 3.2.2 Mô tả chi tiết chức 49 3.3 Thiết kế hệ thống 57 3.3.1 Xây dựng kết cấu tổng thể hệ thống 57 3.3.2 Mơ hình hoạt động chương trình 60 Chương – CÀI ĐẶT VÀ KẾT QUẢ CHƯƠNG TRÌNH 62 4.1 Cài đặt chương trình 62 4.1.1 Load model *.obj 62 4.1.2 Thuật tốn đồng hóa frame 64 4.1.3 Thuật toán di chuyển ngẫu nhiên cho tàu chiến 65 4.2 Kết chương trình 66 4.2.1 Màn hình menu game 66 4.2.2 Màn hình game 67 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 68 Kết đạt 68 1.1 1.2 Về lý thuyết 68 Về thực nghiệm 68 Hướng phát triển đề tài 68 TÀI LIỆU THAM KHẢO 69 DANH MỤC BẢNG BIỂU Hình 1 Biểu đồ mơ hình cấu trúc Hình Biểu đồ mơ hình hành vi Hình Các bước phát triển hệ thống hướng đối tượng Hình Hệ trục tọa độ XYZ 11 Hình 2 Hệ trục tọa độ bàn tay trái 12 Hình Hệ trục tọa độ bàn tay phải 12 Hình Một điểm xác định tọa độ XYZ 13 Hình Hình khối đơn giản thể hiện hệ trục tọa độ XYZ chuẩn 13 Hình Các đa giác tách rời thành tập hợp tam giác 14 Hình Các thành phần hình dạng 3D 15 Hình Phép thay đổi kích thước với giá trị (1.6, 1.6, 1.6) 17 Hình Phép quay (Rotation) 18 Hình 10 Biểu diễn phép dịch chuyển theo vector 19 Hình 11 Phép dịch chuyển (Translation) 20 Hình 12 Kết hợp phép biến đổi 20 Hình 13 Biểu diễn phép chiếu phối cảnh 21 Hình 14 Biểu diễn phép chiếu trực giao 22 Hình 15 Mơ hình 3D trước sau sử dụng kỹ thuật gắn kết cấu 23 Hình 16 Một ví dụ sơ đồ kết cấu (texture map) 24 Hình 17 Các đối tượng 3D AABB chúng 25 Hình 18 Biểu diễn lệnh OpenGL 27 Hình 19 Các kiểu liệu OpenGL 28 Hình 20 Hình ảnh animation 29 Hình 21 Minh họa tham số hình vẽ 30 Hình 22 Hình ảnh shading 36 Hình 23 Biểu diễn hàm gluLookAt() 37 Hình 24 Biểu diễn phép chiếu trực giao với hàm glOrtho() 38 Hình 25 Thể hiện phép chiếu phối cảnh với hàm gluPerspective() 38 Hình 26 Thể hiện phép chiếu phối cảnh với hàm glFrustum() 39 Hình 27 Minh họa việc thiết lập viewport 41 Hình 28 Một vịng lặp game đơn giản 42 Hình 29 Biểu diễn số tương tác vật lý game 45 Hình Sơ đồ use case hệ thống 48 Hình Module GameState 57 Hình 3 Module Texture 58 Hình Module Objects3D 58 Hình Module Skybox 58 Hình Module Ship 59 Hình Sơ đồ mối quan hệ lớp 60 Hình Mơ hình hoạt động chương trình 61 Hình Cấu trúc model obj 63 Hình Sơ đồ thuật toán đồng frame 64 Hình Sơ đồ thuật toán di chuyển tàu ngẫu nhiên 65 Hình 4 Màn hình game 66 Hình Màn hình chơi game 67 Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn TỔNG QUAN ĐỀ TÀI Đặt vấn đề Game lĩnh vực giải trí tương tác quan trọng hàng đầu ngành cơng nghiệp nội dung số Doanh thu tồn cầu từ ngành tăng trưởng nhanh chóng từ tỷ USD (1994) lên 41.9 tỷ USD (2007) dự đoán đạt 68 tỷ USD (2012) Với tốc độ tăng trưởng bình quân 9% năm, Game trở thành ngành có tốc độ phát triển nhanh lĩnh vực giải trí Trong đó, Mỹ chiếm 40.42% thị phần, Anh 12.45% Nhật 11.87% Năm 2008, ngành Game Mỹ giá trị khoảng 22 tỷ USD vượt qua ngành công nghiệp âm nhạc (10 tỷ USD) ngành công nghiệp phim ảnh (9,5 tỷ USD); thu hút hàng triệu lao động chuyên gia phát triển, phân phối marketing game Việt Nam thị trường Game lớn khu vực Đông Nam Á với 20 nhà phát hành Game nước Doanh thu năm gần liên tục tăng trưởng với mức trung bình 400 triệu USD/năm, chiếm 70% doanh thu ngành nội dung số Sự phát triển ngành mang mức doanh thu lớn cho nhà phát hành Game, góp phần khơng nhỏ trong sự phát triển chung ngành công nghiệp nội dung số Việt Nam đồng thời thúc đẩy sự phát triển hạ tầng viễn thơng Việt Nam Sự phát triển nhanh chóng thị trường Game Việt đòi hỏi lượng nhân lực lớn tất khâu trình sản xuất Game như: thiết kế đồ họa Game (Games Design), lập trình Game (Programming), âm (Audio)… Lý chọn đề tài Ngày nhu cầu đời sống người ngày nâng cao, nhu cầu giải trí quan tâm đến nhiều Trong việc giái trí game máy tính nhiều hệ máy khác ngày phát triển lan rộng sự lơi mạnh mẽ Hầu sử dụng máy tính chơi hay nhiều game để giải trí Ngồi game cho di động hút nhiều người chơi với nhiều trị chơi cơng ty cung cấp game xuất hiện Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn Công nghiệp game ngày phát triển Tuy nhiên đa số game làm dạng 2D Thời gian gần xu hướng game 3D ưa chuộng Mặc dù chương trình game nhiều người bắt đầu lĩnh vực game để viết game hay chơi diều khơng dễ Vì với niềm đam mê game máy tính, thân em muốn sâu tìm hiểu nghiên cứu trình làm game 3D PC nhằm xây dựng demo chương trình game để phục vụ cho q trình nghiên cứu cơng việc tương lai sau Mục đích nghiên cứu Cũng cố kiến thức học tìm hiểu, nghiên cứu thêm kiến thức như: Lập trình với thư viện đồ họa OpenGL, nghiên cứu quy trình, cơng nghệ làm game 3D Nắm rõ quy trình phát triển game công cụ sử dụng để sản xuất sản phẩm game Áp dụng lập trình hướng đối tượng ngơn ngữ C++ để phát triển game với phần mềm visual studio C++ 2008 Xây dựng game 3D Warship với nhiều chức lựa chọn, đồ họa thẩm mỹ nhằm hút sự quan tâm người chơi Nội dung khóa luận Nội dung khóa luận chia làm phần cụ thể sau: Tổng quan đề tài Nội dung nghiên cứu giải pháp thực hiện o Chương 1: Giới thiệu công cụ sử dụng: Giới thiệu ngơn ngữ lập trình, trình biên dịch, ưu nhược điểm của lập trình game Giới thiệu công cụ sử dụng trong suốt q trình thực hiện khóa luận o Chương 2: Cơ sở lý thuyết: Trình bày vấn đề quan trọng lập trình 3D, việc sử dụng thư viện đồ họa OpenGL lập trình game 3D kỹ thuật lập trình game Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn o Chương 3: Phân tích thiết kế hệ thống: Nêu lên kịch của game, từ kịch game xây dựng chức của chương trình thiết kế module cho chương trình, trình bày mơ hình hoạt đợng của chương trình o Chương 4: Cài đặt chương trình kết chương trình: Trình bày thuật tốn được cài đặt chương trình kết demo của chương trình Kết luận hướng phát triển Đối tượng phạm vi nghiên cứu 4.1 Đối tượng nghiên cứu Công nghệ kỹ thuật làm game 3D Thư viện đồ họa mã nguồn mở OpenGL Phần mềm xây dựng mơ hình 3D: Autodesk 3ds Max 4.2 Phạm vi nghiên cứu: Xây dựng phát triển game 3D với công cụ thư viện đồ họa mã nguồn mở OpenGL phần mềm Microsoft visual studio 2008 máy tính (PC) Phương pháp nghiên cứu Nghiên cứu lý thuyết xây dựng game 3D nhằm đưa số định hướng phát triển đề tài Trong q trình nghiên cứu lý thuyết ln xây dựng chương trình thực hành để tìm hiểu rõ chất lý thuyết Công cụ sử dụng Phần mềm Microsoft visual studio 2008 (dùng để compile code C++ chương trình) Phần mềm Autodesk 3ds Max (dùng để chỉnh sửa model 3D) Thư viện đồ họa mã nguồn mở OpenGL Ngôn ngữ cài đặt: Cài đặt chương trình ngơn ngữ C++ window Phân tích thiết kế hướng đối tượng sử dụng UML Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn Khi lần bắn thực hiện có thời gian lên đạn định o Dịng sự kiện khác: Khơng có Các u cầu đặc biệt: Khơng có Điều kiện tiên quyết, tình trạng hệ thống trước thực hiện: Để bắn trúng tàu địch mạnh hướng tàu địch phải nằm hai bên tàu người chơi (người chơi điều khiển xoay tàu) Tình trạng hệ thống sau thực hiện: Đạn bay khỏi nịng pháo với hình vịng cung, xuất hiện khói Điểm mở rộng: Tàu chiến địch di chuyển ngẫu nhiên đồ với sự thông minh khác nhau, cách bắn tàu chiến địch bắn tương tự tàu chiến người chơi (bắn hai bên tàu) i Use case Nhặt Item Tóm tắt: Use case mô tả việc tàu chiến người chơi qua vùng có xuất hiện hộp chiến lợi phẩm nhặt hộp Tác nhân: Người chơi Dòng kiện: o Dòng sự kiện chính: Khi use case thực hiện tăng số lượng item tàu chiến như: máu để tăng tuổi thọ cho tàu chiến… Hiển thị giao diện chơi Người chơi điều khiển tàu chiến qua vật item biển Nếu item phù hợp với tàu chiến nhặt số lượng item tàu chiến mức cho phép Đồ vật sau nhặt lên biến chơi o Dịng sự kiện khác: Khơng có Các u cầu đặc biệt: Khơng có Điều kiện tiên quyết, tình trạng hệ thống trước thực hiện: Sau tàu chiến địch chết bắt đầu xuất hiện item Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 55 Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn Tình trạng hệ thống sau thực hiện: Tàu chiến trang bị vũ khí hay sức mạnh sau nhặt item Điểm mở rộng: Các item sau thời gian không nhặt bị biến j Use case Chết Tóm tắt: Use case mô tả việc tàu chiến bị trúng đạn bị lượng máu lượng máu HP nhỏ tàu chiến bị chìm xuống biển biến (trạng thái bị tiêu diệt) Tác nhân: Người chơi máy tính Dịng kiện: o Dịng sự kiện chính: Use case thực hiện số HP tàu chiến ta, tàu chiến địch Hiển thị giao diện chơi Khi tàu chiến bị chìm vị trí xuất hiện item lên mặt biển Nếu đối tượng chìm tàu địch game tiếp tục chạy bình thường Nếu đối tượng chìm tàu chiến người chơi game chuyển sang trạng thái kết thúc (Over game) số mạng nhỏ Sau thời gian định tàu chiến xuất hiện vị trí lúc chết (hồi sinh) số mạng lớn khơng o Dịng sự kiện khác: Khơng có Các u cầu đặc biệt: Khơng có Điều kiện tiên quyết, tình trạng hệ thống trước thực hiện: Sau tàu chiến địch chết bắt đầu xuất hiện item Tình trạng hệ thống sau thực hiện: Trạng thái game tiếp tục kết thúc Điểm mở rộng: Camera chuyển sang trại thái dừng, không di chuyển theo nhân vật (tàu chiến) Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 56 Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn 3.3 Thiết kế hệ thống 3.3.1 Xây dựng kết cấu tổng thể hệ thống Từ sơ đồ mô tả chức chương trình, việc cần làm thiết kế chương trình thành module nhỏ để dễ dàng quản lý thiết kế thuận lợi cho việc phát triển sau này: Module Game state: hệ thống bao gồm lớp kế thừa từ lớp Game State dùng để quản lý menu game Main menu, Option menu, High score menu…các lớp đa số có phương thức Init() dùng để khởi tạo menu nó, Update() dùng để cập nhật trạng thái hiện game Render() để vẽ menu lên hình, sau khơng sử dụng đến menu hủy cách gọi phương thức Destroy() Ngồi lớp có thêm số phương thức riêng lớp High score có thêm phương thức sortlist() để xếp danh sách điểm cao chẳng hạn… Hình Module GameState Module Texture: dùng để load file hình ảnh cần thiết game hình ảnh background, texture model…, lớp có phương thức LoadBMP(*char filename) Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 57 Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn Hình 3 Module Texture Module Objects3D: Module dùng để quản lý đối tượng 3D load đối tượng model *.obj (model tàu, box…), di chuyển render model Hình Module Objects3D Module Skybox: lớp tạo để quản lý phần khung cảnh bầu trời game, lớp thừa kế từ lớp Texture bao gồm phương thức LoadSkybox() dùng để load hình ảnh để tạo nên bầu trời lớp DrawSkybox() để xác định vị trí tọa độ điểm mà hình ảnh vẽ lên Hình Module Skybox Module Ship: Chứa thuộc tính tàu vị trí (x, y, z) tàu, vận tốc, hướng cảu tàu, lớp kế thừa từ lớp Objects3D phương thức quan trọng lớp Update() dùng để cập nhật vị trí hướng cho tàu Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 58 Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn Hình Module Ship Module Game Input dùng quản lý sự kiện bàn phím, chuột nhận người chơi sử dụng chương trình Module Graphics dùng quản lý đồ họa game Module Sound quản lý âm game Module Bullet tạo nhằm quản lý đạn tàu chiến game, kế thừa từ lớp Objects3D Module Camera: Để tạo cho người chơi có cảm giác thật cần quản lý di chuyển camera game theo tàu chiến người chơi, để làm việc cần xây dựng module quản lý module Camera Trên lớp game cần xây dựng mối quan hệ lớp mô tả hình sau: Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 59 Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn Hình Sơ đồ mối quan hệ lớp 3.3.2 Mơ hình hoạt động chương trình Bắt đầu chương trình giao diện menu bao gồm nút lệnh Play, High Scores, Option, About, Exit Khi người chơi nhấn vào “Play” chương trình chuyển quan hình chơi game hình In Game, ngồi từ menu người chơi vào menu “Option” để tùy chỉnh âm đồ họa, vào “High Scores” để xem điểm người chơi đạt kỷ lục cao nhất, menu “About” cho người chơi biết thông tin chương trình menu “Exit” để khỏi game Trong q trình chơi người chơi tạm dừng chương trình cách nhấn nút menu hình chơi game, lúc xuất hiện menu gồm: Main menu, Resume, Help, Exit Ở đây, menu “Main menu” dùng để quay lại hình game, nhấn vào menu chương trình khỏi hình chơi game quay lại Main menu, ngồi muốn xem thơng tin trợ giúp nhấn vào menu “Help” tiếp tục chơi game nhấn vào menu “Resume” Khi kết thúc game số điểm người chơi cao Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 60 Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn người chơi cao trước đưa thơng báo u cầu người chơi nhập tên để lưu vào danh sách điểm cao Hình Mơ hình hoạt động chương trình Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 61 Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn Chương – CÀI ĐẶT VÀ KẾT QUẢ CHƯƠNG TRÌNH 4.1 Cài đặt chương trình 4.1.1 Load model *.obj a Model 3D gì? Khi nghiên cứu cơng nghệ 3D khái niệm ta gặp phải model 3D Model 3D khơng đối tượng mà hình ảnh thật vật thể Trên model 3D ta gán vật liệu, ánh sáng tơ bóng để tạo hình ảnh thật vật thể Điều cần thiết để biểu diễn mơ hình giai đoạn thiết kế Để đánh giá mức độ chi tiết (đẹp hay xấu) model người ta tính số đa giác (polygon) để dựng lên model Ví dụ: game cũ (halflife, warcraft3…) số polygon cho nhân vật thường khơng vượt q 1000, game hiện cao nhiều từ khoảng 1000 đến 2500 Việc nhân vật nhiều polygon mịn lại chiếm nhiều Dram card hình hơn, xử lý chậm Thường nhân vật trùm dựng nhiều polygon trơng cho đẹp, cịn quái vật (monster) nhân vật phụ không quan trọng polygon Việc dựng model cho game thường dùng 3DS Max, Maya số phần mềm 3D khác Định dạng model phổ thông mdl, mdl2, x, 3ds, obj… chuẩn obj có nhiều hẳn chuẩn khác cấu trúc rõ ràng, mở notepad hiệu chỉnh notepad b Cấu trúc file model obj File obj file chứa khung mơ hình, nói cách khác file obj chứa điểm tạo dựng nên model mặt model Cấu trúc đơn giản file obj sau: Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 62 Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn Hình Cấu trúc model obj Trong đó: Văn sau dấu # ghi file obj v vertex – danh sách điểm model, x, y, z tọa độ vertex vt texture coordinate – tọa độ texture ứng với đỉnh đó, x, y tọa độ texture vertex normal – vector pháp tuyến đỉnh f face – có cơng thức tổng qt f v1/[vt1]/[vn1] v2/[vt2]/[vn2]… vx/[vtx]/[vnx] Trong đó: v1, v2, …vx điểm cấu thành mặt phẳng, dấu […] có hay khơng, vt1 sau v1 điểm v1 dùng tọa độ texture vt1, vn1 sau v1 hướng điểm v1 hướng điểm vn1 định backfacecull c Cách đọc vẽ model obj sử dụng thư viện đồ họa OpenGL Trong OpenGL, để load model 3D ta đọc tất thành phần model bao gồm (v, vt, vn, f) vào mảng sau vẽ đỉnh, face dùng vt để đắp texture cho model để sử dụng việc chiếu sáng Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 63 Nghiên cứu xây dựng game 3D đồ họa OpenGL 4.1.2 GVHD: ThS Nguyễn Thanh Tuấn Thuật toán đồng hóa frame Đồng hóa frame kỹ thuật làm cho hành ảnh chuyển động game mịn Trong game có nhiều đối tượng với nhiều hình ảnh đồ họa vẽ liên tục Nếu lần có đối tượng thay đổi ta lại cập nhật lên hình khơng tạo cảm giác đối tượng chuyển động đồng thời Để giải vấn đề chờ tất đối tượng thay đổi cập nhật lên hình Tuy nhiên game chạy có lúc xử lý xảy nhanh, có lại chậm khiến đối tượng lúc chuyển động nhanh, lúc chuyển động chậm tạo cảm giác game bị giật Để giải vấn đề ta quy định thời gian cập nhật hình cố định, sau tất xử lý frame hoàn thành ta kiểm tra xem thời gian thực hiện chúng đủ thời gian quy định cho frame hay chưa Nếu nhỏ đợi đến lúc đủ thời gian cập nhật tất lên hình Hình Sơ đồ thuật toán đồng frame Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 64 Nghiên cứu xây dựng game 3D đồ họa OpenGL 4.1.3 GVHD: ThS Nguyễn Thanh Tuấn Thuật toán di chuyển ngẫu nhiên cho tàu chiến, kiểm tra va chạm ranh giới Tàu chiến di chuyển ngẫu nhiên mặt biển với posX, posZ, rotY thay đổi posX, posY, posZ vị trí hiện tàu chiến rotY góc dùng xác định phương, hướng tàu chiến khởi tạo v vận tốc tàu chiến rotRadY gốc quay tàu chiến tính radian Hình Sơ đồ thuật toán di chuyển tàu ngẫu nhiên Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 65 Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn 4.2 Kết chương trình Sau cài đặt tốn với thời gian định chương trình xây dựng sườn game để từ dễ dàng phát triển game 3D hoàn thiện vừa mang tính chất giải trí, vừa mang tính chất giáo dục cao giới game 4.2.1 Màn hình menu game Hình 4 Màn hình game Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 66 Nghiên cứu xây dựng game 3D đồ họa OpenGL 4.2.2 GVHD: ThS Nguyễn Thanh Tuấn Màn hình game Hình Màn hình chơi game Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 67 Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết đạt 1.1 Về lý thuyết Cũng cố lại kiến thức ngơn ngữ lập trình C++ lập trình hướng đối tượng Nắm kiến thức trình làm game 3D, kỹ thuật sử dụng để phát triển game 3D Biết cách sử dụng thư viện đồ họa mã nguồn mở OpenGL lập trình đồ họa, đặc biệt lập trình game 3D 1.2 Về thực nghiệm Load model *obj lên hình sử dụng kỹ thuật thư viện đồ họa OpenGL light,… Xây dựng cấu trúc game Warship 3D hồn thành 70% so với phân tích thiết kế ban đầu Hướng phát triển đề tài Nghiên cứu kỹ thuật phát triển game 3D để hồn thiện phần cịn lại game Warship 3D với mục đích chơi máy tính Nghiên cứu cách lập trình game 3D thiết bị di động điện thoại nhằm đưa game lên thiết bị Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 68 Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS Nguyễn Thanh Tuấn TÀI LIỆU THAM KHẢO Tiếng việt: [1] Lê Phong, Hướng dẫn lập trình OpenGL [2] Lê Tấn Hùng, Huỳnh Quyết Thắng (2000), Kỹ thuật đồ họa, Nhà xuất khoa học kỹ thuật Tiếng nước ngoài: [3] Wendy Stahler (2004), Beginning Math and Physics for Game Programmers, New Riders Publishing [4] Michael Dawson (2006), Beginning C++ Game Programming, Course Technology PTR [5] Practice C++ Trang web: [6] http://www.gamedev.net/ [7] http://www.videotutorialsrock.com/ [8] http://www.3dcodingtutorial.com/ Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang 69 ... trọng lập trình 3D, việc sử dụng thư viện đồ họa OpenGL lập trình game 3D kỹ thuật lập trình game Sinh viên: Phan Ngọc An – Lớp 08CNTT2 Trang Nghiên cứu xây dựng game 3D đồ họa OpenGL GVHD: ThS... phạm vi nghiên cứu 4.1 Đối tượng nghiên cứu Công nghệ kỹ thuật làm game 3D Thư viện đồ họa mã nguồn mở OpenGL Phần mềm xây dựng mơ hình 3D: Autodesk 3ds Max 4.2 Phạm vi nghiên cứu: Xây dựng... viện đồ họa OpenGL (Open Graphics Library) OpenGL thư viện đồ họa mã nguồn mở, tiêu chuẩn kỹ thuật đồ họa có mục đích định giao diện lập trình ứng dụng đồ họa chiều OpenGL dùng ứng dụng đồ họa