Có thӇ dӉ dàng nhұn thҩy, các thiӃt bӏ sӕ GL ÿӝQJ QKѭ 6PDUWSKRQH L3KRQH$QGURLG« WDEOHW L3DG L3DG PLQLFiF ORҥi máy tính bҧng NKiF« Gҫn trӣ thành vұt bҩWO\WKkQÿӕi vӟi mӛLQJѭӡi, chúng ta sӱ
Trang 2NHҰN XÉT CӪ$*,È29,Ç1+Ѭ ӞNG DҮN
*LiRYLrQKѭӟQJGүQ
Trang 3NHҰN XÉT CӪA HӜ,Ĉ ӖNG XÉT DUYӊT
+ӝLÿӗQJ[pWGX\ӋW
Trang 4Mөc lөc
NHҰN XÉT CӪ$*,È29,Ç1+Ѭ ӞNG DҮN 2
NHҰN XÉT CӪA HӜ,Ĉ ӖNG XÉT DUYӊT 3
MӢ ĈҪU 6
&KѭѫQJ&Ѫ6 Ӣ LÝ THUYӂT 7
1 Khái niӋ Pÿ ӗ hӑa máy tính 7
2 Sӵ phát triӇ n cӫDÿ ӗ hӑDGLÿ ӝng 9
3 Khái niӋ PFѫE ҧn vӅ 3D 12
3.1 HӋ tӑ Dÿ ӝ 3 chiӅ u 12
3.2 9HUWH[ÿ Ӎ nh) 15
3.3 Edge (cҥ nh) 15
3.4 7ULDQJOH 4XDG7DPJLiFYjFiFKuQKÿDJLiF 16
3.5 Normal Vector (Vector pháp tuyӃ n) 16
3.6 Pixel 17
3.7 Texture & Texel 17
3.8 Fragment 17
3.9 Phép chiӃ u song song và phép chiӃ u phӕ i cҧ nh 18
3.10 Các kênh màu (Color channel) 19
4 &iFWKѭYL Ӌ Qÿ ӗ hӑa DirectX, OpenGL và OpenGL ES 2 20
5 Rendering Pipeline (quy trình trình chiӃ u hình ҧ nh) 30
6 Shader 33
7 Các khái niӋ m toán hӑ F'FѫE ҧn 35
8 Ma trұ n MVP 40
9 Texture 43
10 0{KuQKÿ ӕLWѭ ӧng (Model) 44
11 Ngôn ngӳ GLSL 45
12 Cҩ u trúc cӫa mӝ WWUzFKѫLJDPH 48
13 Giӟi thiӋ u vӅ Game Engine 49
&KѭѫQJ3+Æ17Ë&+9¬;Æ<' Ӵ1*Ĉ ӄ TÀI 51
1 Giӟi thiӋ Xÿ Ӆ tài và nӝ i dung game 51
2 Các thành phҫn gӗm có trong game 53
3 ThiӃ t kӃ các lӟSÿ ӕLWѭ ӧng 55
4 ChuyӇ QJDPHWUrQPi\WtQKVDQJÿL Ӌn thoҥi 65
5 Mӝt vài hình ҧnh demo game 69
Trang 5KӂT LUҰ19¬+Ѭ ӞNG PHÁT TRIӆN 73 TÀI LIӊU THAM KHҦO 74
Trang 6MӢ ĈҪU
Ngày nay, sӵ phát triӇn bùng nә cӫa các thiӃt bӏ GLÿӝQJÿmFyWiFÿӝng không nhӓ
tӟL ÿӡi sӕng chúng ta Có thӇ dӉ dàng nhұn thҩy, các thiӃt bӏ sӕ GL ÿӝQJ QKѭ
6PDUWSKRQH L3KRQH$QGURLG« WDEOHWL3DG L3DG PLQLFiF ORҥi máy tính bҧng NKiF« Gҫn trӣ thành vұt bҩWO\WKkQÿӕi vӟi mӛLQJѭӡi, chúng ta sӱ dөng chúng
hҫXQKѭNKҳp mӑLQѫLYjPӑLO~FNKLÿLKӑc, tҥi công sӣNKLÿLFKѫLYӟi bҥn bè, ӣ
QKj«
Chính vì sӵ phә biӃn này, kèm theo sӵ phát triӇQYѭӧt bұc vӅ công nghӋ phҫn cӭng
lүn phҫn mӅm cӫa các thiӃt bӏ GLÿӝQJÿmELӃn nhӳng chiӃFÿLӋn thoҥi chӍ có màn
hình trҳQJÿHQQJKHJӑi nhҳQWLQQJj\[ѭDWUӣ WKjQKQKѭQJFӛ máy mҥnh mӁ vӟi
cҩu hình mҥnh, hӋ ÿLӅXKjQKÿDQKLӋPÿDWiFYө, kӃt nӕLLQWHUQHWWKѭӡng trӵc 24/24
vӟi các công nghӋ 3G, wifi
Nhӡ vұy mà nhu cҫu giҧi trí trên các thiӃt bӏ FNJQJQJj\PӝWWăQJÿӗng thӡi vӟi sӵ
cҥnh tranh cӫa các hãng sҧn xuҩt thiӃt bӏ GLÿӝQJÿmFXQJFҩp cho giӟi lұp trình rҩt
nhiӅu công cө ÿӇ hӛ trӧ phát triӇn các sҧn phҭm công nghӋ, giҧi trí trên các thiӃt bӏ
GLÿӝng, rҩt nhiӅu chӧ ӭng dөQJÿѭӧFÿҫXWѭSKiWWULӇQÿӇ ÿҧm bҧRÿҫu ra cho các
sҧn phҭm ӭng dөQJ GL ÿӝng, giúp các lұp trình viên dӉ dàng kiӃP ÿѭӧc tiӅn tӯ
nhӳng sҧn phҭm cӫa mình và dӉ GjQJ ÿѭD Vҧn phҭm cӫD PuQK UD ÿӃn thӏ WUѭӡng
quӕc tӃ mӝt cách nhanh chóng, mà không cҫn phҧLORQJKƭnhiӅu cho viӋc quҧng bá
sҧn phҭPKD\ÿDXÿҫu các chiӃQOѭӧc kinh doanh phӭc tҥp
ĈӇ nҳm bҳt xu thӃ công nghӋ thӃ giӟi và tұn dөQJFѫKӝi lӟn này, em cҧm thҩy cҫn
thiӃt phҧi nghiên cӭXVkXYjROƭQKYӵc phát triӇn ӭng dөQJGLÿӝQJÿҫy hҩp dүn này,
vì thӃ nên em chӑQÿӅ tài Nghiên cӭu lұSWUuQKÿ ӗ hӑa và xây dӵng Game 3D
lұSWUuQKÿӗ hӑa, game, các công nghӋ ÿҵQJ VDXÿyYj OjPVDRÿӇ xây dӵng cho
mình mӝt bӝ công cө mà tӯ ÿyFyWhӇ sӱ dөQJÿӇ xây dӵng bҩt cӭ mӝt game nào tùy
thích cho các thiӃt bӏ GLÿӝQJL3KRQHL3DG$QGURLGSKRQH« Yjӭng dөng nhӳng
kiӃn thӭc này xây dӵng mӝWJDPH'ÿѫQJLҧn lҩ\ÿӅ tài biӇQÿҧo ViӋt Nam vӟi tên
gӑi: Game Bҧ o vӋ +RjQJ6D7Uѭ ӡng Sa
Trang 7&KѭѫQJ &Ѫ6 Ӣ LÝ THUYӂT
Ĉӗ hӑa máy tính là mӝWOƭQKYӵc cӫa khoa hӑc máy tính nghiên cӭu vӅ FѫVӣ toán
hӑc, các thuұWWRiQFNJQJQKѭFiFNƭWKXұWÿӇ cho phép tҥo, hiӇn thӏ Yj ÿLӅu khiӇn
hình ҧQKWUrQPjQKuQKPi\WtQKĈӗ hӑa máy tính có liên quan ít nhiӅXÿӃn mӝt sӕ
OƭQKYӵFQKѭÿҥi sӕ, hình hӑc giҧi tích, hình hӑc hӑa hình, quang hӑFYjNƭWKXұt
Pi\WtQKÿһc biӋt là chӃ tҥo phҫn cӭng (các loҥi màn hình, các thiӃt bӏ xuҩt, nhұp,
các vӍ mҥFKÿӗ hӑa )
7KHR QJKƭD UӝQJ KѫQ ÿӗ hӑD Pi\ WtQK Oj SKѭѫQJ SKiS Yj F{QJ QJKӋ dùng trong
viӋc chuyӇQÿәi qua lҥi giӳa dӳ liӋu và hình ҧnh trên màn hình bҵQJPi\WtQKĈӗ
hӑDPi\WtQKKD\NƭWKXұWÿӗ hӑDPi\WtQKFzQÿѭӧc hiӇXGѭӟi dҥQJSKѭѫQJSKiS
YjNƭWKXұt tҥo hình ҧnh tӯ các mô hình toán hӑc mô tҧ FiFÿӕLWѭӧng hay dӳ liӋu lҩy
ÿѭӧc tӯ các ÿӕL Wѭӧng trong thӵc tӃ Thuұt ngӳ ÿӗ hӑa máy tính" (computer
JUDSKLFV ÿѭӧFÿӅ xuҩt bӣi mӝWFKX\rQJLDQJѭӡL0ƭWrQOj:LOOLDP)HWWHUYjRQăP
.KLÿy{QJÿDQJQJKLrQFӭu xây dӵng mô hình buӗng lái máy bay cho hãng
%RHLQJ :LOOLDP )HWWHU ÿm Gӵa trên các hình ҧnh 3 chiӅu cӫD P{ KuQK QJѭӡi phi
công trong buӗQJ OiL ÿӇ xây dӵng nên mô hình buӗng lái tӕL ѭX FKR Pi\ ED\
%RHLQJĈk\OjSKѭѫQJSKiSQJKLrQFӭu rҩt mӟi vào thӡLNuÿy3KѭѫQJSKiSQj\
cho phép các nhà thiӃt kӃ quan sát mӝt cách trӵc quan vӏ trí cӫD QJѭӡi lái trong
khoang buӗQJOiL:LOOLDP)HWWHUÿmÿһWWrQFKRSKѭѫQJSKiSFӫa mình là computer
graphics
Lӏch sӱ cӫD ÿӗ hӑa máy tính vào thұS QLrQ FzQ ÿѭӧF ÿiQK Gҩu bӣi dӵ án
6NHWFK3DGÿѭӧc phát triӇn tҥi Hӑc viӋn Công nghӋ Massachusetts (MIT) bӣi Ivan
Sutherland Các thành tӵX WKX ÿѭӧF ÿm ÿѭӧc báo cáo tҥi hӝi nghӏ Fall Joint
&RPSXWHUYjÿk\FNJQJFKtQKOà sӵ kiӋn lҫQÿҫXWLrQQJѭӡi ta có thӇ tҥo mӟi, hiӇn thӏ
YjWKD\ÿәLÿѭӧc dӳ liӋu hình ҧnh trӵc tiӃp trên màn hình máy tính trong thӡi gian
thӵc HӋ thӕQJ 6NHWFKSDG Qj\ ÿѭӧF GQJ ÿӇ thiӃt kӃ hӋ thӕng mҥFK ÿLӋn và bao
gӗm nhӳng thành phҫn sau:
x Màn hình CRT
x Bút sáng và mӝt bàn phím bao gӗm các phím chӭFQăQJ
x Máy tính chӭDFKѭѫQJWUuQK[ӱ lí các thông tin
Vӟi hӋ thӕQJQj\QJѭӡi sӱ dөng có thӇ vӁ trӵc tiӃSFiFVѫÿӗ mҥFKÿLӋn lên màn
KuQKWK{QJTXDE~WViQJFKѭѫQJWUuQKVӁ phân tích và tính toán các thông sӕ cҫn
thiӃt cӫa mҥFKÿLӋQGRQJѭӡi dùng vӁ nên
Kӻ thuұWÿӗ hӑDÿѭӧc liên tөc hoàn thiӋn vào thұp niên 1970 vӟi sӵ xuҩt hiӋn cӫa
các chuҭQÿӗ hӑDOjPWăQJFѭӡng khҧ QăQJJLDRWLӃp và tái sӱ dөng cӫa phҫn mӅm
Trang 8Sӵ phát triӇQYѭӧt bұc cӫa công nghӋ YL ÿLӋn tӱ và phҫn cӭng máy tính vào thұp
niên 1980 làm xuҩt hiӋn hàng loҥt các vӍ mҥch hӛ trӧ cho viӋc truy xuҩWÿӗ hӑa ÿL
cùng vӟi sӵ giҧPJLiÿiQJNӇ cӫDPi\WtQKFiQKkQOjPÿӗ hӑDQJj\FjQJÿLVkXvào cuӝc sӕng thӵc tӃ
Ĉӗ hӑa máy tính có rҩt nhiӅu ӭng dөQJWURQJPi\WtQKYuѭӟFWtQKÿӃn 80% thông
tin xӱ lí là hình ҧnh Mӝt sӕ ӭng dөng tiêu biӇu cӫDÿӗ hӑDPi\WtQKQKѭlà:
x Tҥo mô hình, hoҥt cҧnh (game, giҧi trí, )
x Hӛ trӧ thiӃt kӃ ÿӗ hӑa
x Mô phӓng hình ҧnh, chuҭQÿRiQKuQKҧnh (trong y tӃ)
x Huҩn luyӋQÿjRWҥo ҧo (quân sӵ, hành không, )
Trang 92 Sӵ phát triӇn cӫDÿ ӗ hӑDGLÿ ӝng
Ngày nay, vӟi sӵ phát triӇn cӫa các thiӃt bӏ GLÿӝng, sӭc mҥQKÿӗ hӑa cӫa các ӭng
dөQJWUrQGLÿӝng ngày mӝt phát triӇn
Ngay tӯ thӡLNuÿҫu tiên, khi mà các thiӃt bӏ GL ÿӝng còn sӱ dөng màn hình trҳng
ÿHQWKuFiFӭng dөQJÿӗ hӑDFKRÿLӋn thoҥLFNJQJÿmEҳWÿҫXÿѭӧFÿҫXWѭSKiWWULӇn,
tӯ mөFÿtFKEDQÿҫu là tҥRUDFiFWUzFKѫLJLҧLWUtÿѫQJLҧQQKѭ6QDNHWUrQFiFPi\GLÿӝng cӫa Nokia
Dҫn dҫn vӅ sau, khi công nghӋ WKD\ÿәi, chҩWOѭӧQJPjQKuQKÿLӋn thoҥi ngày mӝt
cҧi tiӃQOƭQKYӵFÿӗ hӑDGLÿӝng lҥi trӛi dұy vӟi các ӭng dөng game có chҩWOѭӧng
FDRKѫQErQFҥQKÿyÿӗ hӑDFNJQJJySSKҫQÿHPOҥi sӵ bóng bҭy, hiӋQÿҥi cho các
sҧn phҭPGLÿӝQJKѫQ
*DPHGLÿӝng vào thӡi kì màn hình trҳQJÿHQ QăP
Các game 2D J2ME vào thӡLNuQăP
Trang 109jRQăPJDPH'Eҳt ÿҫu xuҩt hiӋn mһc dù chҩWOѭӧng không cao
1ăPJDPHGLÿӝng vүQFKѭDFyVӵ ÿӝt phá ngoài viӋFÿӝ phân giҧi màn hình
ÿѭӧFWăQJFDRKѫQJL~SKLӇn thӏ hình ҧnh chi tiӃWKѫQ
1ăPL3KRQHEҳWÿҫu xuҩt hiӋQNpRWKHRÿyOjVӭc mҥnh vӅ ÿӗ hӑDÿѭӧc nâng cao, chҩWOѭӧng màn hình cҧm ӭQJÿӝWSKiÿHPOҥi sӵ WKD\ÿәi rõ rӋt cho bӝ mһt nӅn JDPHGLÿӝng
Trang 11Angry Birds, sҧn phҭPÿҫu tiên trên thӃ giӟi mӣ màn cho kӍ nguyên mӟi trong kinh
doanh ӭng dөQJGLÿӝng Rovio ± hãng sҧn xuҩt Angry Birds là mӝt minh chӭng
cho viӋc mӝt công ty nhӓ ÿѭӧc thành lұp chӍ tӯ ÿӃQQJѭӡi có thӇ nhanh chóng
kiӃPÿѭӧc hàng triӋXÿ{ODYjWUӣ thành mӝt tұSÿRjQOӟn chӍ sau mӝWÿrP0ӣ ra
mӝt thӡLNuQJѭӡLQJѭӡi, nhà nhà ôm giҩFPѫWULӋu phú tӯ kinh doanh ӭng dөng di
ÿӝng
Sӭc mҥQK ÿӗ hӑa cӫa các thiӃt bӏ ÿL GӝQJQJj\ FjQJÿѭӧc cҧi thiӋQYj YjRQăP
2011, Infinity Blade 2 là mӝt trong sӕ rҩt nhiӅu game mang chҩWOѭӧQJÿӗ hӑa cӫa
FiFJDPHWUrQPi\WtQKÿӃQÿLӋn thoҥLGLÿӝng
Trang 123 Khái niӋPFѫE ҧn vӅ 3D
ĈӇ bҳWÿҫu tìm hiӇu vӅ lұp trình 3D trên máy tính lүn trên thiӃt bӏ ÿLÿӝng, chúng ta
cҫn nҳm rõ các khái niӋPÿӗ hӑDFѫEҧn trong lұSWUuQK'ÿk\OjQKӳng kiӃn thӭc
nӅn tҧQJÿӇ có thӇ tiӃSWKXÿѭӧc nhӳng kiӃn thӭc chuyên môn vӅ sau
Mӝt HӋ tӑDÿӝ Descartes [iFÿӏnh vӏ trí cӫa mӝWÿLӇm (point) trên mӝt mһt phҷng
SODQH FKRWUѭӟc bҵng mӝt cһp sӕ tӑDÿӝ [\ 7URQJÿy[Yj\OjJLiWUӏ ÿѭӧc
[iFÿӏnh bӣLÿѭӡng thҷQJFyKѭӟng vuông góc vӟLQKDXFQJÿѫQYӏ ÿR
ÿѭӡng thҷQJÿyJӑi là trөc tӑDÿӝ (coordinate axis) (hoһFÿѫQJLҧn là trөc); trөc
nҵm ngang gӑi là trөc hoành, trөFÿӭng gӑi là trөFWXQJÿLӇm giao nhau cӫa 2
ÿѭӡng gӑi là gӕc tӑDÿӝ (origin) và nó có giá trӏ là (0, 0)
HӋ tӑD ÿӝ Qj\ Oj ê Wѭӣng cӫa nhà toán hӑc và triӃt hӑF QJѭӡi Pháp René
Descartes thӇ hiӋQYjRQăPWURQJKDLEjLYLӃt cӫa ông Trong phҫn hai cӫa
EjL3KѭѫQJSKiSOXұn (Descartes) (tiӃng Pháp: Discours de la méthode, tӵa Pour
êWѭӣng mӟi vӅ viӋF [iF ÿӏnh vӏ trí cӫa mӝW ÿLӇm hay vұt thӇ trên mӝt bӅ mһt
bҵng cách dùng hai trөFJLDRQKDXÿӇ ÿR&zQWURQJEjL/D*pRPpWULH{QJSKiW
triӇQVkXKѫQNKiLQLӋm trên
'HVFDUWHVOjQJѭӡLÿmFyF{QJKӧp nhҩWÿҥi sӕ và hình hӑc Euclide Công trình
này cӫa ông có ҧQKKѭӣQJÿӃn sӵ phát triӇn cӫa ngành hình hӑc giҧi tích, tích
phân, và khoa hӑc bҧQÿӗ
1JRjL UD ê Wѭӣng vӅ hӋ tӑD ÿӝ có thӇ ÿѭӧc mӣ rӝng ra không gian ba chiӅu
(three-dimensional space) bҵng cách sӱ dөng 3 tӑDÿӝ Descartes (nói cách khác
là thêm mӝt trөc tӑDÿӝ vào mӝt hӋ tӑDÿӝ Descartes) Mӝt cách tәng quát, mӝt hӋ
tӑD ÿӝ n-chiӅu có thӇ ÿѭӧc xây dӵng bҵng cách sӱ dөng n tӑD ÿӝ Descartes
WѭѫQJÿѭѫQJYӟi n-trөc)
Trang 13HӋ tӑ Dÿ ӝ trên mһt phҷng 2 chiӅu (2D)
Là 2 trө chӑQYHFWѫÿѫQYӏ i, j sao cho
ÿӝ dài cӫa 2 véc-WѫQj\Eҵng nhau
Là 3 trөc vuông góc nhau tӯQJÿ{LP ӑn 3
véc-WѫÿѫQYӏ LMNVDRFKRÿӝ dài cӫa 3 véc-WѫQj\Eҵng nhau
TronJÿӗ hӑDPi\WtQKYjGLÿӝng, tӗn tҥi 2 loҥi hӋ tӑDÿӝ không gian 3 chiӅu HӋ
tӑDÿӝ tay phҧi và tay trái HӋ tӑDÿӝ tay phҧi (right handed coordinate system)
ÿѭӧc sӱ dөng trong OpenGL và hӋ tӑDÿӝ tay trái (left handed coordinate system)
ÿѭӧc sӱ dөng trong DirectX
Trang 14HӋ tӑ Dÿ ӝ 3 chiӅu trong OpenGL
Trong OpenGL thì mӝWÿLӇPWURQJNK{QJJLDQ'ÿѭӧFÿһt trong mӝt vùng có
giӟi hҥn giá trӏ tӑDÿӝ tӯ ÿӃQQKѭWURQJKuQKErQGѭӟi, gӑi là NDC (Normal Device Coordination)
1'&ÿѭӧc tә chӭc theo hӋ tӑDÿӝ tay trái và có giӟi hҥn tӯ ÿLӇm (-1, -1, - ... phҧi nghiên cӭXVkXYjROƭQKYӵc phát triӇn ӭng dөQJGLÿӝQJÿҫy hҩp dүn này,
vì thӃ nên em chӑQÿӅ tài Nghiên cӭu lұSWUuQKÿ ӗ hӑa xây dӵng Game 3D
lұSWUuQKÿӗ hӑa, game, ... ÿҵQJ VDXÿyYj OjPVDRÿӇ xây dӵng cho
mình mӝt bӝ cơng cө mà tӯ ÿyFyWhӇ sӱ dөQJÿӇ xây dӵng bҩt cӭ mӝt game tùy
thích cho thiӃt bӏ GLÿӝQJL3KRQHL3DG$QGURLGSKRQH«Yjӭng...
thuұt tốn xây dӵng khӕi hình hӑc
x
2SHQ*/WѭѫQJWKtFKKRjQtoán vӟi nhӳng phiên bҧQWUѭӟc
Direct3D ( D3D)
MӝW FiFK ÿӇ D3D cho phép nhӳng