1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng game Highway bằng OpenGL ES 2.0.

59 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng game Highway bằng OpenGL ES 2.0
Tác giả Nguyễn Thị Ngọc Thúy
Người hướng dẫn ThS. Lê Thị Bích Hồng
Trường học Đại học Đà Nẵng
Chuyên ngành Tin học
Thể loại đồ án
Năm xuất bản 2014
Thành phố Đà Nẵng
Định dạng
Số trang 59
Dung lượng 2,02 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

CẤU TRÚC LUẬN VĂN Ngoài phần mở đầu và kết luận, luận văn được tổ chức thành ba chương: Chương 1: Cơ sở lý thuyết Ở chương này giới thiệu về thư viện đồ họa OpenGL ES 2.0, các khái niệ

Trang 1

KHOA TIN HỌC

Đề tài:

XÂY DỰNG GAME HIGHWAY

BẰNG OPENGL ES 2.0

Sinh viên thực hiện : Nguyễn Thị Ngọc Thúy

Lớp : 10CNTT4

Đà Nẵng,

Trang 2

LỜI CẢM ƠN

Lời đầu tiên em xin bày tỏ lòng biết ơn sâu sắc đến tất cả quý thầy cô khoa Tin học trường đại học Sư phạm – Đại học Đà Nẵng đã tận tình dạy dỗ, truyền đạt cho em những kiến thức quý giá trong suốt những năm học tại trường, là tiền

đề và cơ sở giúp cho em thực hiện đồ án này

Xin chân thành cảm ơn cô Lê Thị Bích Hồng đã tận tình chỉ bảo, hướng dẫn

và giúp đỡ cho em trong suốt quá trình thực hiện để hoàn thành đồ án này đúng thời hạn

Trong suốt quá trình thực hiện đồ án, mặc dù đã cố gắng hết mình để hoàn thành, tuy nhiên, do kinh nghiệm và vốn kiến thức còn hạn chế nên không tránh khỏi những thiếu sót Em rất mong nhận được sự góp ý, nhận xét của các thầy cô và các bạn

Em xin chân thành cảm ơn !

Sinh viên

Nguyễn Thị Ngọc Thúy

Trang 3

LỜI CAM ĐOAN

Em xin cam đoan:

1 Những nội dung trong báo cáo này là do em thực hiện dưới sự hướng dẫn trực tiếp của cô Lê Thị Bích Hồng

2 Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian và địa điểm công bố

3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trái, em xin chịu hoàn toàn trách nhiệm

Sinh viên thực hiện

Nguyễn Thị Ngọc Thúy

Trang 4

MỤC LỤC

MỞ ĐẦU 1

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 3

1.1 Giới thiệu về thư viện đồ họa OpenGL 3

1.1.1 OpenGL là gì? 3

1.1.2 Cấu trúc lệnh trong OpenGL 4

1.2 Giới thiệu về thư viện đồ họa OpenGL ES 4

1.2.1 OpenGL ES là gì? 4

1.2.2 Hệ trục tọa độ và thiết bị chuẩn NDC 5

1.3 Các khái niệm đồ họa cơ bản 5

1.4 Mô hình đường ống – Quá trình vẽ tam giác 7

1.4.1 Mô hình đường ống 7

1.4.2 Quá trình vẽ tam giác 7

1.5 Các thành phần cơ bản đối tượng 10

1.5.1 Shader 10

1.5.2 Model 13

1.5.3 Texture 14

1.6 Các phép biến đổi Affine trong 3D 14

1.6.1 Hệ tọa độ đồng nhất 14

1.6.2 Phép biến đổi tịnh tiến 15

1.6.3 Phép biến đổi quay quanh trục 15

1.6.4 Phép biến đổi tỉ lệ 16

1.6.5 Thứ tự các phép biến đổi 17

1.6.6 Phép chiếu 18

1.7 Hệ tọa độ 3D và đối tượng camera 19

1.7.1 Hệ tọa độ 3D 19

1.7.2 Hệ tọa độ đối tượng 20

1.7.3 Hệ tọa độ thế giới thực 20

1.7.4 Hệ tọa độ camera 21

Trang 5

1.8 Tổng quan về Android 23

1.8.1 Android là gì? 23

1.8.2 Các tính năng mở của Android 23

1.8.3 Một số phiên bản của Android 23

CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ GAME HIGHWAY 25

2.1 Kịch bản của game 25

2.2 Phân tích yêu cầu 25

2.3 Đặc tả chức năng của game 26

2.3.1 Biểu đồ Use case 26

2.3.2 Mô tả Actor 27

2.4 Xây dựng game engine 27

2.4.1 Trạng thái game và vòng lặp game 27

2.4.2 Xây dựng cấu trúc game 29

2.4.3 Xử lý va chạm giữa các đối tượng 35

2.5 Xây dựng cầu nối của game trên Windows và Android 36

2.5.1 Trên Windows 36

2.5.2 Trên Android 37

2.5.3 Port từ C++ qua Android 39

CHƯƠNG 3: MỘT SỐ KẾT QUẢ ĐẠT ĐƯỢC 41

KẾT LUẬN 45

TÀI LIỆU THAM KHẢO 46

PHỤ LỤC 47

Trang 6

DANH SÁCH TỪ VIẾT TẮT

1 API Viết tắt của Application Programming Interface

có nghĩa là các phương thức lập trình ứng dụng

2 Game Các trò chơi nói chung trên các thiết bị điện tử

3 Game Engine Mô hình thiết kế, xây dựng các thành phần cần

thiết để xây dựng một game hoàn chỉnh

4 3D, 2D Không gian ba chiều hoặc hai chiều

5 OpenGL Một thư viện lập trình đồ họa 3D và 2D

6 OpenGL ES Một thư viện lập trình đồ họa 2D, 3D dành cho

11 Shader Một loại chương trình dùng để xử lý các đỉnh

hoặc phân mảnh cho GPU hoạt động

12 Vertex Đỉnh của tam giác

13 Fragment Phân mảnh các mặt

14 GLUT Glut là 1 thư viện cung cấp các hàm để tạo cửa

sổ Window cho chương trình

15 NDC Là môi trường thiết bị chuẩn (NDC: Normal

Device Context)

Trang 7

DANH MỤC CÁC HÌNH ẢNH

Hình 1: Sự khác nhau giữa quy tắc bàn tay trái và bàn tay phải 5

Hình 2: Tọa độ trong NDC 5

Hình 3: Hệ màu RGB 6

Hình 4: Mô hình đường ống trong OpenGL ES 2.0 7

Hình 5: Quá trình lắp ráp các đỉnh 8

Hình 6: Biên dịch Biên dịch Vertex shader và Fragment shader 13

Hình 7: Mô hình 3D 13

Hình 8: Kết hợp mô hình với hình ảnh tạo ra nhân vật 14

Hình 9: Tịnh tiến một điểm 15

Hình 10: Phép quay quanh trục 16

Hình 11: Phép chiếu tỉ lệ 17

Hình 12: Áp dụng phép quay sau đó áp dụng phép biến đổi tỷ lệ 17

Hình 13: Áp dụng phép biến đổi tỷ lệ trước khi áp dụng phép biến đổi quay 17

Hình 14: Áp dụng phép biến đổi tịnh tiến trước khi quay 18

Hình 15: Áp dụng phép biến đổi quay trước khi tịnh tiến 18

Hình 16: Hình ảnh phép chiếu phối cảnh 19

Hình 17: Hình ảnh phép chiếu vuông góc 19

Hình 18: Hệ trục tọa độ 20

Hình 19: Đối tượng trong hệ tọa độ của nó 20

Hình 20: Đối tượng trong hệ tọa độ thế giới thực 21

Hình 21: Các đối tượng trong thế giới thực dưới góc nhìn của camera 22

Hình 22: Sơ đồ biến đổi đối tượng vào NDC 22

Hình 23: Sơ đồ Use case 26

Hình 24: Mô hình chuyển đổi trạng thái game 28

Hình 25: Vòng lặp game 29

Hình 26: Cấu trúc game engine 30

Hình 27: Lớp dẫn xuất cơ bản của lớp Object 30

Hình 28: Sơ đồ cấu trúc mối quan hệ giữa Resource manager và Scene manager 32

Hình 29: Lớp dẫn xuất của lớp game state 34

Hình 30: Khối hộp bao quanh đối tượng 35

Trang 8

DANH MỤC CÁC BẢNG

Bảng 1: Một số kiểu dữ liệu trong OpenGL 4

Bảng 2: Một số kiểu dữ liệu cơ bản 10

Bảng 3: Bảng phân loại biến 11

Bảng 4: Đặc tả Actor 27

Bảng 5: Đặc tả Use case 27

Trang 9

MỞ ĐẦU

1 LÝ DO CHỌN ĐỀ TÀI

Ngày nay ngành công nghệ phần mềm đang phát triển và ngành công nghiệp phần mềm trên điện thoại di động cũng không nằm ngoài xu thế đó Có thể nói ngành công nghiệp phần mềm còn khá non trẻ Vì vậy việc nghiên cứu và phát triển các ứng dụng trên di động là rất cần thiết

Trong các loại hình giải trí thì game mang lại nhiều lợi nhuận tương đối cao Game là một lĩnh vực luôn có nhu cầu rất cao và thu hút một lượng lớn người dùng không phân biệt độ tuổi

Để hiểu rõ được các kỹ thuật phát triển game trên thiết bị di động, đặc biệt

là xây dựng đồ họa 3D phục vụ nhu cầu học tập và giải trí cho bản thân tôi chọn

đề tài: “Xây dựng game Highway bằng OpenGL ES 2.0”

2 MỤC ĐÍCH CỦA ĐỀ TÀI

- Cũng cố lại các kiến thức đã học về lập trình hướng đối tượng với ngôn ngữ C++, phân tích thiết kế bài toán, trí tuệ nhân tạo, phân tích thiết kế hướng đối tượng…

- Nghiên cứu và tìm hiểu một số nền tảng thông dụng như Windows, Android

- Nghiên cứu các kỹ thuật lập trình đồ họa 3D và thực hiện trên thư viện lập trình đồ họa Opengl ES

- Nghiên cứu cấu trúc game, từ đó xây dựng một game hoàn chỉnh

3 PHƯƠNG PHÁP NGHIÊN CỨU

- Tìm kiếm thông tin liên quan tới quá trình nghiên cứu từ thực tiễn, sách báo, tham khảo Internet

- Tìm hiểu các thư viện đồ họa 3D trong OpenGL ES

- Tìm hiểu các kỹ thuật lập trình trong quá trình thực tập tại công ty Gameloft

Trang 10

4 Ý NGHĨA KHOA HỌC THỰC TIỄN

- Đề tài góp phần nghiên cứu và tạo ra một game nhỏ trên cơ sở game engine xây dựng được

- Làm nguồn tư liệu cho các bạn sinh viên, các lập trình viên muốn tham gia tìm hiểu quá trình xây dựng một game đơn giản

5 CẤU TRÚC LUẬN VĂN

Ngoài phần mở đầu và kết luận, luận văn được tổ chức thành ba chương:

Chương 1: Cơ sở lý thuyết

Ở chương này giới thiệu về thư viện đồ họa OpenGL ES 2.0, các khái niệm

đồ họa cơ bản, các thành phần cơ bản của đối tượng, các phép biến đổi Affine trong 3D Sau đó áp dụng những lý thuyết này để xây dựng game bằng cách vẽ các đối tượng ra màn hình một cách phù hợp

Chương 2: Phân tích thiết kế game Highway

Ở chương này trình bày kịch bản của game, phân tích yêu cầu đặc tả chức năng từ đó xây dựng game engine, xây dựng cầu nối của game trên Windows và Android

Chương 3: Một số kết quả đạt được

Trình bày được một số hình ảnh tiêu biểu của game Highway

Trang 11

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.1 GIỚI THIỆU VỀ THƯ VIỆN ĐỒ HỌA OPENGL [1]

OpenGL hỗ trợ các hàm đồ họa:

- Xây dựng các đối tượng phức tạp từ các thành phần hình học cơ bản

(điểm, đoạn, đa giác, ảnh bitmap)

- Sắp xếp đối tượng trong 3D và chọn điểm thuận lợi để quan sát

- Tính toán màu sắc của các đối tượng (màu sắc của đối tượng được quy

định bởi điều kiện chiếu sáng, texture của đối tượng, mô hình được xây dựng hoặc là kết hợp của cả 2 hoặc 3 yếu tố đó)

- Biến đổi những mô tả toán học của đối tượng và thông tin màu sắc thành

phần các pixel trên màn hình (quá trình này được gọi là rasterization)

- Có API đa nền tảng: Windows, Mac, Linux, Unix

Các hệ thống dùng để nhúng:

- Iphone, Windows mobile…

Dùng cho đa ngôn ngữ:

- C, C++, Python, Ruby, PHP…

Dùng cho cả cách vẽ trong 2D và 3D

Những thứ OpenGL không hỗ trợ:

Trang 12

- 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)

1.1.2 Cấu trúc lệnh trong OpenGL

OpenGL sử dụng tiền tố gl và tiếp theo đó là những từ những từ được viết hoa ở chữ cái đầu để tạo nên tên của một lệnh, ví dụ glClearColor() Tương tự, OpenGL đặt tên các hằng số bắt đầu bằng GL_ và các từ tiếp sau đều được viết hoa và cách nhau bởi dấu ’_’ , Ví dụ: GL_COLOR_BUFFER_BIT

Bên cạnh đó, với một số lệnh, để ám chỉ số lượng cũng như kiểu tham số được truyền, một số hậu tố được sử dụng như trong bảng sau:

n 1: Một số kiểu dữ liệu trong OpenGL

1.2 GIỚI THIỆU VỀ THƯ VIỆN ĐỒ HỌA OPENGL ES

1.2.1 OpenGL ES là gì?

OpenGL ES là một bản rút gọn của OpenGL dành cho các thiết bị di động

và cầm tay, có cấu hình yếu, có khả năng chạy trên nhiều nền tảng, và tương thích với nhiều ngôn ngữ khác nhau

Trong đồ án này, sử dụng OpenGL ES 2.0 để nghiên cứu và phát triển Tất

cả các vấn đề được đề cập đến sau này được mặc định trong OpenGL ES 2.0

Trang 13

1.2.2 Hệ trục tọa độ và thiết bị chuẩn NDC

Theo truyền thống, OpenGL sử dụng quy tắc bàn tay phải để biểu diễu các điểm, vector

H nh 1: Sự khác nhau iữa quy tắc bàn tay trái và bàn tay ph i

NDC là thiết bị điều phối chuẩn, sử dụng quy tắc bàn tay trái (Ngược với OpenGL) được giới hạn trong một hình lập phương (Xem hình 1.2)

Trang 14

Màu sắc, kênh màu và hệ màu

Một màu sắc được tạo thành từ 3 màu cơ bản, tập hợp 3 màu cơ bản để tạo ra các màu sắc còn lại gọi là một hệ màu, mỗi màu cơ bản trong một hệ màu như vậy gọi là một kênh màu, một kênh màu được lưu trữ bằng 1 byte có giá trị từ 0 255

H nh 3: Hệ màu RG

Trang 15

1.4 MÔ HÌNH ĐƯỜNG ỐNG – QUÁ TRÌNH VẼ TAM GIÁC [4]

Kiểm tra độ sâu sớm

Fragment shader

Xử 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

Gán giá trị thuộc tính tọa độ của các đỉnh sau khi đã biến đổi cho biến gl_Position để vẽ ra màn hình Các thuộc tính và các hằng của các đỉnh cần sử dụng cho giai đoạn Fragment shader sẽ được gán cho một biến varying

Đầu ra của quá trình này chính là gl_Position và các varying được khai báo và sử dụng ở trên Vertex shader sẽ được gọi để xử lý cho mỗi đỉnh được truyền vào

Quá trình lắp ráp

Trang 16

Quá trình này sẽ tiến hành gom các đỉnh theo thứ tự để tạo thành các thành phần hình học cơ bản như điểm, đường thẳng hay tam giác

H nh 5: Quá tr nh lắp ráp các đỉnh

Loại bỏ các vùng ngoài hệ tọa độ NDC

Sau khi biến đổi ở vertex shader sẽ có những đỉnh nằm ngoài hệ tọa độ của NDC Quá trình sẽ cắt bỏ các đỉnh và dữ liệu các đỉnh nằm ngoài tọa độ của NDC

Xét mặt trước mặt sau

Nhằm mục đích tối ưu các đối tượng được vẽ, quá trình này sẽ loại bỏ các mặt nằm ở mặt sau (mặt bị che khuất), chỉ giữ lại các mặt ở trước (mặt sẽ nhìn thấy)

Nội suy tuyến tính

Quá trình này sẽ dựa vào các varying của mỗi đỉnh đã được khai báo ở Vertex shader, để tính toán nội suy các giá trị varying tương ứng cho mỗi fragment được tạo ra từ quá trình rời rạc hóa ở trên Ví dụ như màu sắc, tọa

độ

Trang 17

Kiểm tra độ sâu sớm

Phép kiểm tra thông dụng nhất là kiểm tra độ sâu (Depth Test) Theo đó, trên cùng một tia chiếu, những điểm nằm ở xa sẽ bị che khuất bởi những điểm nằm gần hơn (nếu có) Tùy theo thiết bị, việc kiểm tra độ sâu này có thể được thực hiện trước (Early Depth Test) hoặc sau khi gọi Fragment Shader Ngoài việc đảm bảo hiệu ứng gần-xa, kiểm tra độ sâu sớm còn có lợi ích giảm số

lượng phân mảnh cần xử lý và do đó tăng tốc độ tính toán

Fragment shader sẽ được gọi một lần cho một phân mảnh được tạo ra Khi vẽ một tam giác với ba đỉnh thì có rất nhiều phân mảnh, nên Fragment shader sẽ được gọi rất nhiều lần Do đó, cần hạn chế những tính toán không cần thiết trong Fragment shader

Kiểm tra

Quá trình này sẽ kiểm tra lại một số ràng buộc, phân mảnh nào không thõa mãn sẽ bị loại và không được vẽ ra màn hình sau quá trình Fragment shader

Trộn màu

Một phân mảnh nếu có độ trong suốt (alpha) thì thường không thể che khuất hoàn toàn những phân mảnh nằm sau nó Khi đó, màu của nó sẽ được pha trộn với màu của các phân mảnh nằm phía sau Thao tác này gọi là pha màu và là thao tác không bắt buộc

Trang 18

Tương ứng với hai giai đoạn Vertex shader và Fragment shader ở mô hình đường ống ta có hai loại shader tương ứng:

 Vertex shader: là shader chuyên làm nhiệm vụ biến đổi toạ độ (quay, tịnh tiến, co giãn, chiếu, ) và thông tin của các đỉnh đầu vào

 Fragment shader: là shader chuyên làm nhiệm vụ tính toán các hiệu ứng màu sắc cho các phân mảnh

Ngôn ngữ lập trình shader

Ngôn ngữ sử dụng để lập trình shader gọi là GLSL (viết tắt của OpenGL Shading Language) được thiết kế dựa trên ngôn ngữ C hỗ trợ xử lý số thực dấu chấm động sử dụng để xử lý các hiệu ứng đồ họa

3 vec2, vec3, vec4, ivec2, ivec3,

ivec4

Kiểu struct float, struct int

4 mat2, mat3, mat4 Kiểu ma trận

5 sampler2D, samplerCube Kiểu dữ liệu đặc biệt liên qua đến hình

ảnh

n 2: Một số kiểu dữ liệu cơ b n

Trang 19

STT Loại Mô tả

1 attribute Dành cho các biến toàn cục ở Vertex shader, để nhận dữ liệu là

các thuộc tính của mỗi đỉnh được truyền từ RAM sang VRAM

2 uniform Dành cho các biến toàn cục ở cả Vertex shader và Fragment

shader, để nhận dữ liệu là các hằng của tất cả các đỉnh của một đối tượng được truyền từ RAM sang VRAM

3 varying Dành cho các biến toàn cục, dùng để tính toán nội suy giữa các

đỉnh

n 3: B n phân loại biến

Ngôn ngữ GLSL cung cấp sẵn các hàm tính toán liên quan đến vector,

ma trận để hỗ trợ việc lập trình và biến đổi

Cách truyền thông tin vào shader

Để truyền dữ liệu từ RAM sang VRAM cho shader xử lý ta làm các bước sau:

Bước 1: Khai báo sử dụng chương trình bằng lệnh:

glUseProgram(program);

Bước 2: Lấy vị trí của thuộc tính hoặc hằng cần truyền trong chương

trình

Bước 3: Truyền dữ liệu vào cho thuộc tính hoặc hằng thông qua vị trí

Trang 20

attribute vec3 a_position;

attribute vec2 a_uv;

uniform mat4 u_WVP;

varying vec2 v_uv;

precision mediump float;

uniform sampler2D u_texture0;

varying vec2 v_uv;

Trang 21

H nh 6: iên dịch iên dịch Vertex shader và Fra ment shader

Sau khiên biên dịch Vertex shader và Fragment shader ta sẽ có một biến lưu trữ chương trình đó Để sử dụng chương trình này để vẽ ta sử dụng câu

Trang 22

Để lấy được các thông tin trên từ file nfg hoặc obj ta đọc lần lượt các

thông tin của các vertex và các fragment đưa vào hai mảng buffer

Cần xác định vị trí cần vẽ lên màn hình

Đưa về phép chiếu phối cảnh

Công việc thiết kế mô hình này thường được các họa sĩ thực hiện, sau đó chúng ta sẽ đọc thông tin các đỉnh của mô hình rồi truyền vào shader để thực hiện vẽ

1.5.3 Texture

Hình ảnh được áp dụng cho một mô hình nào đó để tạo nên một đối tượng 3D hoàn chỉnh

H nh 8: Kết hợp mô h nh với h nh nh tạo ra nhân vật

Kích thước dài, rộng của một hình ảnh thường phải là một số mũ của 2 Đối với những hình ảnh có kích thước khác có thể sẽ không được hiển thị trên một số GPU

1.6 CÁC PHÉP BIẾN ĐỔI AFFINE TRONG 3D [2]

1.6.1 Hệ tọa độ đồng nhất

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

Trang 23

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

Ví dụ: P(x, y, z) là một điểm trong không gian 3 chiều thì được biểu diễn trong hệ tọa độ đồng nhất là P(x, y, z, w) (Với w = 1.0)

1.6.2 Phép biến đổi tịnh tiến

Phép biến đổi tịnh tiến được mô tả bằng cách di chuyển 1 điểm P qua một tọa độ khác P’ trong không gian

H nh 9: Tịnh tiến một điểm

Biểu diễn biến đổi tịnh tiến bằng ma trận:

Chú ý: Đối với biểu diễn vector, người ta luôn quy ước điểm đầu của vector luôn trùng với gốc tọa độ Thực tế thì phép tịnh tiến sẽ không làm thay đổi vector, vì vậy để đảm bảo giá trị vector không bị thay đổi bởi phép tịnh tiến với 1 vector 3 chiều (x, y, z) thì được biễu diển trong hệ tọa độ đồng nhất là (x, y, z, 0)

1.6.3 Phép biến đổi quay quanh trục

Phép biến đổi quay quanh trục được mô tả bằng cách quay một điểm P theo các trục của tọa độ qua một điểm P’ trong không gian

Trang 24

H nh 10: Phép quay quanh trục

 Biểu diễn quay quanh trục Ox qua ma trận:

 Biểu diễn quay quanh trục Oy qua ma trận:

1.6.4 Phép biến đổi tỉ lệ

Qua phép chiếu tỷ lệ thì làm một hình nhỏ có thể to lên và hình to có thể nhỏ đi trong không gian

Trang 25

H nh 11: Phép chiếu tỉ lệ

 Biểu diễn phép tỉ lệ qua ma trận:

[Px’, Py’, Pz’, Pw’] = [Px, Py, Pz, Pw] * [

]

H nh 12: Áp dụn phép quay sau đó áp dụn phép biến đổi tỷ lệ

 Khi thực hiện phép tỷ lên trước các trục của vật không thay đổi nên khi thực hiện phép quay sẽ đúng

H nh 13: Áp dụn phép biến đổi tỷ lệ trước khi áp dụn phép biến đổi quay

Trang 26

 Khi một đối tượng bị ảnh hưởng bởi phép biến đổi quay với phép biến đổi tịnh tiến thì:

 Nếu thực hiện phép biến đổi tịnh tiến trước thì tâm của vật đã bị thay đổi

so với ban đầu nên khi thực hiện phép biến đổi quay thì vật vẽ sẽ bị sai

H nh 14: Áp dụn phép biến đổi tịnh tiến trước khi quay

 Nếu thực hiện phép biến đổi quay trước rồi biến đổi tịnh tiến thì phép biến đổi sẽ đúng vì phép quay thực hiện trước không làm thay đổi tâm của vật so với ban đầu

H nh 15: Áp dụn phép biến đổi quay trước khi tịnh tiến

 Phép biến đổi quay theo ba trục Ox, Oy, Oz

 Đối với phép quay quay ba trục Ox, Oy, Oz sẽ tiến hành quay theo quy tắc “roll-pitch-yaw” tức là quay theo trục Oz trước, đến trục Ox, đến trục

Như ta đã biết, các vật chỉ được vẽ ra nếu các đỉnh nằm trong NDC, tức là

có độ lớn nằm trong đoạn 0 1, trong khi các mô hình đối tượng được thiết kế một cách tự nhiên không bị giới hạn

Trang 27

Các vật và khung cảnh ta nhìn thấy là trong thế giới thật không gian ba chiều, nhưng thiết bị hiển thị là không gian hai chiều Phép chiếu giúp chúng ta biến đổi các vật, khung cảnh từ không gian ba chiều có thể biểu diễn trên không gian hai chiều vào nằm trong NDC nếu nằm trong khoảng nhìn thấy Có hai loại phép chiếu thường được sử dụng: Phép chiếu vuông góc và chiếu xuyên tâm hay chiếu phối cảnh

Phép chiếu phối cảnh cho ta cảm giác các vật ở trong không gian 3D Các vật ở gần thì sẽ nhìn thấy to hơn các vật ở xa

Trang 28

H nh 18: Hệ trục tọa độ

1.7.2 Hệ tọa độ đối tượng

Là hệ tọa độ ban đầu để thiết kế các đối tượng, biễu diễn sự tương quan giữa các thành phần, các mặt tạo nên đối tượng bao gồm các thuộc tính của các đỉnh như: tọa độ, vector pháp tuyến, texcoord

H nh 19: Đối tượn tron hệ tọa độ của nó

1.7.3 Hệ tọa độ thế giới thực

Là hệ tọa độ được dùng để biểu diễn đối tượng về vị trí, tỉ lệ, hướng của vật trong thế giới thực

Trang 29

H nh 20: Đối tượng trong hệ tọa độ thế giới thực

Để biễu diễn một vật trong thế giới thực hay trong hệ tọa độ thế giới thực ta

mô tả đối tượng dựa vào ba thông số: vị trí, tỉ lệ theo ba trục x, y, z và hướng quay theo ba trục x, y, z Từ ba giá trị này ta xác định được ma trận W biến đổi đối tượng vào thế giới thực

W = S(x, y, z) * Rz (a) * Rx (b) * Ry (c) * T(x, y, z)

1.7.4 Hệ tọa độ camera

Các đối tượng trong thế giới thực được quan sát bởi một đối tượng đặc biệt gọi là camera Tùy vào vị trị, hướng nhìn (không cần thiết phóng to thu nhỏ đối tượng camera) của camera ta sẽ vị trí tương đối giữa các vật so với camera sẽ khác nhau

Để biểu diễn camera trong thế giới thực ta dùng ma trận W của nó được tính theo công thức tương tự:

W = Rz (a) * Rx (b) * Ry(c) * T(x, y, z)

Ngày đăng: 09/05/2022, 01:31

HÌNH ẢNH LIÊN QUAN

10 Texture Cube Map Một loại texture có sáu mặt của một hình lập phƣơng, một mặt là một hình ảnh - Xây dựng game Highway bằng OpenGL ES 2.0.
10 Texture Cube Map Một loại texture có sáu mặt của một hình lập phƣơng, một mặt là một hình ảnh (Trang 6)
- 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) - Xây dựng game Highway bằng OpenGL ES 2.0.
pen GL 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) (Trang 12)
1.2.2. Hệ trục tọa độ và thiết bị chuẩn NDC - Xây dựng game Highway bằng OpenGL ES 2.0.
1.2.2. Hệ trục tọa độ và thiết bị chuẩn NDC (Trang 13)
Chỉ có các đối tƣợng có tọa độ thuộc NDC mới đƣợc vẽ ra màn hình, các phần vƣợt ra ngoài giới hạn của NDC sẽ không đƣợc vẽ - Xây dựng game Highway bằng OpenGL ES 2.0.
h ỉ có các đối tƣợng có tọa độ thuộc NDC mới đƣợc vẽ ra màn hình, các phần vƣợt ra ngoài giới hạn của NDC sẽ không đƣợc vẽ (Trang 13)
1.4. MÔ HÌNH ĐƢỜNG ỐNG – QUÁ TRÌNH VẼ TAM GIÁC [4] 1.4.1. Mô hình đƣờng ống - Xây dựng game Highway bằng OpenGL ES 2.0.
1.4. MÔ HÌNH ĐƢỜNG ỐNG – QUÁ TRÌNH VẼ TAM GIÁC [4] 1.4.1. Mô hình đƣờng ống (Trang 15)
Từ 3 đỉnh ta xử kiểu lắp ráp hình học là GL_TRIANGLES để tạo thành các phân mảnh. - Xây dựng game Highway bằng OpenGL ES 2.0.
3 đỉnh ta xử kiểu lắp ráp hình học là GL_TRIANGLES để tạo thành các phân mảnh (Trang 16)
5 sampler2D, samplerCube Kiểu dữ liệu đặc biệt liên qua đến hình ảnh. - Xây dựng game Highway bằng OpenGL ES 2.0.
5 sampler2D, samplerCube Kiểu dữ liệu đặc biệt liên qua đến hình ảnh (Trang 18)
Để vẽ một đối tƣợng 3D lên màn hình cần có các thông tin về model và texture của đối tƣợng đó - Xây dựng game Highway bằng OpenGL ES 2.0.
v ẽ một đối tƣợng 3D lên màn hình cần có các thông tin về model và texture của đối tƣợng đó (Trang 21)
Để vẽ đƣợc một tam giác ta cần thông tin ba đỉnh. Đối với các mô hình phức tạp khác, chúng  ta cần tập hợp của  nhiều tam giác lắp ghép lại thành  một  mô hình hoàn chỉnh - Xây dựng game Highway bằng OpenGL ES 2.0.
v ẽ đƣợc một tam giác ta cần thông tin ba đỉnh. Đối với các mô hình phức tạp khác, chúng ta cần tập hợp của nhiều tam giác lắp ghép lại thành một mô hình hoàn chỉnh (Trang 21)
Cần xác định vị trí cần vẽ lên màn hình. Đƣa về phép chiếu phối cảnh. - Xây dựng game Highway bằng OpenGL ES 2.0.
n xác định vị trí cần vẽ lên màn hình. Đƣa về phép chiếu phối cảnh (Trang 22)
Qua phép chiếu tỷ lệ thì làm một hình nhỏ có thể to lên và hình to có thể nhỏ đi trong không gian - Xây dựng game Highway bằng OpenGL ES 2.0.
ua phép chiếu tỷ lệ thì làm một hình nhỏ có thể to lên và hình to có thể nhỏ đi trong không gian (Trang 24)
H nh 10: Phép quay quanh trục - Xây dựng game Highway bằng OpenGL ES 2.0.
nh 10: Phép quay quanh trục (Trang 24)
Theo ta đã biết hệ tọa độ thiết bị chuẩn NDC bị giới hạn trong một hình lập phƣơng có giới hạn trong đoạn -1..1 - Xây dựng game Highway bằng OpenGL ES 2.0.
heo ta đã biết hệ tọa độ thiết bị chuẩn NDC bị giới hạn trong một hình lập phƣơng có giới hạn trong đoạn -1..1 (Trang 30)
Quá trình render thực hiện vẽ tất cả các đối tƣợng ra màn hình. - Xây dựng game Highway bằng OpenGL ES 2.0.
u á trình render thực hiện vẽ tất cả các đối tƣợng ra màn hình (Trang 36)
- TILLING: CLAMP or REPEAT chỉ chế độ wrap của hình ảnh. - Xây dựng game Highway bằng OpenGL ES 2.0.
or REPEAT chỉ chế độ wrap của hình ảnh (Trang 41)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w