Phạm vi nghiên cứu: các game engine AR 3D, các framework AR, các thuậttoán xử lý liên quan đến ARPhạm vi môi trường triển khai ứng dụng: các thiết bị Android và iOS có hỗ trợARCore hoặc
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
Phạm Phúc Nguyên - 19521918
Đỗ Phi Long- 19521777
ĐỒ ÁN 2 TÌM HIỂU CÁC FRAMEWORK HỖ TRỢ LÀM GAME 3D, TƯƠNG TÁC
THỰC THỂ ẢO AR
GIẢNG VIÊN HƯỚNG DẪN ThS Nguyễn Thị Thanh Trúc
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
Phạm Phúc Nguyên - 19521918
Đỗ Phi Long- 19521777
ĐỒ ÁN 2 TÌM HIỂU CÁC FRAMEWORK HỖ TRỢ LÀM GAME 3D, TƯƠNG TÁC
THỰC THỂ ẢO AR
GIẢNG VIÊN HƯỚNG DẪN ThS Nguyễn Thị Thanh Trúc
Trang 3ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
TP HCM, ngày 26 tháng 12 năm 2022
NHẬN XÉT ĐỒ ÁN Tên đồ án:
Tìm hiểu và xây dựng ứng dụng AR
Nhóm sinh viên thực hiện: Cán bộ hướng dẫn:
Đánh giá Khóa luận:
Về cuốn báo cáo:
Một số nhận xét về hình thức cuốn báo cáo:
Về nội dung nghiên cứu:
Về chương trình ứng dụng:
Trang 4Về thái độ làm việc của sinh viên:Đánh giá chung:
Điểm từng sinh viên:
Trang 5ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
đã có trên thị trường mà sử dụng các framework kể trên
Thứ hai, sau khi đã tìm hiểu tổng quát về các framework hỗ trợ làmGame AR 3D, nhóm sẽ chọn ra một framework phù hợp và phát triển mộtgame AR 3D để minh họa cho những kiến thức đã nghiên cứu
2 Phạm vi:
Trang 6Phạm vi nghiên cứu: các game engine AR 3D, các framework AR, các thuậttoán xử lý liên quan đến AR
Phạm vi môi trường triển khai ứng dụng: các thiết bị Android và iOS có hỗ trợARCore hoặc ARKit
● Tìm hiểu các game engine 3D có hỗ trợ AR
● Tìm hiểu cơ sở lý thuyết, thuật toán, kỹ thuật được sử dụng trong xử lýAR
● Tìm hiểu các tính năng, đặc điểm của các framework AR được các gameengine 3D hỗ trợ
● Khảo sát các ứng dụng có nét tương tự trên thị trường:
o Pokemon GO
Phương pháp công nghệ:
● Áp dụng mô hình thác nước (Waterfall)
● Môi trường triển khai trong quá trình phát triển và kiểm thử là Android,nền tảng phần cứng là thiết bị Samsung Galaxy S10+
5 Nền tảng công nghệ:
Engine: Unity
Trang 7● Có cái nhìn tổng thể và đầy đủ về AR, các cơ sở lý thuyết, thuật toán,
kỹ thuật được áp dụng trong xử lý AR
● Ứng dụng game 3D AR minh họa hoạt động tốt, ít hoặc không có lỗi,tạo sự thú vị và thu hút người chơi, có tiềm năng phát triển trong tươnglai
7 Kế hoạch làm việc:
Thời gian thực hiện từ ngày 19/09/2022 đến ngày 26/12/2022
8 Phân công công việc:
Khảo sát các game AR 3D được xây dựng bằng các framework đãtìm hiểu
Trang 8Đánh giá ưu/nhược điểm của mỗi framework đã tìm hiểuLên ý tưởng cho sản phẩm game AR 3D sẽ thực hiện và lựa chọnframework để sử dụng
Trang 9MỤC LỤC
Chương 1 TỔNG QUAN: 2
1.1 Mục tiêu của đồ án 2
1.2 Đối tượng nghiên cứu 2
1.3 Phương pháp thực hiện 2
1.4 Khảo sát các game engine 3D và thư viện, SDK, framework AR trên thị trường 3
1.4.1 Unity 3
1.4.2 Unreal 7
1.4.3 Thống kê 10
1.4.4 So sánh Unity và Unreal 11
Chương 2 CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ 20
2.1 Tìm hiểu về AR 20
2.1.1 AR là gì? 20
2.1.2 Đặc điểm: 20
2.1.3 Các loại AR: 21
2.1.4 Các thiết bị AR: 22
2.1.5 Các loại ứng dụng AR thường gặp: 25
2.1.6 Điểm khác biệt giữa AR,VR và MR: 28
2.2 Các cơ sở lý thuyết AR tổng quát 30
2.2.1 Device motion tracking (Theo dõi chuyển động thiết bị) 30
2.1.1 Marker detection (Nhận dạng marker) 36
2.1.1 3D Object tracking (Nhận dạng vật thể 3D) 37
2.1.2 Facial tracking (Nhận dạng khuôn mặt) 38
Trang 102.1.1 Light estimation (Ước lượng ánh sáng) 40
2.2 Unity 42
2.2.1 Cấu trúc 42
2.2.2 Universal Render pipeline 43
2.2.3 Shader graph 46
2.2.4 Tìm hiểu về AR Foundation 47
2.2.5 Kiến trúc: 48
2.2.6 Tính năng: 48
Chương 3 PHÂN TÍCH YÊU CẦU 52
3.1 Ý tưởng sản phẩm 52
3.2 Sơ đồ Use-case 53
3.3 Sơ đồ trạng thái 54
Chương 4 THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 55
4.1 Thiết kế hệ thống 55
4.1.1 Kiến trúc hệ thống 55
4.1.2 Sơ đồ lớp 56
4.2 Xây dựng hệ thống 59
4.2.1 Giao diện: 59
Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 62
5.1 Kết quả 62
5.1.1 Về mặt nghiên cứu 62
5.1.2 Về mặt sản phẩm 62
5.2 Hướng phát triển 63
Trang 11DANH MỤC HÌNH ẢNH
Hình 1.1 Logo unity 4
Hình 1.2 Minh họa kiến trúc 5
Hình 1.3 Animation dùng unity 5
Hình 1.4 Ảnh editor unity 6
Hình 1.5 Unreal engine 7
Hình 1.6 Lumen, hệ thống ánh sáng và chiếu sáng toàn cầu theo thời gian thực (dynamic global illumination) 8
Hình 1.7 MetaHuman, một framework để tạo ra những mô hình người 3D cực kỳ chân thực 8
Hình 1.8 Nanite, hệ thống xử lý hình học ảo 9
Hình 1.9 Game được làm từ unity 11
Hình 2.1 Cách hoạt động của AR 20
Hình 2.2 Marker base AR 21
Hình 2.3 Geo location base 22
Hình 2.4 Projection AR 22
Hình 2.5 Thiết bị HMD 23
Hình 2.6 Thiết bị HUD 24
Hình 2.7 AR trên thiết bị di động 25
Hình 2.8 AR Filter 25
Hình 2.9 Sử dụng AR để đặt model lên hình ảnh 26
Hình 2.10 Đặt đồ nội thất vào thế giới 27
Hình 2.11 Game Pokémon go 28
Hình 2.12 Sự khác biệt giữa AR, VR, MR 28
Hình 2.13 Cách hoạt động của FAST 31
Hình 2.14 Cách hoạt động của BRISK 32
Hình 2.15 Các bước xử lý của VSLAM 34
Hình 2.16 Cảm biến 3D LiDAR 36
Trang 12Hình 2.18 Các đặc điểm tương tự Haar 38
Hình 2.19 Các đặc điểm (feature) được nhận dạng trên khuôn mặt 39
Hình 2.20 Chuyển động của khuôn mặt được theo dõi dựa trên vị trí các đặc điểm40 Hình 2.21 Một HDR cubemap 41
Hình 2.22 Unity Object 43
Hình 2.23 Scriptable Render pipeline 44
Hình 2.24 VR Game rendering 45
Hình 2.25 HDRP render 45
Hình 2.26 URP Render 46
Hình 2.27 Shader graph 46
Hình 2.28 Shader graph lớn 47
Hình 2.29 Kiến trúc của AR Foundation 48
Hình 2.30 AR Plane Manager 49
Hình 2.31 AR Plane Mesh Visualizer 49
Hình 2.32 Kết quả của Plane Visualizer 49
Hình 2.33 AR Tracked Image Manager 50
Hình 2.34 AR Tracked Object Mager 50
Hình 2.35 AR Face Manager 50
Hình 2.36 AR Raycast Manager 51
Hình 3.1 Use-case 53
Hình 3.2 Sơ đồ trạng thái của cá 54
Hình 4.1 Sơ đồ kiến trúc hệ thống 55
Hình 4.2 Sơ đồ lớp của game Live Fish Tank (phần 1/2) 56
Hình 4.3 Sơ đồ lớp của game Live Fish Tank (phần 2/2) 57
Hình 4.4 Màn hình chính 59
Hình 4.5 Options 60
Hình 4.6 Cho cá ăn 60
Hình 4.7 Đặt bể cá 60
Hình 4.8 Chọn cá 61
Trang 13Hình 4.9 Xác định độ sáng 61Hình 4.10 Dưới mặt nước 61
Trang 15TÓM TẮT ĐỒ ÁN Chương 1: Tổng quan, giới thiệu về đề tài, đối tượng nghiên cứu, khảo sát các công
nghệ, các hướng nghiên cứu liên quan
Chương 2: Trình bày các cơ sở lý thuyết, giải thuật, thuật toán có liên quan.
Chương 3: Trình bày, phân tích chi tiết yêu cầu sản phẩm.
Chương 4: Trình bày chi tiết quy trình xây dựng hệ thống, từ thiết kế đến triển
khai
Chương 5: Kết luận và hướng phát triển trong tương lai.
Trang 16Thứ hai, sau khi đã tìm hiểu tổng quát về các framework hỗ trợ làm Game 3D AR,nhóm sẽ chọn ra một framework phù hợp và phát triển một game 3D AR để minhhọa cho những kiến thức đã nghiên cứu và đúc kết được.
1.2 Đối tượng nghiên cứu
Các đối tượng nghiên cứu của đồ án:
1.3 Phương pháp thực hiện
Phương pháp làm việc:
Chương 1: Làm việc nhóm 2 thành viên với sự hướng dẫn trực tiếp của giảngviên hoặc hướng dẫn qua Microsoft Teams
Phương pháp nghiên cứu:
− Nghiên cứu tài liệu chính thức của các game engine 3D và các thư viện, SDK,framework AR trong các game engine 3D
Trang 17− Tham khảo ý kiến của những developer đã từng làm việc với các game engine3D, các thư viện, SDK, framework AR trong các game engine 3D, qua nhữngvideo hoặc bài đăng đáng tin cậy trên internet.
− Nghiên cứu các trang thông tin, các tài liệu về cơ sở lý thuyết, kỹ thuật, thuậttoán giúp hiện thực hóa các tính năng AR trong các thư viện, SDK, frameworkAR
1.4 Khảo sát các game engine 3D và thư viện, SDK, framework AR trên thị trường
Có khá nhiều game engine 3D đang lưu hành trên thị trường và số game được pháttriển bằng các engine này còn nhiều hơn Một số game engine 3D thương mại được
sử dụng rộng rãi nhất có thể kể đến như: Unity Engine, Unreal Engine, GodotEngine, CryEngine, Ngoài ra, một số công ty và studio phát triển game cho ra cáctựa game kinh điển của họ bằng các game engine 3D độc quyền như: Source Enginecủa Valve, id Tech của id Software, Frostbite của EA,
Tuy nhiên, số game engine 3D hiện có hỗ trợ phát triển game AR 3D vẫn còn rấthạn chế Cụ thể, các game engine hiện có hỗ trợ ổn định cho AR chỉ bao gồm UnityEngine và Unreal Engine
1.4.1 Unity
Unity là một game engine đa nền tảng được phát triển bởi Unity Technologies,
mà chủ yếu để phát triển video game cho máy tính, console và điện thoại Lần đầutiên nó được công bố chạy trên hệ điều hành OS X, tại Apple's WorldwideDevelopers Conference vào năm 2005, đến nay đã mở rộng 27 nền tảng
Trang 18Hình 1.1 Logo unity
Ra mắt đầu tiên vào năm 2005 tại sự kiện Apple’s Worldwide DeveloperConference bởi nhà sáng lập David Helgason, trải qua hơn 12 năm phát triển, nayUnity đã có version 5.5 hoàn thiện hơn về rất nhiều mặt Tháng 5-2012 theo cuộckhảo sát Game Developer Megazine được công nhận là Game engine tốt nhất chomobile Năm 2014 Unity thắng giải “Best Engine” tại giải UK’s annual DevelopIndustry Exellence
Giờ đây Unity đã quyết định sẽ thay đổi cách gọi các version thay vì sử dụng số thì
sẽ sử dụng năm được tung ra thị trường Bản mới nhất lúc viết bài báo cáo này làphiên bản 2022 LTS
Unity có thể được sử dụng để lập trình game 2D và 3D, cung cấp tính năngscripting như Mono và IL2CPP Trước khi bắt đầu sử dụng C# làm ngôn ngữ lậptrình chính thì Unity sử dụng một ngôn ngữ được gọi là Boo và từ phiên bản Unity
5 (2015) thì Unity loại bỏ tình năng này và sử dụng C# là ngôn ngữ chính
Ngoài sử dụng Unity để lập trình game thì Unity còn được sử dụng để làmprototype cho nhiều lĩnh vực khác nhau:
Trang 19● Architectural: Dùng Unity để xây dựng một phiên bản ảo từ bản thiết kế,
với khả năng render chân thật của unity, người kỹ sư có thể tạo một bản mẫutrong thế giới ảo rồi tự khám phá nó trong thế giới ảo để có cảm nhận tốthơn
Hình 1.2 Minh họa kiến trúc
● Animation: Khác với các animation thông thường, khi làm sử dụng Unity
thì các animation thường là real time rendering Việc này cho phép ngườixem đi vào trong thế giới của phim và xem từ nhiều góc độ khác nhau nhưxem phim VR
Hình 1.3 Animation dùng unity
Trang 20● Simulation: Sử dụng VR để giả lập một trường hợp có thể xảy ra trong đời
thật để huấn luyện trong các trường mà khó có thể xây dựng lại ngoài đờithật hoặc có thể gây nguy hiểm cho người được huấn luyện
○ Quá trình học và phát triển đơn giản và nhanh hơn với C#
○ Cửa hàng Asset Store nhiều asset, đa dạng, phong phú
● Nhược điểm
○ Để làm cho đồ họa bóng bẩy có thể tốn nhiều thời gian và công sức,
do một số render pipeline không hỗ trợ Shader Graph nên các shader phải được code một cách thủ công
○ Kết xuất đồ họa có thể chậm nếu chưa được tối ưu hóa
Trang 211.4.2 Unreal
Hình 1.5 Unreal engine
Như Unity, Unreal cũng là một game engine hỗ trợ đa nền tảng, được Epic Gamesphát triển và cho ra mắt năm 1998 qua tựa game bắn súng góc nhìn thứ nhất cùngtên Mặc dù các nhà phát triển ban đầu dự định cho Unreal để phục vụ việc tạo racác game bắn súng góc nhìn thứ nhất, song game engine này đã được sử dụng đểtạo ra nhiều thể loại game khác nhau và còn được ứng dụng trong các mảng nghệthuật khác như phim và truyền hình Được viết bằng C++, Unreal có khả năngportability cao, hỗ trợ nhiều nền tảng, hệ điều hành desktop, mobile, console và XR(thực tế mở rộng)
Một trong những điểm mạnh nhất của Unreal so với các game engine khác là khảnăng xử lý, kết xuất đồ họa cực kỳ xuất sắc Hình ảnh 3D của các vật thể tronggame có độ chi tiết và chân thực đến mức ngỡ ngàng, và cứ sau mỗi phiên bảnUnreal lại có những cải tiến mới đến hệ thống xử lý đồ họa của mình Ngoài ra,Unreal là một trong số ít những game engine hỗ trợ visual scripting làm một phần
Trang 22trong workflow chính: kết hợp giữa code C++ và hệ thống visual scriptingBlueprint.
Phiên bản mới nhất của Unreal, Unreal Engine 5, được phát hành vào tháng 4 năm
2022 Một số hình ảnh được dựng hình bằng Unreal Engine 5 cho thấy các cải tiếnđáng kinh ngạc về mặt hình ảnh và độ chi tiết:
Hình 1.6 Lumen, hệ thống ánh sáng và chiếu sáng toàn cầu theo thời gian thực (dynamic global illumination)
Trang 23Hình 1.7 MetaHuman, một framework để tạo ra những mô hình người 3D cực kỳ chân thực
Hình 1.8 Nanite, hệ thống xử lý hình học ảo
Đáng chú ý, mỗi viên đá và vụn trong ảnh trên đều là các mô hình có cấu trúc hìnhhọc phức tạp được đặt trong phân cảnh, mỗi khối hình 3D có thể được chia làmnhiều hình tam giác phẳng để GPU render dễ hơn Tuy nhiên, trong một phân cảnh
có quá nhiều hình phải render như trên thì kết quả trong game chỉ đạt 5-10 FPS là
Trang 24tối đa, dù GPU có mạnh đi nữa Nên trong thực tế các nhà thiết kế khi đặt các môhình 3D vào phân cảnh thì tùy theo yêu cầu hình ảnh trong phân cảnh đó mà sẽ tănghoặc giảm độ chi tiết của các mô hình, làm giảm chất lượng hình ảnh cuối cùng Đểcải thiện tình trạng đó, hệ thống Nanite sẽ tự điều chỉnh mức độ chi tiết của các môhình có format mô hình Nanite trong phân cảnh, khi ta zoom vào mô hình thì độ chitiết của mô hình tăng lên và làm tăng số hình tam giác trong cảnh, khi zoom ra thì
độ chi tiết giảm xuống và kéo theo giảm số hình tam giác GPU cần render, giúptăng hiệu suất mà không đánh đổi chất lượng hình ảnh
Một số tựa game nổi bật được phát triển bằng Unreal Engine có thể nói qua:Fortnite, series BioShock, series Borderlands, Street Fighter 5, Sea of Thieves; vàmột số tựa game sắp ra mắt được phát triển dựa trên Unreal Engine 5 như BlackMyth: Wukong
● Ưu điểm
○ Hướng đến đạt được chất lượng đồ họa cao nhất
○ Người phát triển có thể tùy chỉnh các shader mà không cần code
Trang 25○ Tính đến quý 1 năm 2016, trong top 1000 game mobile miễn phí thì
số lượng game được phát triển bằng Unity chiếm tới 34% Đến nay,con số này đã lên đến 71%
○ Số người sử dụng Unity (nhà phát triển và người chơi) lên đến 2.7 tỷngười
○ Unity Asset Store có hơn 65 nghìn asset
○ Ước tính chiếm 48% thị phần
○ Doanh thu của Unity tăng 43% trong năm 2020
○ Vốn hóa thị trường của Unity Technologies xấp xỉ $27.8 tỷ USD
Hình 1.9 Game được làm từ unity
● Unreal:
○ Hơn 2 triệu game được phát triển dựa trên Unreal
○ Unreal Marketplace có hơn 16 nghìn asset
○ Cộng đồng nhà phát triển vượt hơn 7 triệu người
○ Ước tính chiếm 13% thị phần
○ Vốn hóa thị trường của công ty phát hành (Epic Games) xấp xỉ $17 tỷUSD
Trang 26WebGL, Embedded Linux, QNX,…
Unity trên các nền tảng Windows, macOS và Linux
●Hỗ trợ các nền tảng:Windows PC, PS5, PS4, Xbox Series X, Xbox Series S, Xbox One, Nintendo Switch,Google Stadia, macOS,iOS, Android, ARKit, ARCore, OpenXR, SteamVR, Oculus, Linux, SteamDeck
●Tương tự Unity, Unreal
có thể chạy trên các nền tảng Windows, macOS
và Linux
Unity cũng có Visual Scripting – giống với Blueprint củaUnreal, nhưng Visual Scripting chạy chậm hơn đáng kể
so với Blueprint trong Unreal và code C# trong Unity
Trang 27Dễ sử dụng ●Unity dễ sử dụng hơn so với Unreal do C# quen thuộc
hơn với đa số developer và với bản chất là ngôn ngữ bậc cao thì cũng dễ làm việc hơn so với C++
●Editor và workflow của Unity cũng dễ làm quen hơn
so với Unreal
mảng đồ họa sắc nét và chân thực, nhưng ở những phiên bản mới đây Unity bổ sung các render pipeline mới có chất lượng hình ảnh cải tiến rất nhiều
●Unreal Engine 5 cũng ra mắt các hệ thống ánh sáng Lumen và hệ thống hình học ảo (virtualized geometry system) Nanite, giúp các phân cảnh nhìn thấy được có
độ chi tiết lớn hơn rất nhiều, ánh sáng chân thực hơn (dynamic global illumination)
●Xét chung, Unity đang dần bắt kịp với Unreal về đồ họa nhưng hiện tại Unreal vẫn cho chất lượng hình ảnh tốt, chi tiết và chân thực hơn một chút
Tài liệu và hướng dẫn ●Tài liệu trên web của Unity được đầu tư kỹ lưỡng hơn
và cập nhật liên tục hơn so với Unreal
●Có nhiều video hướng dẫn về Unity trên các nền tảng chia sẻ video, nhiều khóa học trên các trang dạy học online (có cả trang do Unity duy trì) hơn so với các video, khóa học về Unreal
có thể tìm kiếm giải pháp cho các vấn đề gặp phải dễ dàng hơn khi sử dụng Unity so với Unreal
Trang 28●Cả Unity và Unreal đều có hệ thống cửa hàng asset – developer có thể mua asset (model 3D, hình ảnh, nhạc, hiệu ứng,…) từ cửa hàng để sử dụng trong dự áncủa mình và không cần tự tạo các asset hoặc phải thuêcác bên thứ ba.
●Do Unity có cộng đồng lớn mạnh hơn nên số lượng và
độ đa dạng của các asset trên cửa hàng của Unity cũnglớn hơn nhiều
nhau tùy nhu cầu sử dụng:
●Với cá nhân sử dụng không vì mục đích thương mại hoặc doanh thu từ sản phẩm thương mại ít hơn $100.000 USD trong vòng 12
tháng gần nhất: Miễn
phí
●Các phiên bản thương mại bao gồm thêm nhiềutính năng khác:
mọi sản phẩm thương mại
có doanh thu hơn $1 triệu USD phải trả phí bản quyền 5% doanh thu
Trang 29Về mảng AR, số thư viện và SDK hỗ trợ Unity nhiều hơn đáng kể so với số hỗ trợ
Unreal Tuy vậy, có 2 SDK được hỗ trợ bởi cả hai engine là ARKit và ARCore:
trợ bởi các thiết bị sử dụng iOS phiên bản 11.0 trở đi và bộ xử lýA9 trở đi
Có nhiều tính năng được hỗ trợ bởi AR Foundation:
Device tracking Plane detection (cả
mặt phẳng ngang và đứng)
Light estimation 2D Image tracking 3D Object tracking Face tracking Participant tracking Occlusion
sử dụng máy quét LiDAR chỉ
có ở những dòng iPhone 12 trở lên
chỉ hỗ trợ các thiết bị iOS 11.0trở đi
Trang 30Các ưu điểm khác:
Depth API – áp dụng
máy quét LiDAR trongcamera của các thiết bị iPhone để nhận diện khoảng cách rất chính xác
Scene Geometry –
Dựng mô hình chính xác của không gian thực được nhìn thấy bởi thiết bị, mang đến các khả năng Occlusion
và mô phỏng vật lý chocác vật thể ảo
Motion Capture –
Theo dõi và lưu lại chuyển động của cơ thểngười
trợ bởi hầu hết các thiết bị sử dụng Android phiên bản 8.0 trở đi và các thiết
bị sử dụng iOS 11.0 trở đi, có tương thích với ARKit
Có nhiều tính năng được hỗ trợ bởi AR Foundation:
Device tracking Plane detection (cả
mặt phẳng ngang và đứng)
Không có các tính năng:
3D Object tracking – Nhận
diện và theo dõi chuyển động vật thể thực
Trang 31hình ảnh toàn cầu của
Google Street View để
cho phép đặt các vật
thể AR ở các vị trí khác
nhau trên thế giới, khi
thiết bị của người dùng
Trang 32một vị trí, cùng chia sẻ một không gian AR.
Một số ví dụ điển hình về các thư viện và SDK được hỗ trợ bởi Unity:
Plane detection:
nhận dạng các mặt phẳng ngang và đứng trong không gian
Light estimation:
ước tính nhiệt độ màusắc trung bình và độ sáng của không gian thực tế
Face tracking: nhận
diện và theo dõi chuyển động khuôn mặt người
2D image tracking:
Chỉ được hỗ trợ bởi Unity, không được
hỗ trợ bởi bất kỳ framework nào khác
Trang 333D của cơ thể người
nhận diện được trong
Trang 34Hỗ trợ nhiều nền tảng: AR Foundation
hoạt động trên nền các AR SDK native của mỗi nền tảng hệ điều hành, khi chạy trên Android thì AR Foundation sẽ sử dụng ARCore, ARKitvới iOS, OpenXR với Microsoft HoloLens,
…
phí, bị giới hạn số lượng Model Target
và Area Target có thể tạo là 20 target mỗi loại và chỉ được
sử dụng để tạo nguyên mẫu
Premium plan: Phí
thỏa thuận, khởi điểm 500 Model Target và Area Target mỗi loại, sau
đó có thể mua thêm giới hạn target
Image Targets, Cylinder Targets, Multi Targets, VuMarks: Có thể
nhận diện và overlay các vật thể AR lên trên các hình ảnh phẳng, hình ảnh cong (bao bì trên vỏ lon),
tổ hợp nhiều hình ảnhsắp xếp thành hình dạng phổ biến, và khảnăng tạo, nhận dạng marker tùy chỉnh (customized markers)
Model Targets:
● Không có khả năng nhận diện các mặt phẳng đứng như tường, màn hình đứng,
…
● Phiên bản miễn phí bị giới hạn khá nhiều so với bản Premium
● Không có hỗ trợ cho Unreal Engine
Trang 35Nhận diện các vật thể thực và overlay nội dung AR lên trên chúng.
Area Targets: Scan
môi trường xung quanh và tạo ra một bản sao, từ đó có khả năng nhận dạng vị trí khi thiết bị quan sát môi trường thực
Ground Plane: Nhận
diện được các mặt phẳng ngang như mặt bàn, bề mặt sàn nhà,
…
Có hỗ trợ cho các dòng thiết bị Android và iOS cũ,
dù các thiết bị đó không có ARCore hayARKit
Miễn phí, giới hạn thời gian
Bản Pro 3D trả phí
1 lần: 2490 Euro,
Image Recognition:
Nhận diện hình ảnh đơn, nhiều hình ảnh cùng lúc
Plane Detection:
nhận diện vật thể
(Object Tracking) có độ
chính xác thấp
Trang 36và các mặt phẳng ngẫu nhiên (dốc đẩy
xe, cầu thang,…)
Object Tracking:
Nhận diện và theo dõichuyển động của các vật thể thực, nhưng từphiên bản SDK 8 còn
có thêm khả năng nhận diện các cấu trúc
lớn hơn (Scene
Recognition) như:
căn phòng, bề mặt củatòa nhà, sân trống,…
Dịch vụ nhận diện trên đám mây (Cloud Recognition Service): Sử dụng
dịch vụ đám mây để nhận diện thay vì khả năng nhận diện của thiết bị người dùng
quyền cao, nhiều tính năng bị giới hạn hoặc không được tích hợp trong các phiên bản ít tiền hơn
nhỏ, ít bản cập nhật và tính năng mới
Trang 37Tính năng này đặc biệt hữu dụng trên cácthiết bị cũ, có khả năng xử lý hình ảnh kém, hoặc khi bộ đối tượng hình ảnh cần nhận dạng lớn.
Có bộ công cụ (tool)
hỗ trợ cho công việc
tạo ra các đối tượng theo dõi (image target, object target), chuyển đổi định dạng,quản lý các đối tượng
và bộ sưu tập các đối tượng, có cả plugin tích hợp trực tiếp vào Unity Editor
Plugin cho Android
Plugin cho iOS
Ngoài các ví dụ nêu trên, Unity còn hỗ trợ các thư viện và SDK khác như: Kudan
AR SDK, MAXST AR SDK, ZapWorks Universal AR SDK, EasyAR Sense UnityPlugin,…
Như Unity, Unreal cũng có một AR framework thống nhất, tương thích với cảARCore trên các thiết bị Android và ARKit trên các thiết bị iOS Tất nhiên, khi ứng
Trang 38dụng chạy thực tế trên thiết bị người dùng thì vẫn sẽ có các khả năng và giới hạncủa AR SDK tương ứng với hệ điều hành của thiết bị đó.
Các thư viện và
SDK hỗ trợ
Unreal Engine
Trang 39Chương 2 CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ
2.1 Tìm hiểu về AR
2.1.1 AR là gì?
AR được định nghĩa là công nghệ thực tế ảo tăng cường Công nghệ AR dùng để
mô phỏng 1 vật thể ảo, khiến chúng xuất hiện trong thế giới thật và con người vớivật thể đó có thể tương tác với nhau trong môi trường thế giới thật Điểm đặc biệtcủa AR là các vật thể có sự tương tác qua lại giữa cả 2 môi trường ảo và thật
AR sử dụng vòng phản hồi giữa người dùng và hệ thống máy tính Người dùngquan sát màn hình AR và điều khiển quan điểm Hệ thống theo dõi quan điểm củangười dùng, đăng ký tư thế trong thế giới thực với nội dung ảo và trình bày trựcquan hóa
Hình 2.10 Cách hoạt động của AR 2.1.2 Đặc điểm:
● Tự hoạt động một mình mà không cần thêm thiết bị hỗ trợ nào khác cả
● AR có thể hoạt động cùng thiết bị hỗ trợ khác và người dùng vẫn tươngtác được với thế giới thật
● Mọi thao tác sử dụng đều sẽ được thực hiện thông qua các thiết bị di
Trang 40● AR chủ yếu sử dụng phần mềm để xử lý các thuật toán mà không đòi hỏiphần cứng chuyên dụng.
Hình 2.11 Marker base AR
Markerless: Phức tạp hơn so với marker-based do không có sử dụng các
marker Khi này các thiết bị phải xác định được các vật thể khi nó xuất hiệntrong khung hình Sử dụng các thuật toán để nhận dạng vật thể rồi overlayhình ảnh lên các vật thể trong thế giới thật