Nghiên cứu và xây dựng game 3d trên nền đồ họa open GL

76 12 0
Nghiên cứu và xây dựng game 3d trên nền đồ họa open GL

Đ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

ĈҤI HӐ&Ĉ¬1 ҸNG 75Ѭ Ӡ1*Ĉ ҤI HӐ&6Ѭ3+ ҤM KHOA TIN -[ \ - PHAN NGӐC AN NGHIÊN CӬU XÂY DӴNG GAME 3D TRÊN Nӄ1Ĉ ӖHӐA OPENGL KHÓA LUҰN TӔT NGHIӊP /Ӡ,&Ҧ0Ѫ1 Tôi xin chân thành c̫P˯QFiFWK ̯y cô khoa Tin h͕c cNJQJQK˱F ic th̯ y cô gi̫ng d̩ y WURQJWU˱ ͥQJĈ ̩i h͕ F6˱3K ̩PĈ ̩i h͕ FĈj1 ̽QJÿmWUX y͉ Qÿ ̩t cho nhͷng ki͇ n thͱc quý báu su͙ t nhͷQJQăPK ͕ c vͳa qua Ĉ̿ c bi͏ t xin chân thành c̫ P˯QWK ̯ y giio Nguy͍ n Thanh Tṷn, khoa Tin h͕ F ͥQJ WU˱ ̩ iĈ h͕ F 6˱ ̩ PSK ÿm ̵ QW WuQKK˱ ͣng d̳ n ͡ng ÿviên vjgi~p su͙ t thͥi gian th͹c hi͏ Qÿ ͉tj i Ĉ͋cyÿ˱ͫc k͇ t qu̫QK˱QJ jy hôm nay, r̭t bi͇ W˯QJLDÿ u QKÿ mÿ͡ ng viên, kht ch l͏ , t̩o m͕ i ÿL ͉ u ki͏ n thu̵ n lͫi nh̭t su͙t quitru nh h͕c t̵p cNJ ng nh˱TX i tru nh th͹FKLrQÿ ͉tji t͙ t nghi͏ p njy Xin chân thjnh c̫m ˯QJ iim ÿ͙c Ngô ChtTrung, ci c anh Ph̩m Thanh Trung, Phan Ng͕c T~, Nguy͍ n Minh Giim ljnhân viên công ty AsNet vjci c b̩ n khoa Tin h͕c ±khy a ÿ mchân thjnh gi~ Sÿ ͩtrong nhͷng l~c g̿ p khyNKăQ ÿ̿ c bi͏ t ljci c b̩n lͣS&177ÿ mͯng h͡, gi~Sÿ ͩ, chia sͅki͇ n thͱc, kinh nghi͏ m vjtji li͏ u cyÿ˱ ͫc cho quitru nh nghiên cͱu vjth͹c hi͏ Qÿ ͉tji M̿ c dÿmr̭ t c͙g̷ng hojn thj nh lu̵n YăQ ͣi ṱ Y t c̫n͝l͹c cͯa b̫ n thân QK˱QJOX ̵QYăQNK{QJWU i nh kh͗i nhͷng sai sy t vjh̩n ch͇ , kt nh mong s͹thông c̫ m vjÿy ng gyp êki͇ n cͯ a quêTh̯y Cô, anh vjcic b̩n Tôi xin chân thành c̫ P˯Q Ĉj1 ̽ QJ1Jj\WKiQJQăP Sinh viên thӵc hiӋ n Phan Ngӑc An LӠ,&$0Ĉ2$1 7{L[LQFDPÿRDQ 1) Nhͷng n͡i dung lu̵QYăQQj\OjGRW{LWK ͹c hi͏ QG˱ ͣi s͹K˱ ͣng d̳ n tr͹c ti͇ p cͯa th̯ y ThS GV Nguy͍ n Thanh Tṷn 2) M͕i tham kh̫ o dùng lu̵Q YăQ ͉ Xͫ ÿ˱ cÿtrích d̳n rõ ràng trung th͹c tên tác gi̫ , tên cơng trình, thͥLJLDQÿ ͓ DÿL ͋ m công b͙ 3) M͕i chp p không hͫp l͏ , vi ph̩ m quy ch͇ÿ jo t̩ o, hay gian tri, xin ch͓ u hojn toj n trich nhi͏ m Sinh viên: Phan Ngӑc An MӨC LӨC TӘ1*48$1Ĉ ӄTÀI 1 Ĉһ t vҩ Qÿ Ӆ Lý chӑQÿ Ӆtài MөFÿ ích nghiên cӭu Nӝi dung khóa luұ n ĈӕLWѭ ӧng phҥ m vi nghiên cӭu 4.1 Ĉӕ LWѭ ӧng nghiên cӭu 4.2 Phҥ m vi nghiên cӭu: 3KѭѫQJSKiSQJKLrQF ӭu Công cөsӱdөng NӜI DUNG NGHIÊN CӬU VÀ GIҦI PHÁP THӴC HIӊN &KѭѫQJ - 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 7KѭYL Ӌ Qÿ ӗhӑa OpenGL (Open Graphics Library) 1.4 Ngơn ngӳmơ hình hóa thӕ ng nhҩ t 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ӃKѭ ӟQJÿ ӕ LWѭ ӧng &KѭѫQJ - &Ѫ6 ӢLÝ THUYӂT 10 2.1 Các vҩ Qÿ Ӆ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 vӅ3D 10 Các hӋtrө c tӑ Dÿ ӝ 10 ;iFÿ ӏ nh vӏtrí mӝ WÿL Ӈ m hӋtӑ Dÿ ӝ3D 12 Các mơ hình 3D 13 Các hình dҥ ng 3D 14 Quy trình xӱOêÿ ӗhӑa (Graphics Pipeline) 15 2.1.7 Các phép biӃ Qÿ ә 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 7KѭYL Ӌ Qÿ ӗhӑa OpenGL 25 2.2.1 &ѫ bҧ n vӅOpenGL 25 2.2.2 Các kӻthuұ WFѫE ҧ n Open GL 29 2.3 KiӃ n thӭFFѫE ҧ n vӅ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 7ѭѫQJWiFY ұ t lý (game physics) 45 2.3.7 Âm (sound) 45 2.3.8 Trҥ ng thái game (State) 46 &KѭѫQJ - PHÂN TÍCH VÀ THIӂT KӂHӊTHӔNG 47 3.1 Xây dӵng kӏ ch bҧ n cho game Warship 47 3.2 Phân tích hӋthӕ ng 47 3.2.1 Yêu cҫ Xÿ һ WUDÿ ӕi vӟLFKѭѫQJWUuQK 47 3.2.2 Mô tҧchi tiӃ t chӭFQăQJ 49 3.3 ThiӃ t kӃhӋthӕ ng 57 3.3.1 Xây dӵng kӃ t cҩ u tәng thӇcӫa hӋthӕng 57 3.3.2 Mơ hình hoҥ Wÿ ӝ ng cӫDFKѭѫQJWUuQK 60 &KQJ &ơ, T V KT QU&+1*75ẻ1+ 62 4.1 &jLÿ һ WFKѭѫQJWUuQK 62 4.1.1 Load model *.obj 62 4.1.2 Thuұ WWRiQÿ ӗng bӝ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 quҧFKѭѫQJWUuQK 66 4.2.1 Màn hình menu cӫ a game 66 4.2.2 Màn hình game 67 KӂT LUҰ19¬+Ѭ ӞNG PHÁT TRIӆN 68 KӃ t quҧÿ ҥ Wÿѭ ӧc 68 1.1 1.2 VӅlý thuyӃ t 68 VӅthӵc nghiӋ m 68 +ѭ ӟng phát triӇ n cӫDÿ Ӆtài 68 TÀI LIӊU THAM KHҦO 69 DANH MӨC BҦNG BIӆU Hình 1 BiӇ Xÿ ӗmơ hình cҩ u trúc .6 Hình BiӇ Xÿ ӗmơ hình hành vi +uQK&iFEѭ ӟc phát triӇ n hӋthӕ QJKѭ ӟQJÿ ӕLWѭ ӧng Hình HӋtrө c tӑ Dÿ ӝXYZ 11 Hình 2 HӋtrө c tӑ Dÿ ӝbàn tay trái 12 Hình HӋtrө c tӑ Dÿ ӝbàn tay phҧ i 12 Hình Mӝ WÿL Ӈ Pÿѭ ӧF[iFÿ ӏ nh bӣi bӝ3 tӑDÿ ӝXYZ 13 Hình Hình khӕLÿѫQJL ҧ Qÿѭ ӧc thӇhiӋ n hӋtrөc tӑDÿ ӝXYZ chuҭ n 13 +uQK&iFÿDJLiFÿѭ ӧc tách rӡi thành tұ p hӧp tam giác 14 Hình Các thành phҫ n cӫa mӝt hình dҥ ng 3D .15 +uQK3KpSWKD\ÿ әLNtFKWKѭ ӟ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 mӝt vector 19 Hình 11 Phép dӏ ch chuyӇ n (Translation) 20 Hình 12 KӃ t hӧp phép biӃ Qÿ ә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 +uQK0{KuQK'WUѭ ӟc sau sӱdөng kӻthuұ t gҳ n kӃ t cҩ u 23 Hình 16 Mӝ t ví dөcӫDVѫÿ ӗkӃ t cҩ u (texture map) .24 +uQK&iFÿ ӕLWѭ ӧng 3D AABB cӫa chúng 25 Hình 18 BiӇ u diӉ n lӋ nh OpenGL 27 Hình 19 Các kiӇ u dӳliӋ u OpenGL 28 Hình 20 Hình ҧ nh animation 29 Hình 21 Minh hӑ a tham sӕbҵ ng hình vӁ .30 Hình 22 Hình ҧ nh vӅ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һ SJDPHÿѫQJL ҧ n 42 Hình 29 BiӇ u diӉ n mӝt sӕWѭѫQJWiFY ұ t lý game 45 +uQK6ѫÿ ӗuse case cӫ a 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 +uQK6ѫÿ ӗmӕi quan hӋgiӳa lӟp 60 Hình Mơ hình hoҥ Wÿ ӝ ng cӫDFKѭѫQJWUuQK 61 Hình Cҩ u trúc model obj 63 +uQK6ѫÿ ӗthuұ WWRiQÿ ӗ ng bӝframe 64 +uQK6ѫÿ ӗthuұ t toán di chuyӇ n tàu ngү u nhiên .65 Hình 4 Màn hình cӫ a game 66 +uQK0jQKuQKNKLÿDQJFKѫLJDPH 67 1JKLrQFͱX Yj[k\G͹QJJDPH'WUrQQ͉Qÿ͛K͕D2SHQ*/ *9+'7K61JX\͍Q7KDQ 7Ә1*48$1Ĉӄ7¬, Ĉһt vҩQÿ Ӆ Game OƭQK YӵF JLҧL trí WѭѫQJ tác quan WUӑQJ hàng ÿҫX ngành cơng QJKLӋS QӝL dung Vӕ Doanh thu tồn FҫX Wӯ ngành WăQJ WUѭӣQJ nhanh chóng Wӯ Wӹ USD (1994) lên 41.9 Wӹ USD (2007) Gӵ ÿRiQ VӁ ÿҥW 68 Wӹ USD (2012) 9ӟL WӕF ÿӝ WăQJ WUѭӣQJ bình quân 9% PӝW QăP Game ÿm WUӣ thành ngành có WӕF ÿӝ phát WULӇQ nhanh QKҩW OƭQK YӵF JLҧL trí Trong ÿy 0ӻFKLӃP 40.42% WKӏ SKҫ n, Anh 12.45% 1KұW 11.87% 1ăP 2008, ngành Game ӣ0ӻgiá WUӏ NKRҧQJ 22 Wӹ USD YѭӧW qua ngành công QJKLӋS âm QKҥF (10 Wӹ USD) ngành công QJKLӋS phim ҧQK (9,5 Wӹ USD); thu hút hàng WULӋX lao ÿӝQJ chuyên gia phát WULӇQ phân SKӕL marketing game 9LӋW Nam WKӏ WUѭӡQJ Game OӟQ QKҩW khu YӵF Ĉ{QJ Nam Á YӟL KѫQ 20 nhà phát hành Game Fҧ QѭӟF Doanh thu QăP JҫQ ÿk\ liên WөF WăQJ WUѭӣQJ YӟL PӭF trung bình 400 WULӋX 86'QăP FKLӃP 70% doanh thu FӫD ngành QӝL dung Vӕ Sӵphát triӇ n cӫa nJjQKÿmPDQJY Ӆ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 cӫa ngành công nghiӋ p nӝ i dung sӕViӋ W 1DP ӗngYj thӡL ÿWK~F ҭ y sӵphátÿtriӇ n cӫa hҥtҫ ng viӉ n thơng ViӋ t Nam 6ӵ phát WULӇQ nhanh chóng FӫD tKӏ WUѭӡQJ Game 9LӋW ÿzL KӓL PӝW OѭӧQJ nhân OӵF OӟQ ӣWҩW Fҧ khâu FӫD trình VҧQ [XҩW Game QKѭ WKLӃW NӃ ÿӗ KӑD (Games Design), OұS trình Game (Programming), âm $XGLR « Lý chӑ Qÿ Ӆtài 1Jj\QD\GRQKXFҫXÿӡLVӕQJFӫDFRQQJ FjQJÿѭӧFQkQJFDR FҫXJLҧLWUtFNJQJÿѭӧFTXDQWkPÿӃQUҩWQ WtQKYjQKLӅXKӋPi\NKiFQJj\FjQJSKiW FӫDQy+ҫXQKѭDLVӱGөQJPi\WtQKÿӅXF ÿӇJLҧLWUt1 UDFiFJDPHFKRGLÿӝQJFNJQJFXӕQK~Wÿѭӧ FKѫLYjFiFF{QJW\FXQJFҩSJDPH[XҩWKL 6LQKYLrQ3KDQ1J͕F$Q ±/ͣS&177 Trang 1JKLrQFͱX Yj[k\G͹QJJDPH'WUrQQ͉Qÿ͛K͕D2SHQ*/ *9+'7K61JX\͍Q7KDQ Công nghiӋ p game ngày phát triӇ Q7X\QKLrQÿDV ӕFiFJDPHÿ Ӆ u làm ӣ dҥ ng 2D Thӡi gian gҫ Qÿk\WKu[X Kѭ ӟQJJDPH'ÿDQJÿѭ ӧFѭDFKX ӝng Mһ c dù FiF FKѭѫQJ ҩ t WUuQK nhiӅ X QKѭQJ ӕ JDPH i vӟi mӝ ÿ W UQJѭ ӡi mӟi bҳ W ҫ X ÿ WURQJ OƭQK vӵFJDPHWKuÿ ӇviӃ Wÿѭ ӧc mӝ t game hay có thӇFKѫLÿѭ ӧc mӝt diӅ u khơng dӉ Vì vұ y vӟi niӅ PÿDPPrY Ӆgame máy tính, bҧ n thân em muӕ QÿLVkXWuPKL Ӈ u nghiên cӭu vӅquá trình làm game 3D PC nhҵ m xây dӵQJÿѭ ӧFGHPRFKѭѫQJ WUuQKJDPHFѫE ҧ Qÿ Ӈphөc vөcho trình nghiên cӭu công viӋ FWѭѫQJODLV MөFÿtFKQJKLrQF ӭu x &NJQJF ӕnhӳng kiӃ n thӭFÿmK ӑ c tìm hiӇ u, nghiên cӭu thêm kiӃ n thӭc mӟLQKѭ/ ұ p trình vӟLWKѭYL Ӌ Qÿ ӗhӑ a OpenGL, nghiên cӭu quy trình, cơng nghӋ làm game 3D x Nҳ m rõ quy trình phát triӇ Q JDPH FNJQJө QKѭ ÿѭ ӧc sӱFiF dөQJ Ӈ F{QJ ÿ F sҧ n xuҩ t mӝ t sҧ n phҭ m game x Áp dө ng lұ SWUuQKKѭ ӟQJÿ ӕLWѭ ӧng ngôn ngӳ&ÿ Ӈphát triӇ n game vӟi phҫ n mӅ m visual studio C++ 2008 x Xây dӵng game 3D Warship vӟi nhiӅ u chӭFQăQJO ӵa chӑQÿ ӗhӑ a thҭ m mӻ nhҵ m cuӕ n hút sӵquan tâm cӫDQJѭ ӡLFKѫL Nӝi dung khóa luұ n Nӝ i dung khóa luұ Qÿѭ ӧc chia làm phҫ n cөthӇQKѭVDX : ¾ Tә ng quan vӅÿӅtài ¾ Nӝ i dung nghiên cӭu giҧ i pháp thӵc hiӋ n o &KѭѫQJ ӟi  thiӋ u vӅ *L công cөsӱdөng: Giͣi thi͏ u v͉ngôn ngͷl̵ p trình, trình biên d͓ FKFiF˱XYjQK˱ ͫFÿL ͋ m cͯa l̵p trình game Giͣi thi͏ u v͉các cơng cͭs͵dͭng trong su͙t q trình th͹c hi͏ n khóa lu̵n o &KѭѫQJ  ӣlý thuyӃ &ѫ t: Trình V bày v̭ Q ͉ÿ quan tr͕ng l̵ p trình 3D, vi͏ c s͵dͭQJWK˱YL ͏ Qÿ ͛h͕a OpenGL l̵ p trình game 3D kͿ thu̵ WF˯E ̫ n l̵ p trình game 6LQKYLrQ3KDQ1J͕F$Q ±/ͣS&177 Trang 1JKLrQFͱX Yj[k\G͹QJJDPH'WUrQQ͉Qÿ͛K͕D2SHQ*/ *9+'7K61JX\͍Q7KDQ Hình 21 Minh h͕a tham s͙b̹ ng hình vͅ b Point, Lines and Polygons Point: ĈL Ӈ m xác ÿӏ nh bӣi mӝ t ÿӍ nh nhҩ t ĈӍ nh quy ÿ ӏ nh bӣi QJѭ ӡi sӱdөng QKѭ hai chiӅ u (chӍcó x y-tӑ a ÿӝ ) ĈӇÿL Ӆ u chӍ nh kích WKѭ ӟc cӫa mӝ t ÿL Ӈ m kӃ t xuҩ t, sӱdөng glPointSize() cung cҩ p kích WKѭ ӟc mong Hàm glVertex*() ÿѭ ӧc sӱdө ng ÿ ӇvӁmӝt ÿL Ӈ m QKѭQJ chӍcó hiӋ u quҧgiӳa mӝ t cһ p glBegin() glEnd(); Ví dө: glBegin(); glVertex2i(0, 0); glVertex2i(3, 0); glVertex2i(4, 5); glEnd(); Lines: Cách dӉnhҩ t ÿӇxác ÿ ӏ nh mӝt ÿѭ ӡng có ÿL Ӈ m ÿҫ u ÿL Ӈ m cuӕi Vӟi lӋ nh glBegin() tham sӕÿ ӇvӁcác Gѭ ӡng thҷ ng bao gӗm:  */B/,1(69ӁPӝWORҥWFiFÿRҥQÿѭӡQJ WKLӃWOұSFiFÿӍQK 0ӝWÿӍQKNK{QJOLrQTXDQÿѭӧFEӓT 6LQKYLrQ3KDQ1J͕F$Q ±/ͣS&177 Trang 30 1JKLrQFͱX Yj[k\G͹QJJDPH'WUrQQ͉Qÿ͛K͕D2SHQ*/ *9+'7K61JX\͍Q7KDQ  */B/,1(B675,3 9Ӂ PӝW ÿRҥQ ĈѭӡQJ WKҷQJ Fy Wӯ WKӇFҳWQKDXW\WLӋQ  */B/,1(B/2237ѭѫQJWӵQKѭ*/B675,3 FXӕLFQJÿѭӧFU~WUDWӯFiFÿӍQKFXӕLF Polygons: ĈDJLiFOjFiFNKXYӵFÿѭӧFEDREӑ SKkQÿRҥQÿѭӡQJQѫLFi FÿRҥQÿѭӡQJÿѭӧFTX\ÿӏQKEӣL KӑĈDJLiFWKѭӡQJÿѭӧFYӁYӟLFiFÿLӇPҧ YӁFK~QJQKѭOjSKiFWKҧRKRһFWKLӃWOұS FKӃYӅQKӳQJJuWҥRWKjQKPӝWÿDJLiF QJX\rQWKӫ\9tGөFiFF NK{QJWKӇFҳWQKDXYjFK~QJSKҧLÿѭӧFOӗL FKRPӝW WDPJLiF EDPһWYjEӕQPһW Wӭ glBegin(GL_QUADS) 7X\QKLrQWUѭӡQJKӧSWәQJ TXiWFӫDPӝWÿDJL ÿѭӧFÿӏQKQJKƭDEҵQJFiFKVӱGөQJJO%HJLQ 9tGө glBegin(GL_POLYGON); glVertex2f(0.0, 0.0); glVertex2f(0.0, 3.0); glVertex2f(4.0, 3.0); glVertex2f(6.0, 1.5); glVertex2f(4.0, 0.0); glEnd(); c 9ͅFiF ÿ͙LW˱ͫQJNK{QJJLDQ */87FyPӝWORҥWFiFEҧQYӁWKѭӡQJWUu EDFKLӅX ĈLӅXQj\FyQJKƭDNK{QJFҫQSKҧLÿӏQK P{ KuQK Qj\ WURQJ 0ӛL PӛL ÿӕL FKѭѫQJ WѭӧQJ WUuQK ÿӅX Fy ZLU FK~QJÿѭӧFFXQJFҩSVҹQ 9tGө glutWireCube() 9ӁNKӕLOұSSKѭѫQJUӛQJ FK glutSolidCube() 9ӁNKӕLOұSSKѭѫQJÿһF 6LQKYLrQ3KDQ1J͕F$Q ±/ͣS&177 Trang 31 1JKLrQFͱX Yj[k\G͹QJJDPH'WUrQQ͉Qÿ͛K͕D2SHQ*/ *9+'7K61JX\͍Q7KDQ d &iFSKpSEL͇Qÿ͝L 9LӋFFKX\ӇQÿәLP{KuQKÿѭӧFVӱGөQJÿӇ ӏQKKѭӟQJP{KuQ Có WKӇ[RD\GӏFKFKX\ӇQKRһF NtFKWKѭӟF FiFP{KuQKKRһFNӃWKӧS .KLFKX\ӇQÿәLÿѭӧFWKӵFKLӋQPӝWORҥ KLӋQ ÿӇ ҧQK KѭӣQJ NtFK ÿӃQcác WKѭӟF Yӏ mơ hình WUt Tuy nhiên, KѭӟQJ Yj SKpSQKkQPDWUұQGLӉQUDWKHRWKӭWӵQJѭ ÿRҥQPm7UuQKWӵFKX\ӇQÿәLOjUҩWTXDQ  Scaling: lӋ nh glScale() nhân ma trұ n hiӋ n tҥ i cӫa mӝt ma trұ n trҧ i dài, co lҥ i, hoһ c phҧ n ánh mӝ Wÿ ӕ LWѭ ӧng dӑ c theo trөc Mӛi x, y, z phӕ i hӧp cӫa tҩ t cҧFiFÿL Ӈ PWURQJÿ ӕLWѭ ӧng nhân vӟi tham sӕWѭѫQJ ӭng vӟi x, y, hoһ cz  Translation: lӋ nh dӏ ch glTranslate() nhân ma trұ n hiӋ n tҥ i vӟi mӝt vector dӏ ch chuyӇ n có giá trӏx, y, z  Rotation: 4XD\ÿ ӕ LWѭ ӧng mӝWKѭ ӟQJQJѭ ӧc chiӅ u kim ÿ ӗng hӗtheo mӝ t trө c hay nhiӅ XKѫQQjRÿy Tham sӕ[iFÿ ӏ QKJyFTXD\ÿѭ ӧc tính bҵ QJÿѫQY ӏÿ ӝ Mӝ Wÿ ӕLWѭ ӧng nҵ P[DKѫQW ӯcác trөc quay có mӝt quӻÿ ҥ o lӟQKѫQ so vӟi mӝWÿ ӕ i Wѭ ӧng ӣgҫ n trөc quay e 'DQKViFKKL͋QWK͓ GLVSOD\OLVW 0ӝWGDQKViFKKLӇQWKӏOjPӝWQKyPFiF KLӋQVDXÿy.KLPӝWGDQKViFKKLӇQWKӏÿ WKHRWKӭ WӵPjӣÿyÿmÿѭӧFNKӣLWҥR +ҫXKӃWFiFKjP2SHQ*/F WURQJ PӝW GDQK ViFK KLӇQ 0ӝW GDQK ViFK glNewList() YjNӃWWK~FYӟLKjP glEndList() ĈӕLVӕFKR glNewList() OjWrQGX\QK Pj[iFÿӏQKGDQKViFK 7̩L VDRSK̫LV͵GͭQJGLVSOD\OLVW" KLFyêÿӏQKYӁOҥLKRһFWKD\ÿәLWUҥQ GLVSOD\ OLVW ÿӇ OjP WDQJ NKҧ QăQJ ± WKӵF W VHUYHUWKuGLVSOD\OLVWVӁOjPJLҧPVӵKD GӳOLӋX 6LQKYLrQ3KDQ1J͕F$Q ±/ͣS&177 Trang 32 1JKLrQFͱX Yj[k\G͹QJJDPH'WUrQQ͉Qÿ͛K͕D2SHQ*/ *9+'7K61JX\͍Q7KDQ &iFWtQKFK̭WFͯDGLVSOD\OLVW 1ӃX PӝW GLVSOD\ OLVW WҥR UD WKu NK{QJ YLӋFWӕWYӟLFiFKjPFӫDWKѭYLӋQJO&y 6ӵWKӵFWKLFӫDGLVSOD\OLVWNK{QJFKұ KjPFKӭDErQWU QyPӝWFiFKÿӝFOұS &iFWU˱ͥQJKͫSFyWK͋V͵GͭQJGLVSOD\O  &iFWiFYөWUrQPDWUұQ  5DVWHUFiFELWPDSVYjFiFҧQK  ĈһFWtQKQJXӗQV ánJFKҩWOLӋXYjP{KuQKFKLӃ ng  Textures  Polygon stiple pattern 1K˱ͫFÿL͋PFͯDGLVSOD\OLVW  7tQKNK{QJELӃQÿәLFӫDGLVSOD\OLVW  7ӕQYQJQKӟQӃXFҫQOѭXWUӳGӳOLӋX  1ӃXGDQKViFKOjQKӓWKuNK{QJKLӋX 7̩RYjWK͹FWKLP͡WGLVSD\OLVW +jPJO1HZ/LVW *OXLQWOLVW*OHQXPPRGH YjNӃWWK~FPӝWGLVSOD\OLVWĈӕLVӕOLV ÿѭӧFÿһWWrQEҵQJPӝWJLiWUӏLQWHUJHU* */B&203/(B$1'B(;&87(&KӍFyPӝWGLVSOD\ WUiQK Vӵ OһS WUQJ WrQ WD GQJ KjP JO*HQ/LVW *OVL GLVSOD\OLVWWDGQJKjPJO'HOHWH *OLQWO QJKƭD+jPJO,V/LVW *OLQWOLVW GQJÿӇN Display list ÿѭӧF WKӵF WKL EҵQJ JO&DOO/LVW JO&DOO/LVW *OXLQWOLVW ӣEҩWFӭQѫLQjR 6LQKYLrQ3KDQ1J͕F$Q ±/ͣS&177 Trang 33 1JKLrQFͱX Yj[k\G͹QJJDPH'WUrQQ͉Qÿ͛K͕D2SHQ*/ *9+'7K61JX\͍Q7KDQ 9tGө VӱGөQJGLVWSOD\OLVW : glNewList(1,GL_COMPILE) ; glColor3f(1.0, 0.0, 0.0) glBegin(GL_TRIANGLES) ; // red ; glVertex2f(0.0, 0.0) ; glVertex2f(1.0, 0.0) ; glVertex2f(0.0, 1.0) ; glEnd() ; glTranslate(1.5, 0.0, 0.0) glEndList() ; // di chuy ͌Qÿ ͚LW˳ ͬng ; glNewList(2,GL_COMPILE) ; glColor3f(0.0, 1.0, 0.0) ; // blue glBegin(GL_QUAD) ; glVertex2f(0.0, 0.0) ; glVertex2f(1.0, 0.0) ; glVertex2f(1.0, 1.0) ; glVertex2f(0.0, 1.0) ; glEnd() ; glTranslate( glEndList() - 1.5, 0.0, 0.0) ; // di chuy ͌Qÿ ͚LW˳ ͬng ; f .KXQJKL͋QWK͓ 9LHZLQJ ™ Màu s̷c (Color) ĈӇhình mӝt hình ҧ nh vӁÿѭ ӧc thӇhiӋ n rõ nét ta cҫ QFK~êÿ Ӄ n màu sҳ c cӫ Dÿ ӕ i Wѭ ӧQJÿyĈ ӇWKD\ÿ ә i màu nӅ n, Hàm glClearColor() ÿѭ ӧc dùng ÿ ӇchӍÿӏ nh màu sҳ c cӫ a nӅ n vӁ Mһ Fÿ ӏ QK  OjPjXÿHQ TiӃ p theo hàm glClear() sӁxóa sҥ ch FiFYQJÿ Ӌ Pÿѭ ӧFTX\ÿ ӏ QKÿ ӇhiӇ n thӏOrQĈ Ӈxoá bӝÿӋ m màu sҳ c sӱdөQJÿ ӕi sӕ GL_COLOR_BUFFER_BIT 6LQKYLrQ3KDQ1J͕F$Q ±/ͣS&177 Trang 34 1JKLrQFͱX Yj[k\G͹QJJDPH'WUrQQ͉Qÿ͛K͕D2SHQ*/ *9+'7K61JX\͍Q7KDQ ĈӇthiӃ t lұ p mӝt màu sҳ c, sӱdөng hàm glColor3f() Hàm có ba tham sӕ kiӇ u thӵc có giá trӏtӯ0.0 ÿ Ӄ n 1.0 Các tham sӕtheo tuҫ n tӵlà thành phҫ n màu ÿӓ [DQKOiFk\YjPjX[DQKGѭѫQJ 5*% Ví dө , glColor3f (1.0, 0.0, 0,0) làm cho PjXÿ ӓsáng nhҩ t mà hӋthӕ ng có thӇrút ra, khơng có thành phҫ n màu xanh hoһ c màu xanh ™ Ĉ͡bóng (shading) MӝWҥ nÿR thҷ ng có thӇÿѭ ӧc tơ bӣi mӝ W PjX ӗng nhҩ ÿ t (chӃÿӝflat) hay bӣi nhiӅ u màu sҳ c khác (chӃÿ ӝsmooth) ĈӇthiӃ t lұ p chӃÿ ӝshading phù hӧp, ta sӱdө ng hàm void glShadeModel(GLenum mode); WURQJ ÿyӃPRGH ÿӝchӑn, nhұ Oj n FK2 giá trӏGL_SMOOTH hoһ c GL_FLAT Ví dөsӱdө ng chӃÿ ӝsmooth: KLÿѭDÿR ҥ QFKѭѫQJWUuQKWUrQYjRSURMHFWÿ Ӈchҥ y sӁcho kӃ t quҧ : 6LQKYLrQ3KDQ1J͕F$Q ±/ͣS&177 Trang 35 1JKLrQFͱX Yj[k\G͹QJJDPH'WUrQQ͉Qÿ͛K͕D2SHQ*/ *9+'7K61JX\͍Q7KDQ Hình 22 Hình ̫ nh v͉shading ™ Bi͇ Qÿ ͝ i khung nhìn (Viewing transformation) Ĉҫ u tiên khӣi tҥ o ma trұ n bҵ QJ FiFK һ t vӟi ma ÿ trұ Q ÿѫQY ӏ , sӱdөng hàm glLoadIdentity() Hàm gluLookAt() vӟLFiFÿ ӕ i sӕsau thӇhiӋ n vӏWUtÿ һ t view, ÿL Ӈ m nҵ P WUrQ ӡng thҷ ÿѭ ng xuҩ t phát tӯWkP YLHZ ӟng Kѭvà vector chӍ Kѭ ӟng lên cӫ a view Cú pháp hàm: Glvoid gluLookAt (GLdouble eyex, Gldouble eyey, Gldouble eyez Gldouble centerx, Gldouble centery, Gldouble centerz, Gldouble upx, Gldouble upy, Gldouble upz); 6LQKYLrQ3KDQ1J͕F$Q ±/ͣS&177 Trang 36 ... vi nghiên cӭu 4.1 Ĉӕ LWѭ ӧng nghiên cӭu x Công ngh? ?và kӻthuұ t làm game 3D x 7KѭYL Ӌ Qÿ ӗhӑ a mã nguӗ n mӣOpenGL x 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. .. Qÿ ӗhӑa OpenGL 25 2.2.1 &ѫ bҧ n vӅOpenGL 25 2.2.2 Các kӻthuұ WFѫE ҧ n Open GL 29 2.3 KiӃ n thӭFFѫE ҧ n vӅlұ p trình Game 41 2.3.1 Vòng lһ p game (Game Loop)... phát triӇ n game 3D vӟi công cөWKѭYL Ӌ Qÿ ӗhӑ a mã nguӗn mӣ OpenGL phҫ n mӅ m Microsoft visual studio 2008 máy tính (PC) 3KѭѫQJSKiSQJKLrQF ӭu x Nghiên cӭu lý thuyӃ t xây dӵng game 3D nhҵ P

Ngày đăng: 26/06/2021, 13:14