MỞ ĐẦU Ngày nay các sản phẩm công nghệ ngày càng gần gũi và gắn liền với con người,các khái niệm như PC,Laptop,smartphone,android,IOS đã không còn xa lạ với phần đông dân số.Người ta sử dụng các sản phẩm công nghệ này để làm việc,tìm kiếm thông tin,giải trí.Khoảng cách giữa các thiết bị phần cứng và cuộc sống ngày càng được rút ngắn nhằm mang lại những trải nghiệm thực tế nhất cho con người.Một trong số đó là công nghệ augmented reality( viết tắt là AR),công nghệ này mang lại những mô hình,vật thể,thông tin ảo căn cứ vào camera thiết bị.Hiểu 1 cách đơn giản,khi vật thể thật được thiết bị nhận diện,nó sẽ căn cứ vào đó để hiển thị các thông tin,các vật thể ảo xung quanh vật thể thật.Khoảng cách giữa thực tại và các mô hình ảo bị xóa nhòa,người dùng có cảm tưởng như các vật thể ảo hiện hữu ngoài đời thật,có thể tương tác,tìm hiểu,ngắm nhìn,động chạm vào chúngmang lại trải nghiệm rất mới mẻ và thú vị cho người dùng. Song song với đó,ngành công nghiệp game ngày càng phát triển,thu hút lượng khách hàng khổng lồ,mang lại doanh thu lớn cho các nhà phát triển game.Tuy nhiên,môi trường game ngày càng bão hòa khi lượng game xuất hiện càng nhiều,các ý tưởng game ngày càng bị khai thác cạn kiệt dẫn đến sự nhàm chán.Các game hiện nay cũng chủ yếu nhắm vào trải nghiệm cá nhân,người chơi game vận động rất ít,chủ yếu chỉ nhìn màn hình,ngồi 1 chỗ và thao tác bên cạnh thiết bị. Việc nghiên cứu 1 game áp dụng công nghệ AR sẽ mang lại sự mới mẻ cho người chơi game,cách chơi game truyền thống chỉ biết cắm cúi vào thiết bị mà không thể tương tác trực tiếp với các đối tượng trong game,với môi trường trong game không còn nữa.Người chơi sẽ được tương tác với các đối tượng ảo,vận động cơ thể,nâng cao trải nghiệm. Đồ án được xây dựng với mục đích tìm hiểu công nghệ AR,cách thức xây dựng game,vận dụng các công nghệ vào để làm 1 game tương tác với người chơi.
Trang 1ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Đề tài: “Nghiên cứu phát triển game thực tại ảo”
Hà Nội, tháng 11 - 2014
Trang 2LỜI CẢM ƠN
Em xin chân thành cám ơn các thầy cô, cán bộ, công nhân viên của Khoa Công nghệ thông tin, các Khoa, đoàn thể khác của Học viện Công Nghệ Bưu Chính Viễn Thông đã tạo điều kiện tốt cho em thực hiện đề tài tốt nghiệp này.
Em xin gửi lời cảm ơn sâu sắc nhất đến Ts.Phạm Văn Cường, người thầy đã cho em định hướng và tận tình chỉ bảo cho em những ý kiến quý báu Thầy đã giúp đỡ và đi cùng em trong suốt thời gian thực hiện đề tài này, luôn gợi mở cho em cách tiếp cận vấn đề, hướng suy nghĩ độc lập, tìm tòi cái mới, thử thách bản thân với vấn đề mắc phải Tuy thời gian làm
đề tài là ngắn ngủi nhưng từ thầy em đã học hỏi được rất nhiều điều không chỉ về chuyên môn mà còn cả những kỹ năng cần thiết trong cuộc sống, giúp em nhìn nhận ra những khuyết điểm, thiếu sót của bản thân mình.
Em xin bày tỏ lời cảm ơn sâu sắc đến những thầy cô giáo đã giảng dạy em trong bốn năm rưỡi qua, những người đã truyền đạt cho em không chỉ kiến thức, kinh nghiệm quý báu,
mà cả những câu chuyện về cuộc sống, những bài học làm người ý nghĩa Những kiến thức quý báu đó sẽ là hành trang quan trọng giúp em hoàn thiện bản thân và vững bước trong tương lai.
Con xin gửi lời cảm ơn tới cha mẹ, ông bà và toàn thể đại gia đình đã nuôi dưỡng, giáo dục và cho con cuộc đời này.
Xin cảm ơn tập thể lớp D10CN2, D10CNPM2, các câu lạc bộ cùng toàn thể bạn bè, anh chị và các em dưới mái trường PTIT đã luôn là nguồn động viên, giúp đỡ to lớn với tôi trong những năm tháng ở giảng đường đại học.
Đề tài “Nghiên cứu phát triển game thực tại ảo” là một đề tài khá mới mẻ, mặc dù
em đã cố gắng hoàn thành trong phạm vi và khả năng cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Em mong nhận được sự cảm thông và tận tình chỉ bảo, góp ý của thầy cô và các bạn để đề tài có thể được mở rộng, nghiên cứu kỹ hơn.
Em xin chân thành cảm ơn!
Sinh viên thực hiện
Nguyễn Hồng Đông
Trang 3(Của giảng viên phản biện)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Điểm: ……….………(bằng chữ: … ……….)
…………, ngày tháng năm 20
CÁN BỘ - GIẢNG VIÊN PHẢN BIỆN
(ký, họ tên)
Trang 4(Của giảng viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Điểm: ……….………(bằng chữ: … ……….)
Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp?.
…………, ngày tháng năm 20
CÁN BỘ - GIẢNG VIÊN HƯỚNG DẪN
(ký, họ tên)
Trang 5MỤC LỤC iv
DANH MỤC SƠ ĐỒ, HÌNH ẢNH v
DANH MỤC BẢNG viii
MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN 2
1.1 Giới thiệu Augmented Reality: 3
1.1.1 Augmented Reality là gì? 3
1.1.2 .Một số định nghĩa liên quan đến Augmented Reality: 4
1.2 Một số sản phẩm ứng dụng công nghệ Augmented Reality 4
1.1.3 Star Walk, Distant Suns, SkyView và Night Sky: 4
1.1.4 Ứng dụng thử đồ: 5
1.1.5 SpecTrek Light 7
1.1.6 AR Basketball: 8
1.1.7 AR magical battle: 9
1.1.8 AR Concert with Miku 10
1.1.9 Layar: 12
1.3 Đánh giá : 14
1.4 Ý tưởng làm game 3D tương tác ảo: 15
CHƯƠNG 2: PHƯƠNG PHÁP VÀ HỆ THỐNG GAME 17
3.1 Các công nghệ sử dụng 18
3.1.1 Engine Unity: 18
3.1.2 Vuforia Augmented Reality SDK: 32
3.1.3 Csharp (C#) : 38
3.1.4 PHP : 38
3.1.5 Webservice 39
3.2 Phân tích và thiết kế: 40
3.2.1 Bài toán: 40
3.2.2 Khảo sát yêu cầu nghiệp vụ: 40
3.2.3 Phân tích hệ thống: 49
3.2.4 Thiết kế hệ thống: 49
3.3 Phát triển hệ thống 68
3.3.1 Cài đặt Vuforia SDK vào Unity: 68
3.3.2 Xây dựng Target: 70
3.3.3 Sử dụng MasterServer để đăng ký host : 80
3.3.4 Kết nối và lấy dữ liệu từ Web Service: 81
CHƯƠNG 3: KẾT QUẢ THỬ NGHIỆM 84
3.1 Các giao diện và cách sử dụng: 85
3.2 Chạy thử chương trình: 89
3.3 Kết luận và hướng phát triển: 92
Trang 6DANH MỤC SƠ ĐỒ, HÌNH ẢNH
Hình 1.1 Sử dụng AR trong tìm kiếm thông tin 3
Hình 1.2 Ứng dụng xem các tròm sao trên ipad 5
Hình 1.3 Người dùng đưa camera lên bầu trời,ứng dụng sẽ tự xác định vị trí các chòm sao để dựng hình lên camera 5
Hình 1.4 Người dùng đăng nhập vào hệ thống,chọn sản phẩm 6
Hình 1.5 Khi muốn thử đồ,hình ảnh sản phẩm sẽ hiện lên trên camera như người dùng đang mặc đồ thật.Người dùng có thể thay đổi size,vị trí,màu sắc của sản phẩm trên người sao cho hài lòng nhất 7
Hình 1.6 Giao diện ứng dụng trên Android 7
Hình 1.7 Trò chơi sử dụng 1 tấm Marker để qua đó hiển thị 1 chiếc rổ ảo 8
Hình 1.8 Người chơi trượt tay trên màn hình để ném bóng vào chiếc rổ ảo này,mỗi cú ném chính xác sẽ được tính điểm 9
Hình 1.9 Tấm Marker để chơi game,người chơi cần có tấm Marker này đặt ở môi trường thực .9
Hình 1.10 Qua camera của ứng dụng,mọi vật thể 3D được dựng lên trên tấm Marker và thay đổi góc độ độ lớn theo vị trí camera so với Marker 10
Hình 1.11 Người chơi có thể tương tác với các mô hình 3D này như là chúng hiện hữu trong môi trường thực 10
Hình 1.12 Người chơi có thể tự chụp 1 mặt phẳng để ứng dụng hiển thị trên đó 11
Hình 1.13 Sau khi có mặt phẳng tham chiếu,ứng dụng sẽ dựng hình 3D lên chính mặt phẳng đó 11
Hình 1.14 Nhân vật được dựng lên trên bất kỳ mặt phẳng nào người dùng muốn 12
Hình 1.15 Thông tin các địa điểm,các update được hiển thị lên chính môi trường thực 13
Hình 1.16 Trải nhiệm đọc báo bằng Layar khi thông tin sống động hơn bao giờ hết 13
Hình 1.17 Giao diện thiết kế marker của Layar:người dùng có thể chọn ảnh ,text làm Marker,tùy chọn các tiện ích mở link,chơi video… trên tấm marker này 14
Hình 1.18 Ý tưởng game 15
Hình 2.1 Hình ảnh game Far Cry được xây dựng trên Cry Engine 18
Hình 2.2 Logo của Engine Unity 19
Hình 2.3 Giao diện Editor của Unity 20
Hình 2.4 Thanh công cụ trên của sổ Scene 21
Hình 2.5 Chọn đối tượng trong Unity 21
Hình 2.6.Cửa sổ Inspector hiển thị thông tin một đối tượng 22
Hình 2.7 Asset trong Unity 24
Hình 2.8.Các scene của Unity 24
Hình 2.9Kéo tài nguyên vào Scene để sử dụng 25
Hình 2.10.Các thành phần trong đối tượng Camera 26
Hình 2.11.Cách tạo file script mới 26
Hình 2.12 Một file script đang gắn vào đối tượng 27
Hình 2.13 Material và Shader 27
Hình 2.14 Tổng quan kiến trúc Unity 28
Hình 2.15 Chu kỳ sống của thành phần script 30
Hình 2.16 GUI thiết kế từ trình mặc định của Unity 31
Trang 7Hình 2.18 Logo của Vuforia 32
Hình 2.19 Sơ đồ luồng dữ liệu của Vuforia SDK trong một môi trường ứng dụng 34
Hình 2.20 Mục tiêu hình ảnh 35
Hình 2.21 Mục tiêu hình trụ 35
Hình 2.22 Đa mục tiêu 36
Hình 2.23 Nút ảo 37
Hình 2.24 Theo dõi mở rộng để suy ra vị trí của vật thể ảo 38
Hình 2.25 Trao đổi trong ứng dụng webservice 39
Hình 2.26 Biểu đồ usecase tổng quan 41
Hình 2.27 Biểu đồ Usecase ViewLoginScene 41
Hình 2.28 Usecase ViewMenuScene 42
Hình 2.29 Usecase viewHighScoresList 42
Hình 2.30 Usecase GameManager 43
Hình 2.31.Usecase PlayGame 43
Hình 2.32 Quan hệ 3 thành phần trong game 50
Hình 2.33 LoginManager 51
Hình 2.34 Lớp MenuController 52
Hình 2.35 Class TennisScoreKeeper 54
Hình 2.36 Class TenisManager: 55
Hình 2.37 Class OtherPlayerController 56
Hình 2.38 Biểu đồ tuần tự usecase Login 57
Hình 2.39 Biểu đồ tuần tự usecase Resign 58
Hình 2.40 Biểu đồ tuần tự usecase HostAGame 59
Hình 2.41 Biểu đồ tuần tự usecase ViewServersList 60
Hình 2.42 Biểu đồ tuần tự usecase ViewScoresList 61
Hình 2.43 Biểu đồ tuần tự usecase PlayGame 62
Hình 2.44 Biểu đồ tuần tự usecase PauseGame 63
Hình 2.45 Biểu đồ hoạt động usecase Login 64
Hình 2.46 Biểu đồ hoạt động usecase Resign 65
Hình 2.47 Biểu đồ hoạt động usecase PlayGame 66
Hình 2.48 Biểu đồ hoạt động usecase ViewHighScoresList 67
Hình 2.49 Biểu đồ hoạt động usecase ViewServersList 68
Hình 2.50 Import SDK vào Unity 69
Hình 2.51 Đối tượng ARCamera và ImageTarget 69
Hình 2.52 Đối tượng ARCamera 70
Hình 2.53 Giao diện 1 database trong TargetManager 71
Hình 2.54 Giao diện thêm mới 1 Target 71
Hình 2.55Chọn Target cho ImageTarget 72
Hình 2.56 Sau khi set Target thành công,hình Target hiện lên màn hình Editor 72
Hình 2.57 Cấu hình Dataset cho Camera 73
Hình 2.58 Tạo mô hình hiển thị trên Target(1) 73
Hình 2.59 Tạo mô hình hiển thị trên Target(2) 74
Hình 2.60 Tạo mô hình hiển thị trên Target(3) 74
Hình 2.61 Target người dùng tự định nghĩa (1) 75
Trang 8Hình 3.1 Bảng cơ sở dữu liệu tạo trên host 85
Hình 3.2 Các trang php yêu cầu 85
Hình 3.3 Thông tin kết nối cơ sở dữ liệu 85
Hình 3.4 Sửa thông tin kết nối 85
Hình 3.5.Màn hình Login/Resign 86
Hình 3.6 Màn hình Menu Game 86
Hình 3.7 Màn hình xem điểm cao 87
Hình 3.8 Màn hình Connect 87
Hình 3.9 Màn hình Connect with ip 88
Hình 3.10 Màn hình chơi game 88
Hình 3.11 Danh sách host game đang chạy 89
Hình 3.12 màn hình game 90
Hình 3.13 Button tự tạo Target 90
Hình 3.14 Tạo vợt từ tấm Marker 91
Hình 3.15 Thao tác đánh bóng bằng vợt 91
Hình 3.16 Có người chơi thắng 92
Trang 9Bảng 2-1 Các usecase của hệ thống 40
Bảng 2-2 Các tác nhân của hệ thống 40
Bảng 2-3 Scenario của use case Login (Đăng nhập) 44
Bảng 2-4 Scenario của use case Resign (Đăng kí) 45
Bảng 2-5 Kịch bản use case ViewHighScoresList 45
Bảng 2-6 Scenario của use case HostAGame 46
Bảng 2-7 Scenario của use case ViewServersList 47
Bảng 2-8 Scenario của use case PlayGame (Chơi game) 48
Bảng 2-9 Các lớp thực thể 49
Bảng 2-10 Danh sách các lớp điều khiển 49
Bảng 2-11 Bảng CSDL scores 68
Trang 10số.Người ta sử dụng các sản phẩm công nghệ này để làm việc,tìm kiếm thông tin,giảitrí.Khoảng cách giữa các thiết bị phần cứng và cuộc sống ngày càng được rút ngắn nhằmmang lại những trải nghiệm thực tế nhất cho con người.Một trong số đó là công nghệaugmented reality( viết tắt là AR),công nghệ này mang lại những mô hình,vật thể,thông tin ảocăn cứ vào camera thiết bị.Hiểu 1 cách đơn giản,khi vật thể thật được thiết bị nhận diện,nó sẽcăn cứ vào đó để hiển thị các thông tin,các vật thể ảo xung quanh vật thể thật.Khoảng cáchgiữa thực tại và các mô hình ảo bị xóa nhòa,người dùng có cảm tưởng như các vật thể ảo hiệnhữu ngoài đời thật,có thể tương tác,tìm hiểu,ngắm nhìn,động chạm vào chúng-mang lại trảinghiệm rất mới mẻ và thú vị cho người dùng.
Song song với đó,ngành công nghiệp game ngày càng phát triển,thu hút lượng kháchhàng khổng lồ,mang lại doanh thu lớn cho các nhà phát triển game.Tuy nhiên,môi trườnggame ngày càng bão hòa khi lượng game xuất hiện càng nhiều,các ý tưởng game ngày càng bịkhai thác cạn kiệt dẫn đến sự nhàm chán.Các game hiện nay cũng chủ yếu nhắm vào trảinghiệm cá nhân,người chơi game vận động rất ít,chủ yếu chỉ nhìn màn hình,ngồi 1 chỗ vàthao tác bên cạnh thiết bị
Việc nghiên cứu 1 game áp dụng công nghệ AR sẽ mang lại sự mới mẻ cho người chơigame,cách chơi game truyền thống chỉ biết cắm cúi vào thiết bị mà không thể tương tác trựctiếp với các đối tượng trong game,với môi trường trong game không còn nữa.Người chơi sẽđược tương tác với các đối tượng ảo,vận động cơ thể,nâng cao trải nghiệm
Đồ án được xây dựng với mục đích tìm hiểu công nghệ AR,cách thức xây dựng game,vậndụng các công nghệ vào để làm 1 game tương tác với người chơi
Nội dung của đồ án gồm những chương sau:
Chương 1: Giới thiệu công nghệ augmented reality và các ý tưởng
Nôi dụng của chương 1 tập trung giơi thiệu về công nghệ AR,các sản phẩm của côngnghệ AR đã và đang xuất hiện trên thế giới cũng như trình bày ý tưởng phát triển sản phẩm
Chương 2: Phương pháp và xây dựng hệ thống game
Nội dung của chương 2 sẽ tập trung trình bày các công nghệ liên quan để tạo ra 1 game
AR, cách xây dựng thệ thống,các vấn đề và cách giải quyết trong quá trình xây dựng game
Chương 3: Kết quả thử nghiệm và kết luận
Nội dung của chương 3 sẽ cho thấy sản phẩm,cách cài đặt và vận hành,tổng hợp những gì
đồ án thu được,rút ra những điểm được và chưa được,đề ra hướng phát triển của đồ án trongtương lai
Trang 11CHƯƠNG 1: TỔNG QUAN Nội dung của chương này gồm có:
☞ Giới thiệu về công nghệ Augmented Reality
☞ Trình bày các ứng dụng của công nghệ Augmented Reality
☞ Trình bày ý tưởng và hướng phát triển
Trang 121.1 Giới thiệu Augmented Reality:
1.1.1 Augmented Reality là gì?
Trước khi nói tới Augmented Reality, chúng ta cần làm rõ khái niệm Virtual Reality(Thực tế ảo) VR là thuật ngữ dùng để miêu tả một môi trường mô phỏng bằng máy tính VRkhông phải là một phát minh mới, mà ngay từ năm 1962 Morton Heilig (Mỹ) đã phát minh rathiết bị mô phỏng SENSORAMA Tuy nhiên cũng như nhiều ngành công nghệ khác, VR chỉthực sự được phát triển ứng dụng rộng rãi trong những năm gần đây nhờ vào sự phát triển củatin học (phần mềm) và máy tính (phần cứng) Ngày nay VR đã trở thành một ngành côngnghiệp và thị trường VR tăng trưởng hàng năm khoảng 21% và dự tính đạt khoảng 3,4 tỷ $năm 2005 (theo Machover, 2004).Theo dự đoán của Gartner (tổ chức nghiên cứu thị trườngtoàn cầu), VR đứng đầu danh sách 10 công nghệ chiến lược năm 2009
Tại các nước phát triển, chúng ta có thể nhận thấy VR được ứng dụng trong mọi lĩnhvực: Khoa học kỹ thuật, kiến trúc, quân sự, giải trí, du lịch, địa ốc và đáp ứng mọi nhu cầu:Nghiên cứu- Giáo dục- Thương mại-dịch vụ Y học, du lịch là lĩnh vực ứng dụng truyền thốngcủa VR Bên cạnh đó VR cũng được ứng dụng trong giáo dục, nghệ thuật, giải trí, du lịch ảo(Virtual Tour), bất động sản Trong lĩnh vực quân sự, VR cũng được ứng dụng rất nhiều ởcác nước phát triển Bên cạnh các ứng dụng truyền thống ở trên, cũng có một số ứng dụngmới nổi lên trong thời gian gần đây của VR như: VR ứng dụng trong sản xuất, VR ứng dụngtrong ngành rôbốt, VR ứng dụng trong hiển thị thông tin (thăm dò dầu mỏ, hiển thị thông tinkhối, ứng dụng cho ngành du lịch, ứng dụng cho thị trường bất động sản ) VR có tiềm năngứng dụng vô cùng lớn Có thể nói tóm lại một điều: Mọi lĩnh vực "có thật " trong cuộc sốngđều có thể ứng dụng "thực tế ảo" để nghiên cứu và phát triển hoàn thiện hơn
Đa phần các môi trường tạo ra bởi VR chủ yếu là hình ảnh hiển thị trên màn hình máytính hay thông qua kính nhìn ba chiều, tuy nhiên một vài mô phỏng cũng liên quan các loạigiác quan khác khác như thính giác hay xúc giác
Hình 1.1 Sử dụng AR trong tìm kiếm thông tin
Trang 13Được phát triển từ VR, Augmented Reality (AR) được hiểu là công nghệ cho phép conngười quan sát những vật trong thế giới thật thông qua một thiết bị điện tử nào đó Khi đóngoài những gì mắt thường ta nhìn thấy, thiết bị điện tử còn cho ta biết những thông tin khácliên quan đến vật đang được quan sát Tóm lại, trong khi VR thay thế hoàn toàn thực tại bởimột thế giới mô phỏng, AR chỉ bổ sung các chi tiết vào thế giới thực tại.
Công nghệ này thường được biết đến với các ứng dụng dẫn đường thế hệ mới, giúpngười dùng tương tác trực tiếp với môi trường xung quanh trên các điện thoại chạy iOS hayAndroid Nhưng AR không chỉ có thế, công nghệ thực tế tăng cường này mở ra một chân trờimới cho ngành công nghệ thông tin thế giới
Ở tầm cao hơn, công nghệ này còn có thể nhận diện được những cử chỉ trên khuôn mặtrồi từ đó đưa ra cách ứng xử cho phù hợp, toả mùi hương để xoa dịu hay phân tích giọng nói
để biết cảm xúc của họ Nghe có vẻ giống truyện khoa học viễn tưởng, nhưng mục đích của
AR là làm cho cuộc sống của chúng ta thật nhất đến mức có thể
Ở Việt Nam, tuy công nghệ này chưa được biết đến và ứng dụng nhiều nhưng cùng với
đà phát triển của nó trên thế giới, AR hứa hẹn sẽ là một công nghệ chủ đạo trên các thiết bị diđộng trong một tương lai không xa
1.1.2 .Một số định nghĩa liên quan đến Augmented Reality:
Vật thể ảo:Đây là các vật thể được xây dựng bằng đồ họa máy tính,là các vật thể không
có thật
Camera:Đây là thiết bị phần cứng bắt buộc phải có để nhận dạng vật thể,qua đó dựng
hình các vật thể ảo lên trên màn hình thiết bị
Target :đây là mục tiêu mà camera nhận diện,sau quá trình xử lý,Target được xác định
và phân biệt với các đối tượng khác.Target sau khi được nhận diện camera sẽ tính toánhướng,vị trí,độ nghiêng của Target qua đó thực hiện việc dựng các vật thể ảo lên trên mànhình
Marker:Đây là 1 cách để ứng dụng nhận diện Target,nhận diện bằng Marker có nghĩa
là trên bề mặt Target phải có những kí hiệu riêng,thông thường là các bức ảnh,trên đó đượcnhận diện các điểm chuẩn.Camera quét để tìm các điểm chuẩn trên Marker để kết luận đó làTarget
Markerless:Đây là cách nhận diện Target cao cấp hơn Market.Marker cần có khuôn
mẫu cố định,cần đối chiếu với 1 tập các điểm chuẩn có sẵn,Markerless thì lại dựa vào đặcđiểm môi trường nó thu nhận được để kết luận đó có phải là Target hay không
Tracker:Đây chính là bộ theo dõi chứa các thuật toán để camera phát hiện ra và theo
dõi vật thể
Dataset:Mỗi 1 target marker hay makerless đều cần có các dữ liệu đầu vào để Tracker
căn cứ vào đó nhận diện.Các dữ liệu đầu vào này gọi là Dataset
1.2 Một số sản phẩm ứng dụng công nghệ Augmented Reality
Để thấy được hướng phát triển cũng như những trải nghiệm khác biệt mà AugmentedReality mang lại,sau đây là 1 số ví dụ về các sản phẩm áp dụng Augment Reality đã và đangxuất hiện trên thế giới
1.1.3 Star Walk, Distant Suns, SkyView và Night Sky:
Áp dụng công nghệ la bàn (compass) và gia tốc kế (accelerometer),và không cần tấmMarker để định vị,các phần mềm kể trên thay đổi cách nghiên cứu truyền thống về thiên văn
Trang 14học Sau khi đã được cài đặt, chỉ cần trỏ thiết bị lên bầu trời đêm, các ứng dụng này sẽ tựđộng kết nối đến hệ thống máy chủ, sử dụng các dữ liệu GPS và công nghệ nhận diện hìnhảnh, qua đó mô phỏng và đưa ra thông tin chi tiết về các chòm sao, hành tinh hay tàu khônggian theo thời gian thực.
Hình 1.2 Ứng dụng xem các tròm sao trên ipad
Hình 1.3 Người dùng đưa camera lên bầu trời,ứng dụng sẽ tự xác định vị trí các chòm
sao để dựng hình lên camera
Bằng các ứng dụng này,việc nghiên cứu thiên văn học trở nên trực quan và gần gũi hơncách thức đọc sách hay xem ảnh rất nhiều.Khi ta không phải tính toán vị trí tọa độ,hướng đểtìm vị trí các vật thể thiên văn nữa,tất cả đã được máy tính toán sẵn và hiển thị lên ngay trướcmắt
Trang 151.1.4 Ứng dụng thử đồ:
Chạy trên các trang website bán hàng hoặc các màn hình tại các cửa hàng,ứng dụng thử
đồ yêu cầu người dùng đứng trước webcam để có thể thử luôn sản phẩm.So với việc muahàng truyền thống,phải ra tận nơi,chọn đúng size để thử thì ứng dụng đã khến việc thử các sảnphẩm trở nên thuận tiện hơn bao giờ hết.Các trang phục ảo có thể thay đổi vị trí,size,màu sắcsao cho vừa vặn với người dùng nhất
Ứng dụng hoạt động theo nguyên tắc yêu cầu người dùng có 1 tấm Marker để xác định
vị trí ban đầu của người dùng,qua đó dựng lên hình sản phầm trên chính camera.Sau khingười dùng cầm tấm Marker để ướm cho trang phục ảo vừa với vị trí của mình đang đứng,họ
có thể bỏ tấm Marker ra và bắt đầu thử đồ.Ứng dụng còn nhận ra việc bàn tay người dichuyển để bắt các sự kiện trên nút bấm ảo,giúp người dùng đứng xa camera vẫn có thể chỉnhđược màu sắc,size,loại sản phẩm
Công ty chuyên nghiên cứu về vấn đề này có thể kể đến zugara
Website: http://zugara.com
Hình 1.4 Người dùng đăng nhập vào hệ thống,chọn sản phẩm
Trang 16Hình 1.5 Khi muốn thử đồ,hình ảnh sản phẩm sẽ hiện lên trên camera như người dùng đang mặc đồ thật.Người dùng có thể thay đổi size,vị trí,màu sắc của sản phẩm trên
người sao cho hài lòng nhất.
Ứng dụng giúp người dùng gần như được thử đồ ngay tại nhà mà không cần trực tiếp racác cửa hàng.Người dùng sẽ chủ động hơn,tiết kiệm thơi gian hơn trong việc lựa chọn,thử cácsản phẩm.Sau khi thử sản phầm vừa ý,có thể yên tâm mua hàng online rất nhanh gọn và tiệnlợi.Đồng thời phía người bán hàng không mất mặt bằng để người mua thử sản phẩm,khôngmất công nhập nhiều size sản phẩm,lại có thể nhận đặt hàng nhanh chóng.Đây là ứng dụng rấthay cho cả người mua lần người bán
1.1.5 SpecTrek Light
Link Android : https://play.google.com/store/apps/details?id=com.spectrekking.light&hl=vi
Hình 1.6 Giao diện ứng dụng trên Android
Trang 17Người chơi ban đầu được cung cấp 1 bản đồ chính là nơi người chơi đang ở Sử dụngGPS ,trò chơi xác định các vị trí các con ma ảo trên bản đồ,làm như đang có các con ma tồntại thật xung quanh khu vực người chơi đang ở vậy.Người chơi sau đó đi đến các điểm có con
1.1.6 AR Basketball:
Game chạy trên nền di động Android và IOS
Trò chơi không khác nhiều so với game 3D truyền thống,nhiềm vụ người chơi đơn giản
là hất bóng vào rổ.Mỗi cú ném chính xác sẽ được công thêm điểm
Điểm khác biệt đó là ứng dụng sử dụng camera sau của thiết bị để nhận diện tấmmarker, qua đó hiển thị lên 1 cái rổ,người chơi dùng ngón tay để hất bóng vào rổ.Trò chơimang lại cảm giác tương tác thật hơn nhiều so với các game 3D truyền thống, khi mà cảmtưởng chiếc rổ hiện lên trên chính mặt bàn của mình
Hình 1.7 Trò chơi sử dụng 1 tấm Marker để qua đó hiển thị 1 chiếc rổ ảo
Trang 18Hình 1.8 Người chơi trượt tay trên màn hình để ném bóng vào chiếc rổ ảo này,mỗi cú
ném chính xác sẽ được tính điểm 1.1.7 AR magical battle:
Đây là 1 sản phẩm game trên Android
Link: http://appvn.com/android/details?id=com.fairylogic.game.ARMagicalBattle
Game thuộc dạng thủ trụ,trong bạn sẽ phải bắn hạ kẻ thù để bảo vệ thành trì củaminh,game còn có 1 số nâng cấp hộ người chơi như : mua lính,tăng skill,nâng cấp nhà v v.v Yêu cầu:Android2.2+
Bạn khởi động game và chĩa camera vào tấm hình tham chiếu AR Marker,mọi hình ảnh
sẽ hiện lên như tương tác ngoài đời thật vậy
Hình 1.9 Tấm Marker để chơi game,người chơi cần có tấm Marker này đặt ở môi
trường thực
Trang 19Hình 1.10 Qua camera của ứng dụng,mọi vật thể 3D được dựng lên trên tấm Marker và
thay đổi góc độ độ lớn theo vị trí camera so với Marker.
Hình 1.11 Người chơi có thể tương tác với các mô hình 3D này như là chúng hiện hữu
trong môi trường thực
Game vận dụng công nghệ thực tại ảo,hiển thị các mô hình trên tấm Marker.Khi thayđổi vị trí thiết bị,góc nhìn các mô hình 3D căn cứ vào đó cũng thay đổi vị trí tọa độ theo,saocho ta có cảm giác như chúng đứng cố định trên tấm Marker.Kết hợp với đồ họa 3D đẹpmắt,Game cho người chơi cảm giác rất chân thực,là 1 trải nghiệm game 3D khá ấn tượng,chắcchắn sẽ thu hút hơn các game 3D đơn thuần
1.1.8 AR Concert with Miku
Trang 20Hình 1.12 Người chơi có thể tự chụp 1 mặt phẳng để ứng dụng hiển thị trên đó
Quá trình tạo Marker:Đầu tiên người dùng chụp lại 1 mặt phẳng
Hình 1.13 Sau khi có mặt phẳng tham chiếu,ứng dụng sẽ dựng hình 3D lên chính mặt
phẳng đó
Trang 21Ứng dụng sẽ căn cứ vào tấm Marker tự tạo này để hiển thị nhân vật
Hình 1.14 Nhân vật được dựng lên trên bất kỳ mặt phẳng nào người dùng muốn
Hiển thị được trên các mặt phẳng khác nhau,không bó hẹp trong phạm vi 1Marker ,người dùng cũng chủ động hơn khi không phải mang theo mình tấm Marker của nhàsản xuất mà có thể tạo ra Marker từ bất kì đâu.Thử tưởng tượng bạn có thể dùng ứng dụng,tạo
ra 1 vũ công ảo ở bất kì đâu,sẽ sống động hơn so với các thưởng thức ca nhạc trên video bìnhthường rất nhiều
1.1.9 Layar:
Homepage: https://www.layar.com/
Android:https://play.google.com/store/apps/details?id=com.layar
IOS: https://itunes.apple.com/us/app/layar-augmented-reality/id334404207?mt=8
Layar là ứng dụng chạy trên iOS, Android, BlackBerry and Google Glass
Layar là phần mềm android mua sắm và cung cấp nhiều thông tin giải trí, du lịch hấpdẫn và tiện ích nhất giựa trên công nghệ thực tại ảo Với Layar bạn sẽ được khám phá nhiềuđiều thú vị xung quanh cuộc sống của chúng ta,thưởng thức mọi thứ 1 cách trực quan và dễdàng hơn rất nhiều
Trang 22Hình 1.15 Thông tin các địa điểm,các update được hiển thị lên chính môi trường thực
Hình 1.16 Trải nhiệm đọc báo bằng Layar khi thông tin sống động hơn bao giờ hết
Các chức năng chính của phần mềm Layar:xem tạp chí trở nên sống động hơn với chứcnăng xem video trực tiếp,dễ dàng mua sắm các mặt hàng cần thiết với danh sách các siêu thị,cửa hàng gần nhất,chia sẻ nhiều thông tin hữu ích thông qua các trang web và mạng xã hộikhác nhau,tìm các phương tiện công cộng như: máy ATM , nhà hàng, quán ăn, công viên.tìmkiếm logo và nhà sản xuất trên các tạp chí, báo và các tài liệu khác,hỗ trợ thêm chức năngquét mã vạch QR - mã vạch sản xuất các hàng hóa,cập nhật các địa điểm tham quan bằngcách trailer, tìm hiểu thông tin, bình luận, đánh giá
Một chức năng đặc biệt của phần mềm Layar đó là search layar Khi bạn dùng chứcnăng này, bạn sẽ tìm kiếm dễ dàng các địa điểm mua sắm, vui chơi, giải trí hấp dẫn, các rạpchiếu phim, các quán ăn, đồ uống rất gần vị trí của bạn Ứng dụng Layar có thể giúp bạn đặtphòng nhà nghỉ trước, đặt vé xem phim trước, chỉ đường hướng dẫn các bạn đến các địa điểmnhanh chóng và thuận tiện nhất
Trang 23Đối với các doanh nghiệp,bên thứ 3,muốn sử dụng Layar như 1 phương tiện quảngcáo,hiển thị hình ảnh,video… lên sản phẩm của họ,Layar cung cấp cho họ bộ công cụ để tựthiết kế marker cho riêng mình:
Hình 1.17 Giao diện thiết kế marker của Layar:người dùng có thể chọn ảnh ,text làm Marker,tùy chọn các tiện ích mở link,chơi video… trên tấm marker này.
Rõ ràng Layar là 1 sản phẩm đã mang đến cho người dùng 1 tập công cụ để khai thác thế giới với thông tin và màu sắc phong phú và đầy đủ hơn rất nhiều bình thường.Layar cũng biến mình thành 1 kênh quảng cáo cực kỳ hấp dẫn thu hút nhiều đối tác khi cung cấp cho các doanh nghiệp phương án giới thiệu sản phẩm của họ 1 cách chân thực trên các đồ vật thông thường.Các doanh nghiệp đối tác với Layar,chỉ sau vài thao tác sẽ được quảng cáo sản phẩm của họ,thậm chí là miễn phí,một cách rất độc đáo và hấp dẫn so với cách quảng cáo trên
truyền hình hay báo chí
1.3 Đánh giá :
Các ứng dụng augmented reality đã có mặt ở rất nhiều các mặt cuộc sống,thông tin trởnên trực quan,giải trí trở nên sống động,các sản phẩm công nghệ trở nên có tính tương tác caohơn
Trải nghiệm augmented reality mang lại cho người dùng là rất tích cực.Khoảng cáchgiữa thực tế và công nghệ trở nên gần lại.So với các ứng dụng truyền thống,khi mà mọi thứchỉ hiển thị trên màn hình thiết bị và không thể tương tác với môi trường,các ứng dụngaugmented reality dù là đơn giản nhưng mang lại cảm giác thực tế và thu hút hơn nhiều cácsản phẩm truyền thống.Chính trải nghiệm mới mẻ này là điểm khác biệt lôi kéo được sự chú ýcủa người dùng đến các sản phẩm augmented reality
Các sản phẩm augmented reality muốn mang lại tương tác chân thực nhất trong môitrường thường xoay quanh các mô hình 3D.Việc xây dựng sản phẩm 3D áp dụng công nghệaugmented reality là vấn đề đáng được nghiên cứu và phát triển
Trang 241.4 Ý tưởng làm game 3D tương tác ảo:
Áp dụng công nghê augmented reality cùng với các mô hình 3D sẽ mang lại trải nghiệmchân thực cho người dùng.Chúng ta sẽ nghiên cứu cách tạo ra 1 sản phẩm game 3D mà trong
đó người chơi có thể sử dụng vật thể thực tương tác với các đối tượng 3D ảo
Các ứng dụng trên chủ yếu sử dụng tấm Marker có sẵn,các tấm Marker cũng chủ yếuđịnh vị những đối tượng tĩnh-Điều này giúp tấm Marker được nhận diện chính xác hơn,tuynhiên lại giảm tính tương tác khi mọi mô hình 3D có vẻ chỉ chuyển động cứng trên 1 mặtphẳng cố định
Ta sẽ phát triển 1 game với tấm Marker là vật thể động,tuy khó khăn hơn trong việcnhận dạng,nhưng sẽ tăng tính tương tác cho sản phẩm
Đồng thời sẽ sử dụng công nghệ Marker tự định nghĩa để thuận tiện hơn cho ngườidùng
Các sản phẩm trên đề cập chưa mạnh về tính tương tác giữa nhiều người dùng vớinhau,chỉ mang tính trải nghiệm cá nhân.Ta sẽ áp dụng chế độ multiplayer vào sản phẩm gamenày để 2 người chơi có thể tương tác với nhau
Các sản phẩm trên có những sản phẩm phải chạy trên thiết bị PC hoặc những thiết bị tạicửa hàng khá bất tiện,ta sẽ hướng đến phát triển các sản phẩm trên nền tảng di động,nền tảngAndroid và IOS
Ý tưởng là tạo ra 1 sản phẩm game có thể vận dụng công nghệ augmented reality,khôngnhững người chơi tương tác được với máy mà người chơi còn có thể tương tác với người chơikhác:1 sản phẩm game 3D multiplayer áp dụng khả năng nhận diện đồ vật của công nghệaugmented reality
Ở đây ta sẽ xây dựng game đánh bóng bàn,người chơi sử dụng camera của thiết bị.Khicamera được bật lên,1 bàn chơi ảo cùng 1 bóng bàn ảo sẽ hiện lên.Người chơi cầm 1 tấmmarker đứng trước camera,camera sẽ nhận diện tấm marker để dựng hình vợt bóng bàn.Ngườichơi sẽ cầm tấm marker để đánh bóng bàn.Người chơi game sẽ chơi qua mạng với người chơikhác,đánh bóng bàn 1 đấu 1,luật chơi như môn bóng bàn truyền thống
Trang 25Hình 1.18 Ý tưởng game
SpecTrek Light
Star Walk
Thử đồ
AR Basketball
AR magical battle
AR Concert with Miku
Trang 26CHƯƠNG 2: PHƯƠNG PHÁP VÀ HỆ THỐNG GAME
Nội dung của chương này gồm có:
☞ Giới thiệu các công nghệ sử dụng
☞ Phân tích và thiết kế hệ thống
☞ Phát triển hệ thống
Trang 273.1 Các công nghệ sử dụng
3.1.1 Engine Unity:
3.1.1.1 Giới thiệu về Game Engine:
Game Engine là một phần mềm được viết cho mục đích thiết kế và phát triển videogame Chức năng cốt lõi của Game Engine phần lớn nằm trong công cụ dựng hình (kết xuất
đồ họa) cho các hình ảnh 2 chiều (2D) hay 3 chiều (3D), công cụ vật lý (hay công cụ tính toán
và phát hiện va chạm), âm thanh, mã nguồn, hình ảnh động (Animation), trí tuệ nhân tạo,phân luồng, tạo dòng dữ liệu xử lý, quản lý bộ nhớ, dựng ảnh đồ thị, và kết nối mạng
Lý do chọn Engine Unity:
Hiện nay, chúng ta có rất nhiều Engine như: Cry Engine, Unreal Engine, SourceEngine, ID Tech Engine, Unity Engine và những cái tên khác như RenderWare Engine, GameBryo Engine và các Engnie mã nguồn mở: Orge Engine, Panda3D Engnine, jMonkeyEngine, Trong đó Source Engine và ID Tech Engine là các lão làng trong ngành côngnghiệp Game, Cry Engine và Unreal Engine là hai tân binh đáng chú ý nhất do những thànhcông đáng kể của họ trong những năm gần đây Về mặt đồ họa, Cry Engine được đánh giá cao
và hầu như không có đối thủ, hình ảnh 3D của Cry Engine cho chất lượng chân thực minhchứng qua các tựa game như Far Cry hay Crysis,
Hình 2.19 Hình ảnh game Far Cry được xây dựng trên Cry Engine
Tuy nhiên, Cry Engine rất kén chọn vì chỉ những máy cấu hình thật cao mới có thể đápứng được Bên cạnh đó, Unreal Engine cũng cho chất lượng đồ họa không kém, mà không đòihỏi cấu hình quá cao Các hệ máy laptop mua cách đây 4-5 năm trở lại đa số là dùng được.Các Engnie khác được kể tên ở trên thay nhau vị trí top 10 sau Cry Engnine và UnrealEngine
Nếu có tiền, có nhiều kinh nghiệm và có một nhóm làm việc chuyên nghiệp, lúc đó
ta mới nên nghĩ tới Cry Engine hay Unreal Engnie Còn nếu muốn sử dụng mã nguồn mởcho tiết kiệm thì ta phải cần nhiều thời gian và sức lực hơn để tìm hiểu Orge Engine hayPanda Engine, Vì thế lựa chọn sáng giá nhất cho các tân binh trong lĩnh vực làm game, có ít
Trang 28kinh nghiệm, ít tiền, nhưng không muốn phải bỏ quá nhiều công sức tìm hiểu lại những gìngười khác đã làm chính là Unity Engine.
Về mặt đồ họa, Unity không so sánh được với Cry Engine nhưng đủ làm hài lòngnhững người dùng phổ thông Unity không đòi hỏi máy cấu hình cao, thêm nữa Unity đặc biệtchú ý đến sự tiện dụng Việc làm game, làm phim sử dụng Unity Engine so với các Enginecòn lại dễ dàng hơn rất nhiều vì đối tượng mà Unity hướng đến chủ yếu là những người dùngkhông chuyên sâu Chúng ta có thể kéo thả, kế thừa, viết Script, tổ chức các thành phần,import – export các tài nguyên (model, texture, mesh, ) đóng gói các đối tượng hoàn chỉnh
và chia sẻ nó một cách dễ dàng với Unity
Cuối cùng là về vấn đề thương mại, Unity cung cấp bản miễn phí cho các ngườidùng cá nhân và các công ty có thu nhập dưới 100.000 USD Chúng ta có thể tạo các ứngdụng, các mô hình, các Game cho riêng mình hoặc bán nó trên Unity Store mà không lo vềvấn đề vi phạm bản quyền Nếu muốn bán sản phẩm của mình trên Unity Store thì chúng taphải trả 30% hoa hồng Nếu có nhu cầu cao hơn, sử dụng bản Pro, chúng ta sẽ phải trả 1.500USD, tương đương khoảng 32 triệu VNĐ với rất nhiều tính năng cao cấp và tiện dụng
3.1.1.2 Engine Unity
Unity là một 3D Game Engine, là một công cụ thiết kế Game dành cho PC, Mac vànhiều hệ máy di động khác
Giới thiệu chung
Hình 2.20 Logo của Engine Unity
+ Nhà phát triển: Unity Technologies
+ Phiên bản mới nhất: 4.5
+ Được viết bởi ngôn ngữ C++
+ Phát triển Game cho các hệ điều hành: Windows, Mac OS X (tạo và đónggói), Nintendo Wii, iPhone/iPad, Xbox 360, Android, Sony PlayStation 3 (chỉ đóng gói; cầngiấy phép bổ sung cho từng nền tảng)
+ Giấy phép: Độc quyền
+ Website: www.unity3d.com
Unity được sự hỗ trợ của Just-In-Time Compilation (JIT), sử dụng thư viện mãnguồn mở C++ Mono Bằng việc sử dụng JIT, những Engine như Unity có thể tận dụng lợithế của tốc độ biên dịch Ngoài thư viện Mono, Unity cũng tận dụng chức năng của những thưviện phần mềm khác vào chức năng của nó, như Engine mô phỏng vật lý PhysicX của Nvidia,OpenGL và DirectX cho kết xuất hình ảnh 3D, OpenAL cho âm thanh Tất cả các thư việnnày được xây dựng thành những tính năng tự động hoặc công cụ trực quan vào Unity, vì vậychúng ta không cần phải lo lắng về việc học thế nào để sử dụng chúng một cách riêng lẻ
Trang 29Unity có một cộng đồng người dùng rất lớn mạnh, luôn chia sẻ những Plugins, công
cụ của họ dưới phần mềm gói bổ sung
S l ơ lược sự hình thành và phát triển của Unity ược sự hình thành và phát triển của Unity ự hình thành và phát triển của Unity c s hình thành và phát tri n c a Unity ển của Unity ủa Unity
Hình thành:
Phần lõi của Unity ban đầu được viết bởi Joachim Ante vào năm 2001 Sau đó công tyđược hình thành vào năm 2005 và bắt đầu với phiên bản 1.0 Đến năm 2007, Unity được nânglên phiên bản 2.0 Unity bắt đầu hỗ trợ iPhone vào năm 2008 Vào tháng 6/2010, Unity chínhthức hỗ trợ Android và cho ra đời phiên bản 3.0 có hỗ trợ Android vào tháng 9/2010 Có thể
thấy tốc độ phát triển của Unity khá nhanh.
Giải thưởng:
Unity đã đoạt được nhiều giải lớn với những giải chính sau:
+ Năm 2006, Unity đạt "Best Use of Mac OS X Graphics" tại Apple's WWDC Đây làlần đầu tiên một công cụ phát triển game đạt được chất lượng do giải thưởng uy tín này đưa
ra
+ Năm 2009, Unity Technologies có tên trong "Top 5 công ty game của năm" doGamasutra tổ chức + Năm 2010, Unity đoạt giải Best Engine Finalist do Develop Magazinebình chọn, giải Technology Innovation Award của Wall Street Journal ở thể loại phần mềm
Khách hàng:
Unity được trên 250.000 người đăng ký sử dụng gồm Bigpoint, Cartoon Network,Coca-Cola, Disney, Electronic Arts, LEGO, Microsoft, NASA, Ubisoft, Warner Bros, cáchãng phim lớn nhỏ, các chuyên gia độc lập, sinh viên và những người đam mê
S nét v giao di n c a Unity ơ lược sự hình thành và phát triển của Unity ề giao diện của Unity ện của Unity ủa Unity
Giao diện Unity, giống như nhiều môi trường làm việc khác, layout có thể tùy chỉnh.Layout của Unity bao gồm nhiều tab khác nhau và có thể bật tắt Chúng ta hãy xem xét mộtcách bố trí giao diện Unity điển hình:
Hình 2.21 Giao diện Editor của Unity
Trang 30Như hình trên chúng ta thấy có 5 khung khác nhau:
Scene [1] – nơi xây dựng trò chơi
Hierarchy [2] – danh sách các đối tượng trong một cảnh game
Inspector [3] – màn hình cài đặt cho tài nguyên/đối tượng đang được chọn
Game [4] – cửa sổ xem trước game, chỉ hoạt động ở chế độ chơi (khi nhấn
Play)
Project [5] – danh sách các tài nguyên trong project, đóng vai trò như một thư viện
Cửa sổ Scene và Hierarchy:
Cửa sổ Scene là nơi chúng ta sẽ xây dựng toàn bộ các đối tượng trong game Cửa sổcung cấp nhiều góc nhìn khác nhau, có thể nhìn dạng phối cảnh hoặc dạng song song Chúng
ta có thể kéo thả đối tượng trên cửa sổ này, di chuyển, xoay…
Hình 2.22 Thanh công cụ trên của sổ Scene
Cửa sổ Scene cũng kèm theo bốn nút điều khiển tiện lợi như hình trên Truy cập từ bànphím bằng cách sử dụng các phím Q, W, E, và R Các phím thực hiện các hoạt động sau đây:+ Công cụ bàn tay [Q]: công cụ này cho phép di chuyển trong cửa sổ Scene, xoay gócnhìn, phóng to, thu nhỏ góc nhìn
+ Công cụ di chuyển [W]: Công cụ này dùng để di chuyển một đối tượng
+ Công cụ xoay [E]: Công cụ này cho phép chúng ta xoay nhân vật theo một trục nào đótrong không gian
+ Công cụ tỷ lệ [R]: Công cụ này cho phép chúng ta tăng giảm tỷ lệ kích thước của đốitượng
Khi chọn một đối tượng trong cửa sổ Scene, đối tượng này sẽ được tự động chọn trongcửa sổ Hierarchy và ngược lại
Hình 2.23 Chọn đối tượng trong Unity
Inspector:
Inspector sẽ hiển thị tất cả thông tin, các thành phần trong đối tượng game đang chọn,
và cho phép điều chỉnh các biến của các thành phần này Có thể xem cửa sổ này như cửa sổProperties khi design giao diện Winform trên Visual Studio
Trang 31Hình 2.24.Cửa sổ Inspector hiển thị thông tin một đối tượng
Cửa sổ Game:
Cửa sổ này sẽ hiển thị những gì có trong cửa sổ Scene và sẽ hoạt động khi nhấn nútPlay Trong cửa sổ này chúng ta có thể chọn các kích cỡ hiển thị khác nhau để build cho cácloại máy khác nhau Chúng ta có thể chơi thử game trên cửa sổ này khi đã nhấn nút Play Lưu
ý rằng khi cửa sổ này hoạt động rồi thì mọi chỉnh sửa trên cửa sổ Scene và cài đặt cho các đốitượng chỉ là tạm thời và khi nhấn nút Stop, cửa sổ này về lại trạng thái tĩnh thì mọi chỉnh sửatrước đó là không còn
Cửa sổ Project:
Cửa sổ Project thể hiện nội dung bên trong thư mục Assets của project chúng ta Khithêm tài nguyên vào thư mục Assets ngay lập tức chúng sẽ tự động được cập nhập vào projectUnity của chúng ta
Các đ c đi m và tính năng c a Unity ặc điểm và tính năng của Unity ển của Unity ủa Unity
Rendering (kết xuất hình ảnh)
Giống như tất cả các Engine hoàn chỉnh khác, Unity hỗ trợ đầy đủ khả năng kết xuấthình ảnh cùng nhiều hỗ trợ cho phép áp dụng các công nghệ phổ biến trong lĩnh vực 3D nhằmcải thiện chất lượng hình ảnh
Một số hỗ trợ:
- Unity cung cấp 100 Shaders với đầy đủ các loại phổ biến nhất
- Hỗ trợ Surface Shaders, Occlusion Culling, GLSL Optimizer
- Hỗ trợ LOD
Lighting (Ánh sáng)
Unity cung cấp nhiều giải pháp đa dạng cho phép chúng ta áp dụng ánh sáng một cáchtốt nhất vào môi trường trong trò chơi với nhiều loại nguồn sáng như ánh sáng có hướng(Directional Light), ánh sáng điểm (Point Light) ,
Một số công nghệ và kỹ thuật về ánh sáng được Unity hỗ trợ: Lingtmapping, RealtimeShadows, hiệu ứng Sunshafts và Lens Flares
Terrains (địa hình)
Trang 32Unity cung cấp một công cụ rất tốt khả năng này với tên gọi là Terrains Tools cho phépchúng ta thiết kế địa hình với các công cụ vẽ dưới dạng Brush có nhiều thông số tùy chỉnh đểtạo và lát Texture cho địa hình Cùng với Terrains Tools là Tree Creator, một công cụ mạnh
mẽ cho phép chúng ta tạo ra cây cối với hình dạng, kích thước và kiểu cách đa dạng
Substances (Texture thông minh)
Substances cho phép các trò chơi và các ứng dụng sáng tạo sử dụng tất cả các sức mạnhcủa nó để cung cấp những trải nghiệm độc đáo cho người dùng cuối:
- Được tạo ra ngay trong khi game được tạo
- Cung cấp nội dung tải về nhỏ
- Sử dụng sức mạnh của các textures động tạo ra các hiệu ứng hình ảnh độc đáo
Substances được xử lý giống như các bitmap khác trong Unity: chỉ cần kéo và thả nótrong project là đã có thể sẵn sàng sử dụng ngay Substances có kích thước tự nhiên nhỏ hơnbitmap nên khi sử dụng Substances thay cho bitmap sẽ làm giảm đáng kể kích thước củagame cuối cùng
Physics (Vật lý)
PhysX là một Engine mô phỏng và xử lý vật lý cực kì mạnh mẽ được phát triển bởi nhàsản xuất card đồ họa hàng đầu thế giới NVIDIA Unity đã tích hợp Engine này vào để đảmnhận mọi vấn đề về vật lý
Pathfinding (Tìm đường)
Đây là tính năng mới mẻ từ phiên bản Unity 3.5 Với các phiên bản trước, để phát triểnkhả năng tìm đường cho trí thông minh nhân tạo (AI), nhà phát triển phải hoàn toàn tự xâydựng cho mình một hệ thống tìm đường riêng biệt
Audio (Âm thanh)
Unity tích hợp FMOD – công cụ âm thanh thuộc hàng mạnh nhất hiện nay, hỗ trợ chúng
ta nhập và sử dụng nhiều định dạng tập tin âm thanh khác nhau
Programming (Lập trình)
Unity được viết trên nền C++, tuy nhiên để sử dụng Unity, người dùng chỉ cần biết 1trong 3 ngôn ngữ là C#, JavaScript, hoặc Boo, với JavaScript là đơn giản và dễ sử dụng nhất,tuy nhiên với 1 số hạn chế nên C# được đa số chuyên gia ưa chuộng hơn, ngôn ngữ Boo đượccho là tốt nhất, tuy nhiên do ngôn ngữ được rất ít người sử dụng, nên gần như không bao giờthấy tài liệu hoặc code liên quan đến Unity được viết bằng ngôn ngữ Boo
Networking
Networking cho phép chúng ta tạo ra các trò chơi trực tuyến (online), hỗ trợ đầy đủ giúp
ta tạo nên các khía cạnh phổ biến trong Game online như hệ thống điểm kinh nghiệm, chat vàtương tác với thời gian thực,
Tài nguyên (model, âm thanh, hình ảnh, ) được tải vào trong Unity và tự động cậpnhật nếu tài nguyên có sự thay đổi Unity hỗ trợ các kiểu định dạng từ 3DS Max, Maya,Blender, Cinema 4D và Cheetah3D
Trang 33Các khái ni m c b n trong Unity ện của Unity ơ lược sự hình thành và phát triển của Unity ản trong Unity
Asset:
Đây là kho tài nguyên cho việc xây dựng game trong một project của Unity Các tàinguyên này có thể là hình ảnh, âm thanh, hoặc một mô hình 3D có sẵn Unity sẽ tham chiếuđến các tập tin chúng ta sẽ sử dụng để tạo ra các tài nguyên cho trò chơi Đây là lý do tại saotrong bất kỳ thư mục chứa project sử dụng Unity thì tất cả các tập tin tài nguyên phải đượclưu trữ trong một thư mục con tên là Assets
Hình 2.25 Asset trong Unity
Scene
Trong Unity, chúng ta có thể xem Scenes là các màn chơi, cấp độ chơi riêng lẻ, hoặccác vùng của nội dung trò chơi Ví dụ như Main menu, Options, About …
Bằng cách xây dựng trò chơi với nhiều cảnh, chúng ta sẽ có thể phân phối thời gian tải
và thử nghiệm các phần khác nhau của trò chơi riêng lẻ một cách nhanh chóng và chính xác
Trang 34Hình 2.26.Các scene của Unity
Game Object
Khi một tài nguyên được sử dụng trong một scene, khi đó chúng ta có thể coi tài nguyênnày là một “Game Object” mới Mỗi GameObject phải chứa ít nhất một thành phần, đó làthành phần “Transform” Transform chứa các phép để biến đổi góc quay, tỷ lệ hay tịnh tiếncủa đối tượng
Hình 2.27Kéo tài nguyên vào Scene để sử dụng
Component
Component là các thành phần trong một Game Object của Unity Bằng cách đính kèmcác thành phần vào cho một đối tượng, chúng ta có thể áp dụng ngay các phần mới của game
Trang 35engine vào đối tượng Thông thường các thành phần này được Unity xây dựng sẵn như ánhsáng, camera, particle, hiệu ứng vật lý…
Hình 2.28.Các thành phần trong đối tượng Camera
Script
Script là thành phần quan trọng nhất trong Unity, có thể xem scripts như là linh hồn củagame Chúng ta có thể viết kịch bản cho game bằng C#, Java Scripts, hoặc Boo (một dẫn xuấtcủa ngôn ngữ Python) Theo nhiều người đã sử dụng Unity thì code bằng C# sẽ giúp gamechạy nhanh hơn và giúp kiểm soát code tốt hơn do tất cả các biến phải được khai báo rõ ràng.Mặt khác ngôn ngữ C# rất tiện dụng để lập trình, nên em dùng ngôn ngữ C# để viết kịch bản
cho game Mỗi file script C# là một class bắt buộc kế thừa từ lớp MonoBehaviour, có tên
class phải trùng với tên file script
Hình 2.29.Cách tạo file script mới
Trang 36Một đoạn script muốn thực thi được thì nó phải được gắn vào một đối tượng
Hình 2.30 Một file script đang gắn vào đối tượng
Prefab
Hãy tưởng tượng Prefab là một cái thùng rỗng, mà bên trong nó chúng ta có thể chứađựng các thành phần hay đối tượng khác nhau, chúng ta có thể viết kịch bản cho hành độngcủa Prefab (khởi tạo, di chuyển, hay hủy đối tượng) Chúng ta có thể sử dụng đối tượng nàynhiều lần trong trò chơi, và cũng có thể sử dụng lại cho project khác Prefab cho phép chúng
ta lưu trữ cá đối tượng, toàn bộ thành phần bên trong và cấu hình hiện tại
Trang 37Ki n trúc Engine Unity ến trúc Engine Unity
Kiến trúc tổng quan:
Engine Unity hỗ trợ cho chúng ta UnityAPI để viết script game UnityAPI là API lậptrình game trong Unity rất mạnh UnityAPI chứa các đối tượng và phương thức hỗ trợ hầu hếtcác đối tượng và các loại thành phần trong Unity Trong một scene thường có nhiều đối tượnggame Mỗi đối tượng này có thể có hoặc không có đoạn script nào gắn lên đó Nếu muốn gắn
script vào đối tượng, ta bắt buộc phải kế thừa class đó từ lớp MonoBehaviour của UnityAPI
và tên class phải trùng với tên file script Mỗi script khi gắn lên đối tượng game đều được đốitượng game xem như một thành phần bên trong và được cấp phát vùng nhớ khi chạy game
Hình 2.32 Tổng quan kiến trúc Unity
Bên trong UnityAPI chứa rất nhiều lớp hỗ trợ lập trình game, trong đó có một số lớpquan trọng như :
MonoBehaviour: tất cả các script muốn gắn vào một đối tượng game bắt buộc phải kế
thừa từ lớp này
GameObject: lớp cha của tất cả các thực thể trong scene.
Component: lớp cha của tất cả các thành phần có thể gắn vào đối tượng.
o Transform: giúp thay đổi vị trí, xoay, biến đổi tỉ lệ mô hình.
Input: hỗ trợ lập trình với chuột, cảm ứng đa điểm, cảm biến gia tốc.
Camera: giúp lập trình camera.
Light: giúp tạo ánh sáng trong game.
Projector: giúp chiếu texture lên bề mặt vật thể.
Trang 38 ParticleEmitter: hỗ trợ tạo các hiệu ứng particle đẹp mắt.
Audio: hỗ trợ lập trình với âm thanh.
Animation: chạy chuyển động của mô hình nhân vật.
Rigidbody: giúp tạo hiệu ứng vật lý liên quan đến trọng lực như bóng nẩy, lăn,
CharacterController: giúp điều khiển nhân vật di chuyển theo độ cao địa hình.
Collider: hỗ trợ lập trình va chạm giữa các vật thể.
GUI: giúp lập trình giao diện người dùng trên Unity.
Chu kỳ sống của thành phần Script gắn trên đối tượng Game:
Chu kỳ sống của một thành phần script được tính kể từ khi scene được chạy cho đếnlúc scene bị tắt hoặc chuyển sang scene khác Trong script của Unity có 1 số chức năng đượcgọi theo thứ tự để thực thi lệnh:
Reset:được gọi để khởi tạo các thuộc tính của script khi nó lần đầu tiên được gắn vào đối tượng và khi lệnh Reset được sử dụng
Trong lúc khởi tạo:
bắt đầu và cũng ngay sau khi một prefab được khởi tạo (Nếu một GameObject không được active trong quá trình khởi tạo, Awake không được gọi cho đến khi
nó được active, hoặc một chức năng trong bất kỳ script gắn liền với nó được gọi)
OnEnable: (chỉ được gọi là nếu các đối tượng đang active): Chức năng này chỉ được gọi sau khi đối tượng được kích hoạt Diễn ra khi một thể hiện
MonoBehaviour được tạo ra, chẳng hạn như khi 1level được nạp hoặc một
GameObject với các thành phần script được khởi tạo
Trước khi frame đầu tiên update:
Start: được gọi trước khi cập nhật khung hình đầu tiên chỉ khi các scriptđược kích hoạt
thể được gọi nhiều lần mỗi khung hình nếu tỷ lệ khung hình thấp và cũng có thể không được gọi tại mỗi khung hình nếu tỉ lệ khung hình cao.Tất cả các tính toán vật lý và cập nhật xảy ra ngay lập tức nên đặt trong FixedUpdate Khi áp dụng tính toán chuyển động bên trong FixedUpdate, bạn không cần phải nhân giá trị của bạn với Time.deltaTime(Thời gian dựng khung hình) Điều này là do
FixedUpdate được gọi theo 1 chu kì thời gian cố định
lực chính để cập nhật khung hình
Update đã hoàn tất Bất kỳ tính toán được thực hiện tại Update sẽ hoàn tất khi bắt đầu LateUpdate
sự kiện GUI Sự kiện Layout và repaint được xử lý đầu tiên, theo sau là sự kiện bàn phím / chuột cho mỗi sự kiện đầu vào
Trang 39 OnDisable:Được gọi ngay trước khi script bị vô hiệu(Disable).
OnDestroy:Được gọi ngay trước khi script bị Destroy
Tùy theo trạng thái của scene mà sự kiện tương ứng sẽ được gọi
Hình 2.33 Chu kỳ sống của thành phần script
Trang 403.1.1.3 Plugin NGUI củaUnity:
Unity có riêng bộ GUI (Graphical User Interface) để thiết kế các Button,Label với khảnăng tùy biến ở mức khá Tuy nhiên khả năng tương thích đa màn hình trên các thiết bị cầmtay cũng như khả năng thiết kế hiệu ứng động là rất kém
Hình 2.34 GUI thiết kế từ trình mặc định của Unity
Giải pháp thường là sử dụng chính các GameObject để làm giao diện người dùng đểthuận lợi hơn trong việc scale các đối tượng cho phù hợp các kích cỡ màn hình,cũng như dễdàng tạo hiệu ứng Animation cho các đối tượng này.Ngoài ra cũng có thể sử dụng các Plugincho Unity chuyên về thiết kế giao diện người dùng.Một trong số đó là NGUI.NGUI cũng xâydựng GUI từ các GameObject,nhưng được quản lý chuyên nghiệp hơn