Download miễn phí Đề tài Nghiên cứu và xây dựng thử nghiệm 3D ENGINE





MỤC LỤC
LỜI CẢM ƠN . i
LỜI MỞ ĐẦU . ii
MỤC LỤC . iv
DANH SÁCH CÁC HÌNH. viii
DANH SÁCH CÁC BẢNG. x
MỘT SỐTỪVIẾT TẮT . xi
Chương 1 Tổng quan . 1
1.1. Game Engine và 3D Engine.2
1.2. Mối quan hệgiữa Game Engine và Game .3
1.3. Phân loại Game Engine.3
1.3.1. Isometric Engine .3
1.3.2. 3D FPS (First Person Shooter) Engine .4
1.3.3. MMOG (Massive Multiplayer Online Game) Engine.4
1.4. Một sốGame Engine hiện nay .5
1.5. Tóm tắt .8
Chương 2 Vertex Shader và Pixel Shader . 9
2.1. Tổng quan.10
2.2. Qui trình xửlý đồhọa (Graphic Pipeline) .10
2.3. Vertex Shader.12
2.3.1. Xửlý vertex bằng Fixed Function Pipeline .12
2.3.2. Máy ảo Vertex Shader .13
2.3.3. Cấu trúc của 1 chương trình Vertex Shader bằng hợp ngữ.15
2.4. Pixel Shader .17
2.4.1. Xửlý điểm ảnh bằng Fixed Function Pipeline .17
2.4.2. Máy ảo Pixel Shader .21
2.4.3. Cấu trúc của 1 chương trình Pixel Shader bằng hợp ngữ.23
2.5. Sửdụng Vertex Shader và Pixel Shader trong chương trình .24
2.6. Giới thiệu HLSL.27
2.7. Tóm tắt .28
Chương 3 Nwfc Engine. 29
3.1. Tổng quan.30
3.1.1. Lý do xây dựng .30
3.1.2. Giới thiệu .30
3.2. Các tính năng của Nwfc Engine.31
3.3. Mô hình xây dựng Nwfc Engine.32
3.4. Cấu trúc của Nwfc Engine .33
- v -
3.4.1. Các thành phần trong Nwfc module .34
3.4.2. Các thành phần trong RendererDX9 module.36
3.5. Hệthống chất liệu (material) .37
3.5.1. Giới thiệu .37
3.5.2. Cấu trúc của hệthống chất liệu (material) .38
3.5.3. Material .39
3.5.4. Textures.41
3.5.4.1. Phân loại texture dùng trong Engine .41
3.5.4.2. Texture flags .44
3.5.5. Shader.44
3.5.5.1. Giới thiệu tập tin Effect .46
3.5.5.2. Định dạng tập tin Effect .46
3.5.6. Sửdụng Vertex Shader và Pixel Shader trong Engine .48
3.5.6.1. Vertex Shader trong Engine .49
3.5.6.2. Pixel Shader .54
3.6. Tóm tắt .54
Chương 4 Các thuật toán Vertex và Pixel Shader . 55
4.1. Lời nói đầu .56
4.2. Đổbóng thời gian thực Shadow Volume.56
4.2.1. Cơsởlý thuyết .56
4.2.2. Vertex Shader cho Shadow Volume .62
4.2.3. Một sốkết quả đạt được.63
4.3. Khung cảnh bầu trời (skybox).64
4.3.1. Cơsởlý thuyết .64
4.3.2. Vertex Shader cho skybox .66
4.3.3. Một sốkết quả đạt được.67
4.4. Chiếu sáng theo điểm ảnh sửdụng normal map và specular map .69
4.4.1. Cơsởlý thuyết .69
4.4.2. Vertex Shader và Pixel Shader cho per-pixel lighting.75
4.4.3. Một sốkết quả đạt được.77
4.5. Tóm tắt .79
Chương 5 Hệthống diễn hoạt (Animation System). 80
5.1. Giới thiệu hệthống diễn hoạt.81
5.2. Các vấn đềcần giải quyết .81
5.2.1. Tập tin lưu dữliệu diễn hoạt.82
5.2.1.1. Tập tin md5.82
5.2.1.2. Xửlý dữliệu tập tin md5.84
5.2.2. Vấn đềvềkhung xương .85
5.2.2.1. Giới thiệu vềkhung xương.85
5.2.2.2. Tổchức dữliệu .87
5.2.2.3. Cập nhật và di chuyển khung xương .88
5.2.3. Đường dẫn định hướng cho diễn hoạt.89
- vi -
5.2.3.1. Giới thiệu về đường định hướng .89
5.2.3.2. Cập nhật biến đổi trên các đường cơbản .89
5.2.4. Vấn đềvềquản lý diễn hoạt.91
5.2.4.1. Các vấn đềcơbản trong diễn hoạt .91
5.2.4.2. Tổchức quản lý diễn hoạt .93
5.2.5. Kết hợp các diễn hoạt.95
5.2.5.1. Kết hợp các diễn hoạt khác nhau vào khung xương.95
5.2.5.2. Kết hợp các diễn hoạt trong các phần của khung xương.96
5.3. Hệthống diễn hoạt trong thực thi .99
5.3.1. Sơ đồlớp của hệthống diễn hoạt.99
5.3.2. Chức năng các thành phần trong sơ đồ.99
5.3.2.1. Hệthống xửlý dữliệu .99
5.3.2.2. Các lớp quản lý đường dẫn.100
5.3.2.3. Các lớp quản lý diễn hoạt .100
5.4. Tóm tắt .101
Chương 6 Hệthống vật lý (Physics System). 102
6.1. Giới thiệu hệthống vật lý.103
6.2. Các yếu tốcần xửlý trong hệthống vật lý .103
6.3. Engine vật lý NovodeX.104
6.4. Sửdụng NovodeX.107
6.4.1. Kết hợp NovodeX vào Game.107
6.4.2. Cài đặt NovodeX trong ứng dụng .109
6.4.3. Các thành phần trong sơ đồ.110
6.5. Tóm tắt .114
Chương 7 Giới thiệu Game demo Dead Rising . 115
7.1. Giới thiệu Game demo Dead Rising .116
7.2. Nội dung cốt truyện.116
7.3. Các thành phần chính cần sửdụng.118
7.4. Hệthống các tập tin định nghĩa .118
7.4.1. Định nghĩa giao diện (GUI) .119
7.4.2. Định nghĩa hệthống hạt (Particle System) .119
7.4.3. Định nghĩa màn chơi (Map level) .120
7.4.4. Định nghĩa đối tượng và AI .121
7.4.5. Các định nghĩa khác.122
7.5. Tóm tắt .122
Chương 8 Hệthống hạt (Particle System) và AI. 123
8.1. Hệthống hạt (Particle System) .124
8.1.1. Smoke particle system .124
8.1.2. Spark particle system .125
8.1.3. Một sốhệthống hạt được sửdụng trong Game.126
8.2. Trí tuệnhân tạo (AI) .127
- vii -
8.2.1. Cơsởlý thuyết hành vi .127
8.2.2. Sơ đồtrạng thái .129
8.3. Tóm tắt .130
Chương 9 Cài đặt và hướng dẫn sửdụng. 131
9.1. Môi trường phát triển ứng dụng và các công cụ.132
9.2. Kết quả đạt được .132
9.3. Hướng dẫn sửdụng .133
9.3.1. Các phím điều khiển .133
9.3.2. Các chế độchơi.135
9.4. Tóm tắt .141
Chương 10 Tổng kết . 142
10.1. Kết luận .143
10.2. Hướng phát triển và mởrộng .144
PHỤLỤC . 145
TÀI LIỆU THAM KHẢO . 154



Để 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:

ử dụng nguồn sáng, Engine sẽ tự động tìm kiếm và nạp tất cả các Vertex
Shader có tên “vertex_bump_11_x” (x = 1..11) vào bộ nhớ để có thể sử dụng sau
này.
Chương 3. Nwfc Engine
- 54 -
3.5.6.2. Pixel Shader
Hầu hết Pixel Shader trong Engine đi liền với 1 Vertex Shader tương ứng do
Pixel Shader cần dữ liệu input là các output từ Vertex Shader. Pixel Shader trong
Engine không sử dụng các thanh ghi hằng mặc định như Vertex Shader. Danh sách
các Pixel Shader được cài đặt trong Engine.
pixel_bump_20.psh. Là shader chính dùng để các đối tượng có hỗ trợ ánh
sáng và bump bề mặt bằng normal map (dùng chung với vertex_bump_11.vsh).
pixel_glowscreen_11.psh. Dùng để vẽ các vật thể phát sáng như bóng đèn,
màn hình máy tính…
3.6. Tóm tắt
Trong chương này chúng tui trình bày về một số thành phần chính trong Nwfc
Engine. Chi tiết các thuật toán của Vertex Shader và Pixel Shader được cài đặt trong
Nwfc Engine sẽ được trình bày ở chương sau.
Chương 4. Các thuật toán Vertex và Pixel Shader
- 55 -
Chương 4 Các thuật toán Vertex và Pixel Shader
• Lời nói đầu
• Đổ bóng thời gian thực Shadow Volume
• Khung cảnh bầu trời (sky box)
• Chiếu sáng theo điểm ảnh (per-pixel lighting) sử dụng
normal map và specular map
• Tóm tắt
Chương 4. Các thuật toán Vertex và Pixel Shader
- 56 -
4.1. Lời nói đầu
Phần này sẽ trình bày nội dung chi tiết của thuật toán Vertex Shader và Pixel
Shader dùng trong Game demo. Các kết quả thử nghiệm đều được chụp lại từ Game
demo hay từ Engine.
4.2. Đổ bóng thời gian thực Shadow Volume
Trong lĩnh vực đồ họa 3D nói chung cũng như Game 3D nói riêng hiện nay, các
mô hình đổ bóng thời gian thực đang được sử dụng rất rộng rãi, ngoài việc giúp
người quan sát hình dung được vị trí tương đối của vật thể trong không gian 3
chiều, đổ bóng còn góp phần làm cho bối cảnh trở nên gần gũi với thực tế hơn.
Nhận thức được tầm quan trong của việc đổ bóng thời gian thực, hàng loạt các
thuật toán về đổ bóng đã đang được phát triển. Hàng loạt các thuật toán ra đời mà đi
đôi với nó là chất lượng và tốc độ, trong đó có 2 thuật toán được sử dụng nhiều
trong việc dựng hình 3D thời gian thực là Shadow Volume và Shadow Map. Báo
cáo trong phần này sẽ đề cập tới cơ sở lý thuyết và áp dụng của thuật toán Shadow
Volume trong Nwfc Engine.
4.2.1. Cơ sở lý thuyết
¾ Vùng bóng tối (Shadow Volume)
Vùng bóng tối (shadow volume) của một vật thể là 1 khối khu vực trong không
gian bị bao phủ bởi bóng tối của vật đó do một nguồn sáng phát ra. Khi dựng hình,
tất cả các vật thể khác nằm trong vùng bóng tối đều không được chiếu sáng bởi
nguồn sáng tạo ra vùng tối đó.
Mỗi shadow volume của vật thể được cấu tạo bởi 3 phần, phần trước (front cap),
phần sau (back cap), và phần cạnh (side). Phần trước và phần sau của shadow
volume được tạo bởi chính vật thể chắn sáng: phần trước được cấu tạo bởi tất cả các
mặt hướng về phía ánh sáng, còn phần sau thì ngược lại bao gồm các mặt hướng
ngược lại với hướng ánh sáng nhưng được di chuyển ra xa khỏi nguồn sáng theo
phương ánh sáng để cấu thành vùng bóng tối, khoảng di chuyển này phải đủ lớn để
Chương 4. Các thuật toán Vertex và Pixel Shader
- 57 -
vùng bóng tối có thể bao phủ toàn bộ các vật thể khác trong bối cảnh. Phần cạnh
của shadow volume được tạo ra bằng cách kéo dài (extrude) các cạnh bao
(silhouette edges) theo phương chiếu của ánh sáng để tạo thành 1 vùng kín. Sau đây
là hình mô tả các phần của 1 vùng bóng tối.
Hình 4-1 Mô tả các phần của shadow volume
¾ Cạnh bao (silhouette edge)
Điều kiện tiên quyết của thuật toán đổ bóng là ta phải tính được hình khối của
shadow volume mà nội dung chính là ta phải tìm được các cạnh bao. Một cạnh (bất
kỳ) được cấu tạo bởi hai điểm và có từ 1 đến 2 mặt kề liền với nó, cạnh đó được gọi
là cạnh bao khi nó chỉ có 1 mặt kề hay có 2 mặt kề nhưng một mặt hướng về phía
ánh sáng trong khi mặt còn lại thì không.
Hình 4-2 Cạnh bao là cạnh có một mặt kề hướng ánh sáng còn mặt còn lại thì không
Thực tế việc tìm cạnh bao đã được phát triển thành 2 thuật toán hoàn toàn riêng
biệt.
Chương 4. Các thuật toán Vertex và Pixel Shader
- 58 -
 Thuật toán 1: Kiểm tra tất cả các tam giác của vật thể để tìm các cạnh có tính
chất của cạnh bao. Thuật toán 1 tìm cạnh bao như sau:
Bước 1: Lặp cho tất cả các tam giác của vật thể.
Bước 2: Nếu tam giác hướng về phía nguồn sáng ( tích vô hướng của vector hướng ánh
sáng và vector pháp tuyến của tam giác đó >= 0):
Bước 2-a: Chèn 3 cạnh (là 3 cặp vertices) của tam giác đó vào edge stack.
Bước 2-b: Kiểm tra trong stack xem 3 cạnh vừa chèn đó đã xuất hiện rồi hay chưa
(tính luôn thứ tự đảo của cạnh, ví dụ AB = BA).
Bước 2-c: Nếu cạnh đó đã tồn tại trước trong stack, gỡ bỏ cả hai cạnh khỏi stack.
Bước 3: Cuối cùng, các cạnh còn lại trong stack là các cạnh bao.
Ưu điểm:
Đơn giản do sử dụng CPU để thực hiện.
Shadow volume tạo ra có số mặt tối thiểu, render nhanh.
Khuyết điểm:
Tốc độ chậm do phải tính toán nhiều.
Skinning (dùng cho diễn hoạt khung xương) phải thực hiện trước trên CPU.
 Thuật toán 2: Tạo ra một vật thể mới (shadow volume mesh) từ vật thể chắn
sáng nhưng có thêm các mặt được bổ sung ở các cạnh, rồi dùng Vertex Shader để
tạo hình khối của shadow volume.
Ưu điểm:
Tốc độ nhanh do thực hiện ngay trên GPU (Vertex Shader), giải phóng CPU.
Có thể thực hiện skinning trên phần cứng.
Khuyết điểm:
Phức tạp do thuật toán tạo vật thể mới, việc tính toán chậm.
Phải sử dụng thêm Vertex Shader.
Shadow Volume có số mặt tạo ra lớn hơn rất nhiều so với vật thể gốc, render
sẽ chậm hơn.
Chương 4. Các thuật toán Vertex và Pixel Shader
- 59 -
Sử dụng thuật toán 2 cho ra tốc độ nhanh hơn hẳn thuật toán 1 dù khi render có
chậm hơn do có nhiều mặt hơn. Vì ưu điểm về tốc độ nên thuật toán 2 cũng là thuật
toán mà Engine chọn để sử dụng nên sẽ được trình bày kỹ ở phần sau.
¾ Cách tạo Shadow Volume Mesh
Như ta đã biết nội dung chủ yếu của thuật toán 2 là phải tính được shadow
volume mesh và dùng Vertex Shader để tạo hình khối shadow volume từ mesh này.
Hình vẽ sau đây minh họa cách tạo ra shadow volume mesh.
Hình 4-3 Dựng shadow volume mesh bằng các thêm vào các mặt phụ
Thuật toán tạo shadow volume mesh:
Bước 1: Lặp cho tất cả các mặt trong vật thể
Bước 2: Tính vector pháp tuyến cho mỗi mặt.
Bước 3: Lặp cho 3 cạnh của mỗi mặt.
Bước 3-a: Thêm cạnh đó vào 1 list kiểm tra.
Bước 3-b: Nếu cạnh đó đã xuất hiện ở trong list ( ta đã tìm thấy cạnh được dùng chung
cho 2 mặt):
+ Nếu pháp tuyến của các mặt kề cạnh đó không song song với nhau, thêm 1 tứ
giác (degenerate quad) vào list kết quả.
+ Ngược lại, chỉ thêm cạnh đó vào list kết quả.
Bước 3-c: Gỡ bỏ cạnh đang xử lý và các cạnh tương tự ra khỏi list kiểm tra.
Bước 4: Tạo mảng dữ liệu để chứa dữ liệu của shadow volume mesh, mỗi vertex của
shadow volume mesh chỉ gồm vị trí và pháp tuyến mà thôi.
Bước 5: Nếu còn cạnh nào trong list kiểm tra thì vật thể đang xử lý không phải ...
 
Các chủ đề có liên quan khác

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

Top