ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO TỐT NGHIỆP KỸ SƯ Tên đề tài : Tên đề tài : LẬP TRÌNH ĐỒ HỌA 3D, MÔ PHỎNG TỰ NHIÊN VÀ ỨNG LẬP TRÌNH ĐỒ HỌA 3D, MÔ PHỎNG TỰ NHIÊN VÀ ỨNG DỤNG XÂY DỰNG GAME ENGINE 3D ĐA NỀN TẢNG DỤNG XÂY DỰNG GAME ENGINE 3D ĐA NỀN TẢNG Đà Nẵng, ngày 01/06/2013 Họ và tên Sinh viên : Lê Sữa Họ và tên Sinh viên : Lê Sữa Lớp : 08T1 Lớp : 08T1 CBHD : Th.S Đặng Thiên Bình CBHD : Th.S Đặng Thiên Bình
BÁO CÁO TỐT NGHIỆP KỸ SƯ. Tên đề tài : LẬP TRÌNH ĐỒ HỌA 3D, MÔ PHỎNG TỰ NHIÊN VÀ ỨNG DỤNG XÂY DỰNG GAME ENGINE 3D ĐA NỀN TẢNG. Họ và tên Sinh viên : Lê Sữa Lớp : 08T1 CBHD : Th.S Đặng Thiên Bình. Đà Nẵng, ngày 01/06/2013. Nội dung trình bày. Đặt vấn đề Mục đích và nhiệm vụ - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
ĐẠI HỌC ĐÀ NẴNGTRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO TỐT NGHIỆP KỸ SƯ
Tên đề tài :Tên đề tài :
LẬP TRÌNH ĐỒ HỌA 3D, MÔ PHỎNG TỰ NHIÊN VÀ ỨNGLẬP TRÌNH ĐỒ HỌA 3D, MÔ PHỎNG TỰ NHIÊN VÀ ỨNG
DỤNG XÂY DỰNG GAME ENGINE 3D ĐA NỀN TẢNGDỤNG XÂY DỰNG GAME ENGINE 3D ĐA NỀN TẢNG
Đà Nẵng, ngày 01/06/2013
Họ và tên Sinh viên : Lê SữaHọ và tên Sinh viên : Lê Sữa
Sự phát triển của ngành công nghệ thông tinSự phát triển của ngành công nghệ thông tin Nhu cầu giải trí, đặc biệt là game, đồ họa đẹpNhu cầu giải trí, đặc biệt là game, đồ họa đẹp Nhiều công ty phát triển game cho các thiết bị di động, máy Nhiều công ty phát triển game cho các thiết bị di động, máy
tính… ra đờitính… ra đời Nhu cầu nhân lực của ngành công nghiệp game càng ngày càng Nhu cầu nhân lực của ngành công nghiệp game càng ngày càng
cao, trong khi đó phát triển game, đặc biệt game đồ họa 3D còn cao, trong khi đó phát triển game, đặc biệt game đồ họa 3D còn khá xa lạ với sinh viênkhá xa lạ với sinh viên
Đề tài mong muốn tìm hiểu về lập trình đồ họa, cấu trúc xây Đề tài mong muốn tìm hiểu về lập trình đồ họa, cấu trúc xây dựng game, đặt biệt là game có hỗ trợ đa nền tảng, nhằm cung dựng game, đặt biệt là game có hỗ trợ đa nền tảng, nhằm cung cấp một số tài liệu, định hướng cho các bạn lập trình viên, sinh cấp một số tài liệu, định hướng cho các bạn lập trình viên, sinh viên có nhu cầu muốn tìm hiểuviên có nhu cầu muốn tìm hiểu
4/14
Mục đích ý nghĩa của đề tàiMục đích ý nghĩa của đề tài Mục đích:Mục đích:
Đề tài nghiên cứu về các kỹ thuật lập trình đồ họa 3D, các kỹ thuật mô Đề tài nghiên cứu về các kỹ thuật lập trình đồ họa 3D, các kỹ thuật mô phỏng tự nhiên, để ứng dụng xây dựng một game engine 3D đa nền tảng phỏng tự nhiên, để ứng dụng xây dựng một game engine 3D đa nền tảng trên cơ sở sử dụng thư viện lập trình đồ họa OpenGL ES 2.0trên cơ sở sử dụng thư viện lập trình đồ họa OpenGL ES 2.0trong cùng đoạn trong cùng đoạn văn bảnvăn bản, không gạch đầu dòng, không gạch đầu dòng
Tìm hiểu được các kỹ thuật lập trình 3D, tạo hiệu ứng mô phỏng tự nhiên, Tìm hiểu được các kỹ thuật lập trình 3D, tạo hiệu ứng mô phỏng tự nhiên, tìm hiểu cấu trúc game, đa nền tảng.tìm hiểu cấu trúc game, đa nền tảng.
Ý nghĩa khoa học :Ý nghĩa khoa học :Đưa ra cách tiếp cận khá đơn giản, dễ hiểu, dễ nắm bắt hơnĐưa ra cách tiếp cận khá đơn giản, dễ hiểu, dễ nắm bắt hơnCó thể phát triển và mở rộng thành một engine game phức tạp và xử lý Có thể phát triển và mở rộng thành một engine game phức tạp và xử lý
được các yêu cầu khó hơn.được các yêu cầu khó hơn. Ý nghĩa thực tiễn :Ý nghĩa thực tiễn :
Hiểu vận dụng được Hiểu vận dụng được nhữngnhững kiến thức 3D, cấu trúc game, phục vụ cho kiến thức 3D, cấu trúc game, phục vụ cho việc nghiên cứu, tạo ra các game vừa phải, và có thể tiếp cận nhanh các việc nghiên cứu, tạo ra các game vừa phải, và có thể tiếp cận nhanh các dự án game thực tế.dự án game thực tế.
Cung cấp nguồn tài liệu cho sinh viên, lập trình viên trong việc nghiên cứu Cung cấp nguồn tài liệu cho sinh viên, lập trình viên trong việc nghiên cứu 3D và phát triển game.3D và phát triển game.
5/14
Nhiệm vụ của đề tàiNhiệm vụ của đề tài
Bao gồm 4 nhiệm vụ:Bao gồm 4 nhiệm vụ:
1.1. Mô phỏng được các hiệu ứng tự nhiên như bầu trời, bản đồ địa hình, Mô phỏng được các hiệu ứng tự nhiên như bầu trời, bản đồ địa hình,
nước, lửa, ánh sáng, sương mù, đổ bóng, chuyển động nhân vật...nước, lửa, ánh sáng, sương mù, đổ bóng, chuyển động nhân vật...
Xây dựng được một game engine đa nền tảng.Xây dựng được một game engine đa nền tảng.
2.2. Nghiên cứu lý thuyết về opengl es 2.0, các biến đổi 3D, 2D, phương Nghiên cứu lý thuyết về opengl es 2.0, các biến đổi 3D, 2D, phương
pháp tạo hiệu ứng mô phỏng tự nhiên, và cấu trúc game đa nền tảng.pháp tạo hiệu ứng mô phỏng tự nhiên, và cấu trúc game đa nền tảng.
3.3. Vận dụngVận dụng môi trường, công cụ để giải quyết môi trường, công cụ để giải quyết vấn đề đặt ra.vấn đề đặt ra.
4.4. ĐĐánh giáánh giá kết quả đạt được, và hướng phát triển của đề tài. kết quả đạt được, và hướng phát triển của đề tài.
6/14
Dự kiến phương pháp triển khaiDự kiến phương pháp triển khai Dựa vào các tài liệu về thư viện đồ họa OpenGL ES 2.0 và DirectX, các Dựa vào các tài liệu về thư viện đồ họa OpenGL ES 2.0 và DirectX, các
nguồn tài liệu khác sưu tầm.nguồn tài liệu khác sưu tầm.
Tìm hiểu các phép biến đổi trong 3D, các tính toán về vector, ma trận, Tìm hiểu các phép biến đổi trong 3D, các tính toán về vector, ma trận, chuyển động tương đối…chuyển động tương đối…
Các đối tượng nghiên cứu:Các đối tượng nghiên cứu: Nghiên cứu cách làm việc của OpenGL ES 2.0, các thành phần cơ bản, cách Nghiên cứu cách làm việc của OpenGL ES 2.0, các thành phần cơ bản, cách
thức để vẽ các đối tượng hình học cơ bản.thức để vẽ các đối tượng hình học cơ bản. Nghiên cứu các hiệu ứng, mô phỏng tự nhiên, các đối tượng thường thấy trong Nghiên cứu các hiệu ứng, mô phỏng tự nhiên, các đối tượng thường thấy trong
game, mô hình động.game, mô hình động. Cấu trúc game và đa nền tảng.Cấu trúc game và đa nền tảng.
Phạm vi nghiên cứuPhạm vi nghiên cứu Nghiên cứu một số đối tượng, hiệu ứng thường gặp như: bầu trời, địa hình, lửa, Nghiên cứu một số đối tượng, hiệu ứng thường gặp như: bầu trời, địa hình, lửa,
Giới thiệu về thư viện OpenGL ESGiới thiệu về thư viện OpenGL ESOpenGL là một thư viện lập trình đồ họa 2D, 3D mã nguồn mở, có thể OpenGL là một thư viện lập trình đồ họa 2D, 3D mã nguồn mở, có thể
chạy trên nhiều nền tảng khác nhau.chạy trên nhiều nền tảng khác nhau.
OpenGL ES là một thiết kế rút gọn của OpenGL dùng cho các thiết bị di OpenGL ES là một thiết kế rút gọn của OpenGL dùng cho các thiết bị di động và cầm tay.động và cầm tay.
Hoạt động của OpenGL ESHoạt động của OpenGL ES
Hình 1: Mô hình máy khách – chủ của OpenGL
8/14
Cơ sở lý thuyếtCơ sở lý thuyết
Nguyên lý hoạt động và kiểu dữ liệuNguyên lý hoạt động và kiểu dữ liệu
Hình 2: Nguyên lý hoạt động
Các kiểu dữ liệu trong OpenGL được bắt đầu với tiền tố “GL”
STTTên kiểu ( OpenGL) Tên kiểu (C/C++) Kích thước
1 GLbyte char Số nguyên có dấu 8 bit
2 GLubyte unsigned char Số nguyên không dấu 8 bit
3 GLfloat float Số thực 4 byte
4 GLint int Số nguyên có dấu 4 byte
5 GLuint unsigned int Số nguyên có dấu 4 byte
9/14
Cơ sở lý thuyếtCơ sở lý thuyết
Hệ trục tọa đồ và thiết bị chuẩn NDCHệ trục tọa đồ và thiết bị chuẩn NDC
Hình: Sự khác nhau giữa quy tắc bàn tay trái và bàn tay phải.
Hình: Tam giác được vẽ trong NDC
10/14
Cơ sở lý thuyếtCơ sở lý thuyết
Đỉnh, đường thẳng và mặtĐỉnh, đường thẳng và mặt
Hình: Các đỉnh của một tam giácHình: Đường thằng
Hình: Một tam giác còn gọi là mặt ba
11/14
Cơ sở lý thuyếtCơ sở lý thuyết
Điểm ảnh, phân mảnh và hệ màuĐiểm ảnh, phân mảnh và hệ màuĐiểm ảnh là một phần tử trên màn hình có khả năng hiển thị màu sắc.Các màu sắc được tạo nên từ các màu cơ bản gọi là kênh màu, tập hợp các kênh màu để tạo ra một màu sắc gọi là hệ màu.
Hình: Tương quan giữa đỉnh và phân mảnh Hình: Hệ màu RGB
12/14
Cơ sở lý thuyếtCơ sở lý thuyết
Quá trình vẽ tam giácQuá trình vẽ tam giác
Dữ liệu đỉnhvà các hằng
Vertex shaderXử lý các đỉnh
- Lắp ráp hình học- Loại bỏ vùng ngoài NDC- Xét mặt trước mặt sau
Rời rạc hóa và Tính toán nội suy
Kiểm tra độ sâu sớm
Fragment shaderXử lý các phân mảnh
- Kiểm tra giá trị alpha- Kiểm tra độ sâu- Kiểm tra vùng thiết lập- Kiểm tra mở rộng
Trộn màuVẽ lên màn hình
1 - Dữ liệu đỉnh 2 – Nội suy các phân mảnh
3 – Xử lý các phân mảnh
4 – Kết quả
Hình: Quá trình vẽ tam giác
13/14
Cơ sở lý thuyếtCơ sở lý thuyết
ShaderShader
Có 2 loại shader là vertex shader và fragment shader tương ứng với 2 quá Có 2 loại shader là vertex shader và fragment shader tương ứng với 2 quá trình ở mô hình đường ống.trình ở mô hình đường ống.
Xử lý và tạo các hiệu ứng, biến đổi các đối tượng.Xử lý và tạo các hiệu ứng, biến đổi các đối tượng.
Hình: Biên dịch và sử dụng shader
14/14
Cơ sở lý thuyếtCơ sở lý thuyết
Model và TextureModel và Texture
Hình: Sự kết hợp giữa model với texture tạo ra các nhân vật tĩnh trong 3D
15/14
Cơ sở lý thuyếtCơ sở lý thuyết
Các thức làm việc của TextureCác thức làm việc của Texture
Hình : Hệ tọa độ texture (texcoord)
Hình : Tương quan giữa model và texcoord
16/14
Cơ sở lý thuyếtCơ sở lý thuyết
Hệ tọa độ đồng nhấtHệ tọa độ đồng nhấtHệ tọa độ đồng nhất cho phép các biến đổi Affine có thể được biểu diễn trong Hệ tọa độ đồng nhất cho phép các biến đổi Affine có thể được biểu diễn trong
một ma trận. Một điểm n chiều được biểu diễn trong không hệ tọa độ đồng một ma trận. Một điểm n chiều được biểu diễn trong không hệ tọa độ đồng nhất thành n + 1 chiều. Trong hệ tọa độ đồng nhất, hai tọa độ tỉ lệ với nhau nhất thành n + 1 chiều. Trong hệ tọa độ đồng nhất, hai tọa độ tỉ lệ với nhau cùng xác định 1 điểm.cùng xác định 1 điểm.
Hình: biễu diễn 2 đường thẳng song song cắt nhau ở vô tận
17/14
Cơ sở lý thuyếtCơ sở lý thuyết
Các phép biến đổi AffineCác phép biến đổi Affine
Phép dịch chuyểnPhép quay quanh trục
Phép tỉ lệ
18/14
Phép chiếuPhép chiếu
Phép chiếu phối cảnh Phép chiếu vuông góc
Thị trường phép chiếu
19/14
Cơ sở lý thuyếtCơ sở lý thuyết
Hệ tọa độHệ tọa độ
Tương quan giữa 2 hệ tọa độ Biến đổi qua lại giữa 2 hệ tọa độ
Hệ tọa độ
20/14
Cơ sở lý thuyếtCơ sở lý thuyết
Các không gian chínhCác không gian chính
Hệ tọa độ địa phương Hệ tọa độ thực
Hệ tọa camera
21/14
Mô phỏng tự nhiênMô phỏng tự nhiên
Bầu trờiBầu trời
Sáu mặt của bầu trời
Bầu trời trong game
22/14
Mô phỏng tự nhiênMô phỏng tự nhiên
Địa hình trong gameĐịa hình trong game
Địa hình trong game
23/14
Mô phỏng tự nhiênMô phỏng tự nhiên
Sương mù và phản chiếu môi trườngSương mù và phản chiếu môi trường
Sương mù trên địa hình Phản chiếu môi trường
24/14
Mô phỏng tự nhiênMô phỏng tự nhiên
Hiệu ứng lửaHiệu ứng lửa
Hiệu ứng lửa
25/14
Mô phỏng tự nhiênMô phỏng tự nhiên
Ánh sáng và bóngÁnh sáng và bóng
Các thành phần ánh sáng
Đổ bóng
26/14
Mô phỏng tự nhiênMô phỏng tự nhiên
Hiệu ứng nướcHiệu ứng nước
27/14
Mô phỏng tự nhiênMô phỏng tự nhiên
Mô hình độngMô hình động
Bộ xương
28/14
Xây dựng Game EngineXây dựng Game Engine
Trạng thái gameTrạng thái game
29/14
Xây dựng Game EngineXây dựng Game Engine
Vòng lặp gameVòng lặp game
30/14
Xây dựng Game EngineXây dựng Game Engine
Cấu trúc game engineCấu trúc game engine
31/14
Xây dựng Game EngineXây dựng Game Engine
Cấu trúc game đa nền tảngCấu trúc game đa nền tảng
Device
Input Manager File Manager
GameView GameEvent
32/14
Xây dựng Game EngineXây dựng Game Engine
Một số thuật toán tiêu biểuMột số thuật toán tiêu biểu
Vùng chạm
33/14
Xây dựng Game EngineXây dựng Game Engine
Hướng đi và tính toán độ cao bản đồHướng đi và tính toán độ cao bản đồ
Hướng đi Độ cao P được tính bằng độ cao trung bình 3 điểm gần nhất
34/14
Đánh giá kết quả đạt đượcĐánh giá kết quả đạt được
DemoDemo
Màn hình loading Màn hình trong game
35/14
Đánh giá kết quả đạt đượcĐánh giá kết quả đạt được
Đánh giá kết quả :Đánh giá kết quả :Tìm hiểu được các kỹ thuật lập trình, các tài nguyên được sử Tìm hiểu được các kỹ thuật lập trình, các tài nguyên được sử
dụng trong lập trình đồ họa 3D, tạo các hiệu ứng, mô phỏng dụng trong lập trình đồ họa 3D, tạo các hiệu ứng, mô phỏng các hiện tượng tự nhiên và đưa vào sử dụng trong game.các hiện tượng tự nhiên và đưa vào sử dụng trong game.
Tìm hiểu được cấu trúc cơ bản của game, cách xây dựng Tìm hiểu được cấu trúc cơ bản của game, cách xây dựng một game đa nền tảng, nắm được các thành phần cơ bản một game đa nền tảng, nắm được các thành phần cơ bản cần thiết cho một game, quản lý tài nguyên, sự kiện trong cần thiết cho một game, quản lý tài nguyên, sự kiện trong game. Xây dựng được một Engine Game đơn giản, cấu trúc game. Xây dựng được một Engine Game đơn giản, cấu trúc rõ ràng giúp người mới có thể dễ dàng tiếp cận và sử dụng.rõ ràng giúp người mới có thể dễ dàng tiếp cận và sử dụng.
Xây dựng được một game thử nghiệm sử dụng Game Engine Xây dựng được một game thử nghiệm sử dụng Game Engine đã xây dựng kết hợp với những hiệu ứng và kỹ thuật đã tìm đã xây dựng kết hợp với những hiệu ứng và kỹ thuật đã tìm hiểu trên hệ điều hành Window và Android.hiểu trên hệ điều hành Window và Android.
36/14
Đánh giá kết quả đạt đượcĐánh giá kết quả đạt được
Hạn chếHạn chếGame Engine mới hỗ trợ trên 2 hệ điều hành là Window và Game Engine mới hỗ trợ trên 2 hệ điều hành là Window và
Android, các hệ điều hành khác chưa hỗ trợ.Android, các hệ điều hành khác chưa hỗ trợ.
Một số hiệu ứng chưa có độ chính xác cao như hiệu ứng đổ bóng, Một số hiệu ứng chưa có độ chính xác cao như hiệu ứng đổ bóng, bản đồ địa hình, nước…bản đồ địa hình, nước…
Do hạn chế về mặt thời gian nên còn khá nhiều hiệu ứng, mô Do hạn chế về mặt thời gian nên còn khá nhiều hiệu ứng, mô phỏng trong kỹ thuật 3D chưa được tìm hiểu, tương tác vật lý phỏng trong kỹ thuật 3D chưa được tìm hiểu, tương tác vật lý giữa các đối tượng trong game còn đơn giản.giữa các đối tượng trong game còn đơn giản.
Chưa hỗ trợ âm thanh có thể chạy trên nhiều nền tảng, chưa hỗ Chưa hỗ trợ âm thanh có thể chạy trên nhiều nền tảng, chưa hỗ trợ vẽ các chuỗi ký tự ra.trợ vẽ các chuỗi ký tự ra.
37/14
Kết luậnKết luận Đánh giá chung :Đánh giá chung :
Tìm hiểu được các kỹ thuật lập trình 3D với thư viện OpenGL ES 2.0, mô phỏng Tìm hiểu được các kỹ thuật lập trình 3D với thư viện OpenGL ES 2.0, mô phỏng được các hiệu ứng tự nhiên, và tìm hiểu được cấu trúc game đa nền tảng.được các hiệu ứng tự nhiên, và tìm hiểu được cấu trúc game đa nền tảng.
Đã hoàn thành hầu hết các mục đích đã đặt ra.Đã hoàn thành hầu hết các mục đích đã đặt ra. Sử dụng cho các bạn sinh viên, lập trình viên đồ họa 3D mới vào.Sử dụng cho các bạn sinh viên, lập trình viên đồ họa 3D mới vào.
Đánh giá kiến thức thu lượm được :Đánh giá kiến thức thu lượm được : Hiểu vận dụng được Hiểu vận dụng được nhữngnhững kiến thức 3D, cấu trúc game, phục vụ cho việc nghiên kiến thức 3D, cấu trúc game, phục vụ cho việc nghiên
cứu, tạo ra các game vừa phải, và có thể tiếp cận nhanh các dự án game thực tế.cứu, tạo ra các game vừa phải, và có thể tiếp cận nhanh các dự án game thực tế. Cung cấp nguồn tài liệu cho sinh viên, lập trình viên trong việc nghiên cứu 3D và Cung cấp nguồn tài liệu cho sinh viên, lập trình viên trong việc nghiên cứu 3D và
phát triển game.phát triển game.
Dự kiến khả năng tiếp tục :Dự kiến khả năng tiếp tục : Tìm hiểu và tiếp cận thêm một số nền tảng khác như iOS, Window Phone…Tìm hiểu và tiếp cận thêm một số nền tảng khác như iOS, Window Phone… Tiếp tục tìm hiểu thêm các kỹ thuật mô phỏng, hiệu ứng trong tự nhiên và xây Tiếp tục tìm hiểu thêm các kỹ thuật mô phỏng, hiệu ứng trong tự nhiên và xây
dựng quản lý tương tác vật lý trong Game Engine trở nên hoàn chỉnh hơn.dựng quản lý tương tác vật lý trong Game Engine trở nên hoàn chỉnh hơn. Hỗ trợ âm thanh có thể chạy trên nhiều nền tảng khác nhau, hỗ trợ vẽ xâu chữ Hỗ trợ âm thanh có thể chạy trên nhiều nền tảng khác nhau, hỗ trợ vẽ xâu chữ