e
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Lê Vũ Huy
XÂY DỰNG CHƯƠNG TRÌNH
THỰC TẠI ẢO TRÊN ANDROID
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
HÀ NỘI - 2016
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Lê Vũ Huy
XÂY DỰNG CHƯƠNG TRÌNH
THỰC TẠI ẢO TRÊN ANDROID
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Cán bộ hướng dẫn : ThS. Vũ Quang Dũng
HÀ NỘI – 2016
VIETNAM NATIONAL UNIVERSITY, HANOI
UNIVERSITY OF ENGINEERING AND TECHNOLOGY
Le Vu Huy
CREATE AUGMENTED REALITY APPLICATION
BASED ON MOBILE DEVICES
BACHELOR THESIS
Major: Information Technology
Supervisor: M.S Vu Quang Dung
HA NOI – 2016
LỜI CẢM ƠN
Lời đầu tiên, tôi xin gửi lời cảm ơn chân thành sâu sắc đến ThS.Vũ Quang Dũng
đã tận tình hướng dẫn, giúp đỡ tôi trong quá trình thực hiện khóa luận này.
Tôi cũng xin gửi lời cảm ơn tới các anh chị, các bạn trong Toshiba Lab đã giúp
đỡ, tạo điều kiện nghiên cứu tốt nhất cho tôi. Cám ơn anh Nguyễn Bảo Ngọc, anh Trần
Hữu Trung, bạn Bùi Xuân Hiền, Vũ Thị Ngọc đã luôn hỗ trợ, giúp tôi có thể hoàn thành
đề tài một cách tốt nhất.
Lời cuối cùng, chúng tôi xin gửi lời cảm ơn tới gia đình, người thân và bạn bè những người luôn ở bên tôi những lúc khó khăn nhất, luôn động viên tôi, khuyến khích
tôi trong cuộc sống cũng như học tập, công việc.
Tôi xin chân thành cảm ơn !
Sinh viên
Lê Vũ Huy
i
LỜI CAM ĐOAN
Tôi xin cam đoan các kết quả trình bày trong khóa luận này do tôi thực hiện dưới
sự hướng dẫn của ThS.Vũ Quang Dũng.
Tất cả các tham khảo từ những nghiên cứu liên quan đều được nêu nguồn gốc
một cách rõ ràng từ danh mục tài liệu tham khảo trong khóa luận. Khóa luận không sao
chép tài liệu, công trình nghiên cứu của người khác mà không chỉ rõ về mặt tài liệu tham
khảo.
Các thống kê, các kết quả trình bày trong khóa luận này đều được lấy từ thực
nghiệm khi chạy chương trình.
Sinh viên
Lê Vũ Huy
ii
TÓM TẮT
Tóm tắt:
Ngày nay, công nghệ tăng cường thực tại ảo (Augmented Reality) đang dần trở nên gần
gũi với con người hơn và ứng dụng trong hầu hết các lĩnh vực từ mua sắ m cho đế n tương tác
ảo. Được phát triển từ công nghệ VR (Virtual Reality), Augmented Reality xây dựng một khung
nhìn và bổ sung những vật thể đồ họa 2D hay 3D vào môi trường thật qua các lớp thông tin hỗ
trợ và được hiển thị trên các thiết bị điện tử như smartphone, tablet... Nhờ vậy, AR sẽ mang đến
cho chúng ta trải nghiệm ảo ngay trước mắt thông qua các hình ảnh và khung nhìn ảo được tạo
ra nhờ các thiết bị thông minh.
Trong khóa luận này, chúng tôi sẽ đi vào tìm hiểu nguyên lý của công nghệ tăng cường
thực tại ảo, và cách thức hoạt động của ARToolkit. Thông qua bộ công cụ này chúng tôi đã xây
dựng một ứng dụng đơn giản cho phép người dùng chọn một hình ảnh làm marker và hiển thị
những đồ vật 3D khi camera nhận diện được marker đó. Qua quá trình thiết kế và cài đặt, chúng
tôi đã hiểu hơn về quá trình xây dựng một ứng dụng AR và cách áp dụng nó vào các bài toán
thực tế.
Trải qua quá trình xây dựng và thực nghiệm, hệ thống đáp ứng được cơ bản các yêu cầu
bài toán đặt ra. Hiệu suất của ứng dụng xây dựng bằng ARToolkit ở mức cao và độ trễ thấp.
Tuy nhiên để trở thành một nền tảng được ứng dụng rộng rãi thì cần phải nâng cấp và cải tiến
nhiều về hiệu suất, chức năng và các tài liệu liên quan.
Từ khóa : Thực tại ảo, Thực tại ảo tăng cường, ARToolkit, Marker
iii
ABSTRACT
Abstract:
Nowaday, the Augmented Reality (AR) technology has gradually become familiar with
people and been applied in many of real-life fields. Developed from the Virtual Reality
technology, AR implements the views and supplements 2D or 3D graphics in the real
environment through layers of supported information. These graphics will be displayed on
electronic devices such as smartphones, tablets and so on. Therefore, AR will bring us virtual
experiences before eyes through virtual images and views created thanks to smart devices.
In this thesis, we will go into a deep analysis of principles of the virtual reality enhancing
technology and the way of ARToolkit works. By this toolkit, we created a simple application
which allows users to choose a image as marker and display 3D objects if the camera can
identify that marker. Thanks to the design and installment, we understand more about the
process of building an AR application and how to apply it into real problems.
We have built a testing application system in order to meet the basic requirements that
problems posed. The application is based on ARToolkit and it has high efficiency and low
latency. Also, we need to improve the efficiency, functions and related documents for this
toolkit to be widely applied.
Từ khóa : Virtual reality, Augmented reality, ARToolkit, Marker
iv
MỤC LỤC
TÓM TẮT ...................................................................................................................... iii
ABSTRACT ................................................................................................................... iv
MỤC LỤC ....................................................................................................................... v
DANH MỤC HÌNH VẼ ................................................................................................ vii
DANH MỤC BẢNG BIỂU ........................................................................................... ix
DANH MỤC TỪ VIẾT TẮT.......................................................................................... x
Mở đầu ............................................................................................................................ 1
Chương 1: Cơ sở lý thuyết và công nghệ ........................................................................ 3
1.1. Thực tại ảo và công nghệ tăng cường thực tại ảo .............................................. 3
1.1.1.
Khái niệm ................................................................................................ 3
1.1.2.
Các phương pháp thực hiện AR .............................................................. 6
1.2. ARToolkit .......................................................................................................... 7
1.3. Xử lý đồ họa ...................................................................................................... 7
1.4. Mô hình MVP .................................................................................................... 8
Chương 2: Phân tích yêu cầu ........................................................................................ 11
2.1. Đặc tả yêu cầu.................................................................................................. 11
2.1.1.
Yêu cầu chức năng ................................................................................ 11
2.1.2.
Yêu cầu phi chức năng .......................................................................... 13
Chương 3: Thiết kế và xây dựng hệ thống .................................................................... 14
3.1. Kiến trúc hệ thống ........................................................................................... 14
3.1.1.
Kiến trúc client ...................................................................................... 16
3.1.2.
Kiến trúc server ..................................................................................... 17
3.2. Thiết kế ca sử dụng .......................................................................................... 18
3.3. Biểu đồ tuần tự ................................................................................................ 24
v
3.4. Cấu trúc cơ sở dữ liệu ...................................................................................... 28
Chương 4: Kết quả thực nghiệm ................................................................................... 31
4.1. Môi trường thực nghiệm .................................................................................. 31
4.2. Dữ liệu thực nghiệm ........................................................................................ 31
4.3. Kết quả thực nghiệm........................................................................................ 33
4.3.1.
Tạo marker ............................................................................................ 33
4.3.2.
Giao diện quản lý marker ...................................................................... 35
4.3.3.
Camera nhận diện .................................................................................. 37
Chương 5: Kết luận và định hướng phát triển............................................................... 40
TÀI LIỆU THAM KHẢO............................................................................................. 43
vi
DANH MỤC HÌNH VẼ
Hình 1.1. Trải nghiệm kính thực tế ảo trong lĩnh vực giải trí ......................................... 3
Hình 1.2. Tính năng nhận diện khuôn mặt của Google Glass ........................................ 4
Hình 1.3. Người dùng trải nghiệm kính thực tế ảo Hololens .......................................... 5
Hình 2.1. Ví dụ về Square marker ................................................................................ 12
Hình 2.2. Ví dụ về pattern marker ................................................................................ 12
Hình 3.1. Kiến trúc toàn bộ hệ thống ............................................................................ 14
Hình 3.2. Mô hình MVP với chức năng Edit marker.................................................... 16
Hình 3.3. Biểu đồ ca sử dụng ........................................................................................ 18
Hình 3.4. Ca sử dụng Sign up ....................................................................................... 24
Hình 3.5. Ca sử dụng Login .......................................................................................... 25
Hình 3.6. Ca sử dụng Get all marker ............................................................................ 25
Hình 3.7. Ca sử dụng Create marker ............................................................................. 26
Hình 3.8. Ca sử dụng Edit marker................................................................................. 26
Hình 3.9. Ca sử dụng Delete marker ............................................................................. 27
Hình 3.10. Ca sử dụng Download marker .................................................................... 28
Hình 3.11. Ca sử dụng Scan marker ............................................................................. 28
Hình 3.12. Cấu trúc các bảng cơ sở dữ liệu .................................................................. 29
Hình 4.1. Hình ảnh thử nghiệm 1 (1600x870) .............................................................. 31
Hình 4.2. Hình ảnh thử nghiệm 3 (1852x1389) ............................................................ 32
Hình 4.3. Hình ảnh thử nghiệm 2 (592x760) ................................................................ 32
Hình 4.4. Màn hình tạo mới một marker ...................................................................... 33
Hình 4.5. Qúa trình sinh dữ liệu nhận diện phía server ............................................... 34
Hình 4.6. Menu chính của ứng dụng ............................................................................. 35
Hình 4.7. Danh sách các marker trên server ................................................................. 35
Hình 4.8. Màn hình xem chi tiết marker ....................................................................... 36
Hình 4.9. Danh sách các marker ở local ....................................................................... 36
vii
Hình 4.10. Một vật thể 3D khác được vẽ bởi OpenSceneGraph .................................. 37
Hình 4.11. Camera nhận diện ra marker và vẽ lên vật thể 3D ...................................... 37
Hình 4.12. Thử nghiệm với các hình ảnh khác ............................................................. 38
viii
DANH MỤC BẢNG BIỂU
Bảng 3.1. Giải tích các thành phần trong kiến trúc hệ thống ........................................ 15
Bảng 3.2. Đặc tả ca sử dung Sign up ............................................................................ 19
Bảng 3.3. Đặc tả ca sử dụng Login ............................................................................... 19
Bảng 3.4. Đặc tả ca sử dụng View all marker ............................................................... 20
Bảng 3.5. Đặc tả ca sử dụng Create new marker .......................................................... 20
Bảng 3.6. Đặc tả ca sử dụng Edit marker ...................................................................... 21
Bảng 3.7. Đặc tả ca sử dụng Delete marker .................................................................. 22
Bảng 3.8. Đặc tả ca sử dụng download marker ............................................................ 22
Bảng 3.9. Đặc tả ca sử dụng Scan marker..................................................................... 23
Bảng 3.11. Giải thích ý nghĩa của bảng User................................................................ 29
Bảng 3.12. Giải thích ý nghĩa của bảng Marker ........................................................... 29
Bảng 3.13. Giải thích ý nghĩa của bảng Model ............................................................. 30
ix
DANH MỤC TỪ VIẾT TẮT
Ký tự
Viết đầy đủ
Ý nghĩa
CSDL
Cơ sở dữ liệu
Tập các dữ liệu lưu trữ trong
một hệ quản trị cơ sở dữ liệu
AR
Augmented Reality
Tăng cường thực tại ảo
VR
Virtual Reality
Thực tại ảo
OSG
OpenSceneGraph
Một bộ công cụ xây dựng đồ
họa 3D dựa trên OpenGL
MVC
Model – View – Controller
Mô hình MVC
MVP
Model – View – Presenter
Mô hình MVP
LGPL
Lesser General Public License
Giấy phép phần mềm công
cộng
DPI
Dot per inch
Mật độ điểm ảnh vật lý
x
Mở đầu
Kể từ khi công nghệ thực tại ảo ra đời đến nay, nó đã đóng góp một phần không
nhỏ cho các ứng dụng phục vụ cuộc sống, và dần dần đã trở thành một phần không thể
thiếu trong nhiều lĩnh vực y tế, khoa học, giải trí, quân sự… đáp ứng các nhu cầu thương
mại, nghiên cứu, giáo dục... Công nghệ thực tại ảo đang trở thành xu thế của công nghệ
tương lai, định hướng chiến lược của các công ty công nghệ.
Hiện nay trên thế giới đã có nhiều ứng dụng của AR phục vụ cuộc sống. Chẳng
hạn như chiếc điện thoại Amazon Fire với tính năng Firefly tự động nhận diện và tìm
thông tin đồ vật. Và mới đây nhất là chiếc kính Hololens của Microsoft với khả năng
đưa con người vào thế giới kết hợp giữa thật và ảo, hơn nữa còn cho phép người dùng
tương tác với môi trường ảo. Có thể kể ra vô vàn các ứng dụng của công nghệ này, các
ứng dụng trình diễn sản phẩm mua sắm trực tuyến, các thiết bị vật dụng trong gia đình,
các mô hình, chi tiết máy, các ứng dụng trò chơi thực tại ảo, trình diễn sản phẩm…
Nắm bắt được tiềm năng to lớn của công nghệ AR, nhiều công ty công nghệ lớn
đã bắt đầu tự xây dựng các sản phẩm AR cho riêng mình, nổi bật như tập đoàn PTC với
bộ công cụ lập trình Vuforia được dùng để xây dựng ứng dụng cho Hololens. Năm 2014,
Facebook đã hoàn tất thương vụ mua lại Oculus Rift với giá hơn 2 tỷ đô để phát triển
những thiết bị VR cho riêng mình. Samsung cũng đang có những dự định của riêng mình
với kính áp tròng có công nghệ AR, hay chiếc kính thực tế ảo GEAR VR đang gây chú
ý trong giới công nghệ trong thời gian vừa qua.
Nhóm sinh viên chúng tôi gồm 2 thành viên là tôi Lê Vũ Huy và bạn Bùi Xuân
Hiền đã cùng nhau xây dựng chương trình này. Qua tìm hiểu và đánh giá về các bộ công
cụ lập trình AR, chúng tôi đã lựa chọn ARToolkit SDK để tìm hiểu về nguyên lý của
AR và xây dựng một ứng dụng AR đơn giản. Ứng dụng này cho phép người dùng chụp
một hình ảnh hoặc chọn một hình ảnh có sẵn làm marker. Với mỗi marker, ứng dụng sẽ
đọc dữ liệu ảnh và xử lý để sinh ra một bộ dữ liệu nhận diện. Sau khi đã có dữ liệu nhận
diện, người dùng có thể sử dụng chính ứng dụng đó mở camera và nhận diện marker đó
và vẽ lên trên màn hình những hình khối 3D tại vị trí marker đó. Nhờ quá trình tracking
liên tục của ARToolkit, dù camera di chuyển nhưng hình vẽ 3D vẫn được vẽ đúng tại vị
1
trí của marker, do đó tạo nên cảm giác như là đồ vật ở thế giới thật đã được thay bằng
các đối tượng ảo.
Ứng dụng này có chức năng đơn giản nhưng đã được xây dựng một cách khá
hoàn thiện, từ quá trình xử lý dữ liệu trên server, liên kết dữ liệu giữa server và client,
và cả quá trình nhận diện marker ở client. Từ đó cho thấy những điểm mạnh mà bộ công
cụ ARToolkit mang lại cho các lập trình viên và các nhà phát triển.
Xác định yêu cầu trong chương trình thực nghiệm
Bài toán có thể được tóm tắt đơn giản như sau:
Yêu cầu 1: Tạo ra các dấu hiệu nhận biết marker
Đầu vào: 1 hình ảnh định dạng jpg (marker).
Đầu ra: bộ 3 file dữ liệu nhận diện marker.
Yêu cầu 2: Nhận diện và hiển thị dữ liệu liên quan
Đầu vào: Hình ảnh stream thu từ camera và dữ liệu nhận diện marker.
Đầu ra: Hình vẽ 3D vẽ lên marker.
Như vậy trong khóa luận này, chúng tôi đưa phương pháp xây dựng một ứng
dụng chạy trên nền tảng Android đáp ứng được vấn đề đã nêu ở trên.
Nhóm chúng tôi gồm 2 sinh viên là tôi Lê Vũ Huy và bạn Bùi Xuân Hiền đã cùng nhau
phát triển ứng dụng này. Tôi tập trung vào phát triển tính năng, giao diện ứng dụng trên
client Android và việc render đồ họa 3D. Bạn Bùi Xuân Hiền tập trung vào việc phát
triển server và cung cấp các API để giao tiếp giữa client và server.
Cấu trúc khóa luận
Các phần còn lại của khóa luận này có cấu trúc như sau:
Chương 2: Cơ sở lý thuyết và công nghệ - trình bày các thuật toán, so sánh, công
nghệ được sử dụng.
Chương 3: Phân tích và xây dựng chương trình - chương này sẽ có các thiết kế
của hệ thống thực nghiệm như các kiến trúc, cơ sở dữ liệu, biểu đồ thiết kế.
Chương 4: Kết quả thực nghiệm – kết quả demo bao gồm đánh giá và so sánh.
Chương 5: Kết luận và tương lai phát triển - tóm lược kết quả mà khóa luận đạt
được, những điểm hạn chế, đặc biệt là đưa ra định hướng phát triển nhằm đưa hệ
thống trở thành một nền tảng được ứng dụng rộng rãi.
2
Chương 1: Cơ sở lý thuyết và công nghệ
Để có thể giải quyết các yêu cầ u đặt ra, chúng tôi sử du ̣ng những cơ sở lý thuyết
và công nghệ sau đây.
1.1. Thực tại ảo và công nghệ tăng cường thực tại ảo
1.1.1. Khái niệm
VR (Virtual Reality) là công nghệ cho phép con người quan sát những vật ở thế
giới thật trong thế giới ảo thông qua thiết bị điện tử nào đó, ví dụ: kính thực tại ảo,
Google Cardboard, Oculus Rift,… VR thay thế hoàn toàn thế giới thực tế bằng thế giới
ảo bằng các thành phần công nghệ như hình ảnh, âm thanh, video. Người dùng có thể
sử dụng công nghệ này để xem phim, chơi game, và khi đó, các cảnh trong phim, game
đó sẽ diễn ra trực tiếp trước mắt bạn y hệt như bạn là một nhân vật trong đó. Ngoài ra
người dùng còn có thể tương tác với thế giới ảo bằng cách quay đầu, giọng nói, hoặc
chuyển động tay, chân thông qua các thiết bị hỗ trợ1.
Hình 1.1. Trải nghiệm kính thực tế ảo trong lĩnh vực giải trí
1
/>
3
AR (viết tắt của Augmented Reality) được phát triển lên từ VR nhưng khác một
điều là AR bổ sung các thông tin, chi tiết cho thế giới thực, còn VR thay thế hoàn toàn
thế giới thực bằng các thành phần trong thế giới ảo. Các thông tin bổ sung ở đây có thể
dưới dạng hình ảnh, âm thanh, video… Ngoài ra người dùng còn có thể tương tác với
các vật thể ảo qua màn hình cảm ứng của điện thoại. Hiện nay có một số công ty nổi bật
trong lĩnh vực này như: PTC Inc, Metaio, Microsoft, Wikitude, DAQRI,…
Một hệ thống AR gồm có 3 thành phần chính: thế giới thực, các thiết bị phần
cứng nhận diện và các phần mềm hỗ trợ. Chìa khóa của một ứng dụng AR là làm thế
nào để tích hợp được được những nội dung bổ sung vào thế giới thực nhanh và chính
xác nhất. Để làm được điều này, các thiết bị phần cứng cần tính toán được vị trí của tọa
độ thế giới thực từ camera, tọa độ này là tương đối so với thiết bị và thay đổi liên tục
khi camera di chuyển. Khi đã tính toán được các vector định hướng, thiết bị sẽ vẽ thêm
các thành phần tăng cường, xây dựng nên một môi trường kết hợp giữa thực tế và ảo.
Một số ứng dụng AR trên thực tế
Hình 1.2. Tính năng nhận diện khuôn mặt của Google Glass
Google Glass của Google được giới thiệu lần đầu ra công chúng vào tháng 4 năm
2013. Với khá nhiều tính năng như có thể đóng vai trò là một chiếc điện thoại, chụp ảnh,
camera nhận diện khuôn mặt, Google Glass đã trở thành 1 thiết bị đột phá trong thế giới
thiết bị đeo được. Tuy nhiên do giá thành quá đắt đỏ, bị đánh giá là không hữu dụng và
4
một số vướng mắc trong chính sách sử dụng, Google Glass đạt doanh số rất thảm hại và
Google đã dừng bán chiếc kính này vào tháng 1 năm 2015. Cho tới thời điểm này, chưa
có thông tin gì thêm về thế hệ tiếp theo của Google Glass, tuy nhiên chúng tôi có thể iết
chắc chắn rằng, đây sẽ là một hướng đi tiềm năng trong tương lai gần và chắc chắn
Google sẽ không bỏ qua nó. Dưới đây là một hình ảnh về ứng dụng của Google Glass,
nguồn2
Hình 1.3. Người dùng trải nghiệm kính thực tế ảo Hololens
Gây được tiếng vang lớn trong thời điểm ra mắt, chiếc kính thực tế ảo Hololens
của Microsoft đã khiến cả thế giới phải trầm trồ vì những gì nó làm được. Khác với tất
cả các thiết bị trước đó, Hololens là một chiếc kính có màn hình trong suốt, giúp người
dùng có thể nhìn xuyên qua nó và thấy các nội dung ảo được hiện lên trên những gì đang
diễn ra ngoài đời thực. Cụ thể hơn, thiết bị có một loạt các cảm biến để nhận dạng cử
chỉ của 5 đầu ngón tay và sử dụng thông tin này cùng với lớp kính màu để tạo ra những
hình ảnh mà người dùng có thể quan sát và tương tác từ nhiều góc độ khác nhau. Thêm
vào đó, camera cũng đóng vai trò trong việc xác định vật thể trong phòng và sau đó vi
xử lý sẽ đảm nhận vai trò để “ghi đè” hình ảnh “ảo” lên thế giới “thực” và hiển thị kết
quả lên màn hình của kính. Với một tương lai sáng lạng, Hololens đang chiếm được
2
/>
5
niềm hi vọng của người dùng và các nhà phát triển, tuy nhiên Microsoft hiện chưa hé lộ
thông tin gì về ngày ra mắt chính thức, giá phiên bản thương mại. Có lẽ người dùng sẽ
còn phải đợi một thời gian khá lâu nữa mới được tận tay dùng thử sản phẩm này.
1.1.2. Các phương pháp thực hiện AR
Các ứng dụng sử dụng công nghệ tăng cường thực tại ảo hiện nay thường sử dụng
3 phương pháp chính sau để nhận biết vật thể:
a) Dựa trên vị trí
Hiển thị các thông tin bổ sung liên quan đến thông tin vị trí có thể lấy được từ
GPS. Hoặc có thể kết hợp thêm các thông tin vị trí, cảm biến từ trường theo hướng và
cảm biến gia tốc do độ nghiêng để xác định một vị trí để trình bày thông tin về vật đó.
Phương pháp này phục thuộc vào độ chính xác của GPS và các cảm biến liên quan.
b) Marker tracking (nhận diện bằng dấu hiệu)
Với phương pháp này, phần mềm cần được học trước dữ liệu nhận diện tương
ứng với một dấu hiệu (marker) nào đó, và được định nghĩa sẵn các nội dung tăng cường
gắn với nó.
Các dấu hiệu nhận biết thường có khuôn mẫu nhất định được sinh ra theo một
quy tắc nào đó và thường bị giới hạn.
c) Markerless tracking (nhận diện không cần dấu hiệu)
Phương pháp markerless tracking không yêu cầu một dấu hiệu nhận diện nào cả,
thiết bị sẽ sử dụng camera và các cảm biến để phát hiện môi trường xung quanh, từ đó
vẽ các vật thể 3D vào môi trường đó. Trải nghiệm AR này sẽ mở ra một khả năng vô
tận cho các ứng dụng thương mại và giải trí. Nếu kết hợp với Google Glass, người dùng
sẽ có những trải nghiệm vô cùng ấn tượng
Chương trình trong khóa luận này chúng tôi làm theo phương pháp Marker Tracking.
6
1.2. ARToolkit
ARToolkit là một bộ công cụ lập trình Augmented Reality mã nguồn mở cung
cấp thư viện theo dõi (tracking) hình ảnh và bổ sung lớp đồ họa ảo vào thể giới thực.
ARToolkit là một thư viện AR rất phổ biến với 739,110 lượt tải tính đến thời điểm viết
khóa luận này.3
ARToolkit được phát triển đầu tiên bởi Giáo sư Hirokazu Kato ở Viện Khoa Học
và Công nghệ Nara (Nhật) năm 1999 và được phát hành bởi HIT Lab thuộc trường Đại
Học Washington (Mỹ). Năm 2001, công ty thương mại ARToolworks được thành lập
và phát hành phiên bản ARToolkit v1.0 dưới dạng mã nguồn mở trên trang web của
HITLab. Kể từ đó, các viện nghiên cứu bắt đầu sử dụng ARToolkit như là cơ sở của
việc nghiên cứu và giảng dạy về công nghệ tăng cường thực tại ảo. Năm 2008,
ARToolkit được phát triển trên các ngôn ngữ Java, C# bởi nyatla. Trải qua hơn 15 năm
phát triển, ARToolkit SDK được phát triển toàn diện, không chỉ số ngôn ngữ nó hỗ trợ
mà còn cải thiện cả về hiệu năng và giao diện. Năm 2015 ARToolworks được mua lại
bởi DAQRI, một công ty nghiên cứu về giao tiếp người – máy và sản xuất các thiết bị
đeo thông minh. Bộ công cụ ARToolkit trước kia chỉ được phát hành dưới giấy phép trả
phí, nay đã được phát hành miễn phí dưới giấy phép LGPL v3.0. [2]
1.3. Xử lý đồ họa
Thư viện ARToolkit hỗ trợ việc load đối tượng 3D từ file hệ thống và render lên
màn hình, và việc hiển thị này hoàn toàn có thể tùy biến bởi các lập trình viên. Ngoài sự
hỗ trợ mạnh mẽ của các hàm đồ họa trong OpenGL, ARToolkit còn có thể tích hợp được
thư viện đồ sộ các mô hình 3D độ phân giải cao của OpenSceneGraph framework. Hơn
nữa, ARToolkit còn được tích hợp tích hợp với nhiều bộ engine bên thứ ba, trong đó có
Unity3D trong phiên bản ARToolkit for Unity.
OpenGL
Được phát triển đầu tiên bởi Silicon Graphic, Inc., OpenGL là một giao diện phần
phần mềm hướng thủ tục theo chuẩn công nghiệp hộ trợ đồ họa 3 chiều, cung cấp khoảng
120 tác vụ để vẽ các primitive trong nhiều chế độ khác nhau. Với OpenGL, lập trình
3
/>
7
viên có thể tạo ra ảnh 3 chiều cả tĩnh và động với chất lượng cao. Theo nguyên lý,
ARToolkit sẽ tính toán tọa độ theo một hình thức phù hợp để có thể sử dụng trực tiếp
với OpenGL, ngoài ra nó còn hỗ trợ việc render video chạy nền bằng OpenGL.
OpenSceneGraph
OpenSceneGraph (OSG) là một framework mã nguồn mở cung cấp các mô hình,
sơ đồ, đối tượng 3D với chất lượng cao, cho phép người dùng tùy biến các mô hình và
đồ họa đó một cách hiệu quả, linh hoạt, dễ dàng thay đổi. ARToolkit đã được tích hợp
thêm thư viện libARosg, phục vụ việc thực hiện các tác vụ cơ bản liên quan đến render
các đối tượng 3D từ file OSG.
OpenVRML
VRML là một chuẩn tập tin định nghĩa vị trí đỉnh, cạnh cho một đa giác 3D và
có thể định nghĩa màu, ánh sáng, độ trong suốt cho các mặt của đa giác đó. OpenVRML
là một engine mã nguồn mở chuyên render đồ họa cho các tập tin định dạng VRML và
X3D, nó đã được tích hợp vào ARToolkit kể từ phiên bản 4.3 (ra mắt ngày 31/10/2007)
trong thư viện libARvrml. Tuy nhiên do hiệu năng không cao, ARToolkit đã ngừng hỗ
trợ cập nhật thư viện libARvrml từ phiên bản 4.5. Mặc dù vậy, thư viện libARvrml vẫn
được tích hợp trong các phiên bản tiếp theo của ARToolkit.
DirectX
ARToolkit không trực tiếp hỗ trợ DirectX, tuy nhiên việc theo dõi (tracking) của
ARToolkit là một tiến trình render độc lập, do đó DirectX vẫn có thể được sử dụng,
miễn là lập trình viên có thể cài đặt tiến trình xử lý đồ họa riêng.
Trong bài toán này, chúng tôi sử dụng thư viện OpenSceneGraph để render và
hiển thị vật thể 3D. Với hiệu năng tốt, hỗ trợ hiệu ứng chuyển động, cùng với kho đồ
họa có sẵn, OpenSceneGraph đã được dùng làm thư viện xử lý đồ họa chính của
ARToolkit.
1.4. Mô hình MVP
MVP (Model – View – Presenter) là một mô hình kiến trúc hướng giao diện
người dùng, được thiết kế để tạo thuận lợi cho việc kiểm thử đơn vị (unit testing) và
8
tăng tính tách biệt giữa tầng dữ liệu và tầng hiển thị dữ liệu trong mô hình MVC. Mô
hình MVP cho phép tách tầng trình diễn (Presenter) ra khỏi tầng dữ liệu (Model), vì vậy
tương tác với giao diện được tách biệt với cách nó được biểu diễn trên màn hình (View),
hay nói cách khác, tất cả logic khi người dùng tương tác được tách ra và đưa vào tầng
trình diễn. Thiết kế lý tưởng nhất là với cùng một logic được áp dụng cho nhiều View
khác nhau và hoán đổi được cho nhau.
Trong đó:
Model là một interface xác định cách mà dữ liệu được hiển thị trong giao diện
người dùng.
View đại diện cho các thành phần giao diện người dùng. View đảm nhận trách
nhiệm hiển thị các dữ liệu nhận từ Presenter và hiển thị lên cho người dùng
Presenter có trách nhiệm xử lý tất cả các sự kiện UI cho View. Nó nhận đầu
vào là tương tác và input của người dùng, sau đó xử lý dữ liệu, và trả về lại
cho View. Không giống như View và Controller, View và Presenter hoàn toàn
tách rời nhau và giao tiếp với nhau thông qua interface.
Điểm khác biệt giữa mô hình MVP với mô hình MVC là vị trí cũng như chức
năng của tầng Presenter so với tầng Controller. Trong mô hình MVP, tầng View là tầng
duy nhất tiếp nhận tương tác người dùng, thay vì cả 2 tầng View và tầng Controller như
trong mô hình MVC. Logic xử lý tương tác cũng như logic xử lý dữ liệu hiển thị được
tách ra trong tầng Presenter thay vì được gộp chung với tiếp nhận tương tác trong
Controller.
Trong Android, có một vấn đề phát sinh từ thực tế là các cơ chế xử lý tương tác
trong Android được kết hợp chặt chẽ giữa giao diện người dùng và xử lý, truy cập dữ
liệu. Việc kết hợp này có thể giúp giảm thiểu lượng code trong ứng dụng cũng như gộp
các xử lý, logic trong ứng dụng vào cùng một nơi. Nhưng đối với một ứng dụng liên tục
phát triển, hay một ứng dụng lớn, việc này khiến cho lượng code trên mỗi logic trở nên
rất lớn, các logic xen lần, chồng chéo lên nhau, rất khó cho việc đọc hiểu, bảo trì cũng
như mở rộng.
Việc phân lớp ứng dụng có thể giảm đi hiệu năng do ứng dụng cần thêm nhiều
tài nguyên, nhưng sẽ tăng nhiều lần khả năng nâng cấp và bảo trí phần mềm, không
những thế còn mở rộng khả năng cho phép kiểm thử từng phần của ứng dụng trở nên dễ
9
dàng hơn. Chính vì thế việc cân nhắc giữa hiệu năng và tính dễ dàng mở rộng, bảo trì là
hết sức quan trọng.
Nhận thấy điểm mạnh của mô hình MVP, chúng tôi đã lựa chọn nó để phát triển
ứng dụng này. Đây cũng đang là một trong những mô hình phổ biến của các công ty lớn
trong phát triển ứng dụng Android.
10
Chương 2: Phân tích yêu cầu
2.1. Đặc tả yêu cầu
Hệ thống được xây dựng theo mô hình client – server. Có 2 loại người dùng trong hệ
thống:
Người quản lý: Admin
Người sử dụng: User
Hệ thống cho phép user có thể:
Sinh dữ liệu nhận diện từ một hình ảnh
Quản lý marker: thêm marker mới, sửa marker đã có, xóa một marker, xem danh
sách toàn bộ các marker trên server và các marker có sẵn ở local.
Nhận diện marker.
Trong hệ thống này, admin có tất cả các chức năng của user, ngoài ra admin còn có thể
quản lý các user hiện có (thêm, sửa, xóa user).
2.1.1. Yêu cầu chức năng
Bài toán 1: Sinh dữ liệu nhận diện từ một hình ảnh
Để tạo marker mới, người dùng sẽ chụp một hình ảnh hoặc chọn ảnh từ thư viện
và gửi lên server. Server xử lý và sinh ra một bộ dữ liệu nhận diện cho mỗi marker.
Trong các ứng dụng AR thường có rất nhiều loại marker, nhưng chúng ta có thể
chia chúng ra làm 3 loại chính:
11
2D Barcode marker: Marker này là 1 hình vuông có viền đen bao
quanh bên ngoài, ở trong là 1 ma trận n*n các ô đen và trắng (n thường dao
động từ 4 đến 16). Ưu điểm của 2D barcode marker là đơn giản, nhận diện
nhanh, tuy nhiên marker lại bị giới hạn về số lượng. Nếu tăng n lên thì khả
năng nhận diện sẽ khó hơn và tốn nhiều thời gian hơn.
Hình 2.1. Ví dụ về 2D barcode marker
Square marker: Loại marker này là 1 dạng biến thể của marker ma trận,
vẫn có một viền đen bao quanh ở ngoài, tuy nhiên ở bên trong sẽ là 1 hình
đen trắng tùy ý. Khi camera nhận diện, hình bên trong viền đen sẽ được
nhận diện thành 1 ma trận n*n với số n do ứng dụng quy định (tùy thuộc vào
từng bài toán cụ thể).
Hình 2.2. Ví dụ về square marker
Image marker: Loại marker này là 1 hướng đi mới đang được nhà phát
triển quan tâm, khắc phục được những giới hạn của square marker. Thay vì
bị giới hạn bởi 1 hình vuông viền đen, image marker cho phép người dùng
12