Trên cơ sở các kiến thức được học trong nhà trường và quá trình tìm hiểu các website trong thực tế, em đã quyết định chọn đề tài “Tìm hiểu AR và xây dựng ứng dụng bán đồ nội thất online”
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
Nguyễn Quốc Nam Sang
Khóa luận tốt nghiệp
Tìm hiểu AR và xây dựng ứng dụng bán đồ nội thất
online Research AR and building an application for online
furniture commerce
Kỹ sư ngành kĩ thuật phần mềm
Tp Hồ Chí Minh, 2021
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
Nguyễn Quốc Nam Sang -17520976
Khóa luận tốt nghiệp Tìm hiểu AR và xây dựng ứng dụng bán đồ nội thất
Trang 3DANH SÁCH HỘI ĐỒNG BẢO VỆ KHÓA LUẬN
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……… ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin
1 ……… – Chủ tịch
2 ……… – Thư ký
3 ……… – Ủy viên
4 ……… – Ủy viên
Trang 4ĐẠ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 …… tháng …… năm ……
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ HƯỚNG DẪN)
Tên khóa luận:
Tìm hiểu AR và xây dựng ứng dụng bán đồ nội thất online
Nguyễn Quốc Nam Sang 17520976 TS Trần Anh Dũng
Đánh giá Khóa luận
1 Về cuốn báo cáo:
Số trang _ Số chương _
Số bảng số liệu _ Số hình vẽ _
Số tài liệu tham khảo _ Sản phẩm _
Một số nhận xét về hình thức cuốn báo cáo:
2 Về nội dung nghiên cứu:
Trang 5
3 Về chương trình ứng dụng:
4 Về thái độ làm việc của sinh viên:
Trang 6
Đánh giá chung:
Điểm từng sinh viên:
Nguyễn Quốc Nam Sang: ………/10
Người nhận xét
(Ký và ghi rõ họ tên)
TS Trần Anh Dũng
Trang 7ĐẠ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 …… tháng …… năm ……
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ PHẢN BIỆN) Tên khóa luận:
Tìm hiểu AR và xây dựng ứng dụng bán đồ nội thất online
Nguyễn Quốc Nam Sang 17520976
Đánh giá Khóa luận
1 Về cuốn báo cáo:
Số trang _ Số chương _
Số bảng số liệu _ Số hình vẽ _
Số tài liệu tham khảo _ Sản phẩm _
Một số nhận xét về hình thức cuốn báo cáo:
Trang 8
2 Về nội dung nghiên cứu:
3 Về chương trình ứng dụng:
4 Về thái độ làm việc của sinh viên:
Trang 9
Đánh giá chung:
Điểm từng sinh viên:
Nguyễn Quốc Nam Sang: ………/10
Người nhận xét
(Ký và ghi rõ họ tên)
Trang 10LỜI CẢM ƠN
Đầu tiên, nhóm tác giả xin gởi lời cảm ơn chân thành đến tập thể quý Thầy Cô Trường Đại học Công nghệ thông tin – Đại học Quốc gia TP.HCM và quý Thầy Cô khoa Công Nghệ Phần Mềm đã giúp cho nhóm tác giả có những kiến thức cơ bản làm nền tảng để thực hiện đề tài này
Đặc biệt, nhóm tác giả xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới Thầy Trần Anh Dũng, đã hướng dẫn tận tình, truyền đạt nhiều kiến thức bổ ích để giúp chúng em hoàn thành được sản phẩm
Trong thời gian thực hiện đề tài, nhóm tác giả đã vận dụng những kiến thức nền tảng đã tích lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những kiến thức mới Từ đó, nhóm tác giả vận dụng tối đa những gì đã thu thập được để hoàn thành một báo cáo khóa luận tốt nhất Tuy nhiên, trong quá trình thực hiện, nhóm tác giả không tránh khỏi những thiếu sót Chính vì vậy, nhóm tác giả rất mong nhận được những sự góp ý từ phía các Thầy Cô nhằm hoàn thiện những kiến thức mà nhóm tác giả đã học tập và là hành trang
để nhóm tác giả thực hiện tiếp các đề tài khác trong tương lai Xin chân thành cảm ơn các quý Thầy Cô !
Nhóm tác giả thực hiện
Trang 11ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
ĐỀ CƯƠNG CHI TIẾT TÊN ĐỀ TÀI: Tìm hiểu AR và xây dựng ứng dụng bán đồ nội thất online
TÊN ĐỀ TÀI (tiếng Anh): Research AR and building an application for online
furniture commerce
Cán bộ hướng dẫn: ThS Trần Anh Dũng
Thời gian thực hiện: Từ ngày 01/03/2021 đến ngày 30/06/2021
Sinh viên thực hiện:
Nguyễn Quốc Nam Sang: 17520976
Nội dung đề tài: (Mô tả chi tiết mục tiêu, phạm vi, đối tượng, phương pháp thực hiện, kết
quả mong đợi của đề tài)
1 Mục tiêu của đề tài
1.1 Bối cảnh chọn đề tài
Công việc kinh doanh buôn bán đã xuất hiện từ rất lâu, trải qua mỗi giai đoạn lịch sử
nó mang một hình thức đặc thù riêng Trước kia, khi các công cụ hỗ trợ công việc mua
bán chưa phát triển mạnh, thì người kinh doanh mua bán chỉ diễn ra dưới hình thức mua
bán trực tiếp Từ khi khoa học công nghệ phát triển, nó đã tạo ra phát triển các loại hình
thức mua bán mới, điển hình là mua bán trực tuyến Hình thức mua bán trực tuyến hỗ trợ
Trang 12đắc lực cho người kinh doanh tiếp xúc với được nhiều khách hàng, còn khách hàng thì công việc mua bán được diễn ra nhanh chóng, thuận lợi, tiết kiệm được thời gian,…
- Hiện nay, Thương Mại Điện Tử (TMĐT) đang được nhiều quốc gia quan tâm, coi là một trong những động lực phát triển chủ yếu của nền kinh tế và dần trở thành xu hướng tất yếu trong mùa dịch toàn cầu COVID-19 đang diễn ra TMĐT đem lại những lợi ích tiềm tàng, giúp doanh nghiệp thu được thông tin phong phú về thị trường và đối tác, giảm chi phí tiếp thị và giao dịch, tạo dựng và củng cố quan hệ bạn hàng Thế nhưng thị trường thương mại điện tử hiện nay chỉ giới hạn ở những món đồ nhỏ, món đồ dễ lắp đặt và không có giá trị quá lớn khi người dùng phổ thông muốn mua bán online Với công nghệ
AR bọn em muốn mở rộng thị trường đến những món đồ mà bình thường không ai nghĩ tới sẽ mua bán qua internet: đồ nội thất, trang trí nhà, phòng ốc
- Việc mua hàng qua mạng chỉ với thủ tục đăng ký mua sắm đơn giản nhưng đem lại nhiều lợi ích: tiết kiệm và chủ động về thời gian, tránh những nơi đông người và tránh khỏi những phiền phức khó chịu Vậy nên việc mua bán hàng qua mạng đang rất được mọi người quan tâm và thị trường mua bán đồ nội thất online cũng chưa được khai thác nhiều nên rất có tiềm năng để phát triển, công nghệ AR sẽ là đòn bẩy thúc đẩy khả năng khai thác thị trường này Trên cơ sở các kiến thức được học trong nhà trường và quá trình tìm hiểu các website trong thực tế, em đã quyết định chọn đề tài “Tìm hiểu AR và xây dựng ứng dụng bán đồ nội thất online”
- Phục vụ tốt hơn nhu cầu của khách hàng và quản lý của cửa hàng trong hoạt động kinh doanh
- Khách hàng chỉ cần các thao tác đơn giản trên điện thoại di động là có thể đặt hàng được ngay
- Khách hàng có thể xem trước sản phẩm mình chọn sẽ trông ra sao trong nhà, phòng mình từ đó tăng khả năng quyết định đặt mua sản phẩm
Trang 131.2 Tính mới/ khác biệt về chức năng của đề tài so với một số ứng dụng thương mại điện tử hiện nay
❖ Khai thác công nghệ AR:
Hiện nay thị trường đã đầy rẫy những trang thương mại điện tử cho đủ loại sản phẩm nhưng thị trường đồ nội thất vẫn thuộc về các cửa hàng lớn, các chủ gia công đồ nội thất là chính Để thị trường đồ nội thất sát nhập vào thị trường thương mại điện tử thì chúng ta phải giải quyết một trong những vấn đề mà người mua đồ nội thất hay đắn đo nhất: lựa mua mẫu mã và thiết kế hợp với không gian của sản phẩm Với công nghệ AR chúng ta có thể hiện lên sản phẩm một cách chân thực trong không gian thực để khách hàng có thể quyết định mua sản phẩm hay không ngay tại chỗ mà không cần ra cửa hàng lựa chọn hay nhờ các chủ gia công tư vấn
1.3 Mục đích của đề tài
Ứng dụng mua bán hàng Furniture store và phần mềm AR chạy trên nền Android
và Web được thực hiện dựa trên hai mục đích chính sau:
Thứ nhất là nghiên cứu các công nghệ lập trình như: lập trình ứng dụng với Unity, java Web và react Và các công nghệ AR như thư viện ARcore của google Có thể áp
dụng trong ứng dụng Furniture store và phần mềm AR trong việc khai thác thị trường
nội thất trong mảng E-commerce
Thứ hai là phát triển ứng dụng có tính thực tiễn cao, có khả năng triển khai ứng dụng vào thực tế, giúp những người có nhu cầu mua bán hàng hóa có thể thao tác dễ dàng và tiện lợi
Trang 14Em hi vọng dựa trên nền tảng lý thuyết đã được thầy cô truyền thụ lại, kết hợp với
sự tìm hiểu công nghệ của em, luận văn tốt nghiệp của em sẽ đạt được mục đích mong đợi
1.4 Ý nghĩa của đề tài
Trước hết, đề tài “Tìm hiểu AR và xây dựng ứng dụng bán đồ nội thất online” là một ứng dụng được xây dựng như một đề tài thể hiện việc áp dụng những kiến thức quý báu
đã được các thầy cô của trường Đại học Công nghệ Thông tin – Đại học Quốc gia thành phố Hồ Chí Minh đã nhiệt tình truyền thụ lại cho chúng em Và đặc biệt là sự theo dõi
và quan tâm giúp đỡ của thầy Trần Anh Dũng trong suốt thời gian em chúng em thực hiện đề tài này
Thứ hai là những kinh nghiệm quý báu mà em có được trong quá trình thực hiện đề tài sẽ là hành trang tuyệt vời giúp ích rất nhiều cho công việc sau này của mỗi thành viên trong em
Thứ ba, Tính đến tháng 12 năm 2019, mặc dù số người dùng hệ điều hành IOS đã tăng lên, nhưng số lượng người dùng Android vẫn chiếm áp đảo gấp 6 lần IOS, chiếm 85% thị phần toàn ngành (https://tintuc.viettelstore.vn/so-luong-nguoi-dung-android-
công ty sử dụng ngôn ngữ lập trình này (mức độ phổ biến chỉ xếp thứu 2 sau C theo Wiki) Chính vì thế, lập trình ứng dụng android bằng Unity và Web sử dụng ngôn ngữ C# có nhiều cơ hội việc làm và với các thành viên trong em, đích đến của việc học ở trường là đi làm nên em hi vọng việc cố gắng nghiên cứu và áp dụng công nghệ vào đề tài của mình, sẽ giúp từng thành viên trong em tìm kiếm được 1 cơ hội nghề nghiệp phù hợp Và em chúng em cũng rất hy vọng sẽ tạo nên một sản phẩm hoàn chỉnh nhất có thể
để đáp lại sự nhiệt tình giúp đỡ từ thầy cô và cả tâm huyết của em khi quyết định thực hiện đề tài này
Trang 151.5 Nhiệm vụ của đề tài
Đề tài “Tìm hiểu AR và xây dựng ứng dụng bán đồ nội thất online” là hai ứng dụng chạy trên điện thoại sử dụng hệ điều hành Android có phần cứng hỗ trợ AR và một ứng dụng chạy trên nền tảng Web
Hai ứng dụng gồm có : Ứng dụng Furniture Store viết trên Web và ARFurniture
sử dụng công nghệ Unity viết cho android
- Ứng dụng Furniture Store: Dành cho người tiêu dùng và quản trị viên
+ Đăng ký và đăng nhập
+ Tìm kiếm sản phẩm có sử dụng bộ lọc
+ Sắp xếp sản phẩm theo các hạng mục tương ứng
+ Xem thông tin sản phẩm
+ Đặt hàng mua sản phẩm vào giỏ hàng
+ Xem thông tin giỏ hàng và tạo đơn hàng
+ Thanh toán đơn hàng
+ Quản lý sản phẩm + Quản lý đơn hàng
Trang 16+ Liên kết với Furniture Store để mua hàng
+ Đăng nhập, đăng ký trên phần mềm để tiến hành thêm vào sản phẩm
vào giỏ hàng
+ Mua hàng trực tiếp tại Furniture Store
Mục tiêu của đề tài này là:
- Tìm hiểu các hoạt động kinh doanh trong thực tế
- Tìm hiểu cách thức xây dựng một ứng dụng trên android
- Xây dựng thành công ứng dụng thương mại điện tử sử dụng công nghệ AR hiện đại để khai thác thị trường E-commerce nội thất
- Hệ thống có khả năng ứng dụng và triển khai vào thực tiễn nhanh chóng
- Áp dụng công nghệ ARcore của google để tăng tốc độ phát triển phần mềm và đảm bảo công nghệ hiện đại ít lỗi
2 Phạm vi nghiên cứu
Ứng dụng Furniture Store và ARFurniture được em xây dựng bằng ngôn ngữ Java
trên môi trường Web và phần mềm android ARFurniture được xây dựng bằng Unity kết hợp thư viện ARcore
Tìm hiểu về công nghệ AR và các ứng dụng có thể của AR để phát triển phần mềm có tính thương mại điện tử
3 Đối tượng nghiên cứu
- Các công nghệ:
Trang 17+ Amazon web service
- Thuật toán: Các thuật toán liên quan tới AR như tìm kiếm mặt phẳng
- Đối tượng trong phạm vi đề tài hướng đến:
+ Những doanh nghiệp, nhà bán hàng trong và ngoài nước
+ Người tiêu dùng trong nước và quốc tế
4 Phương pháp nghiên cứu
Cách tiếp cận: ứng dụng được xây dựng dựa theo mô hình webservice trên nền tảng Java và ứng dụng ARFurniture được xây dựng dựa theo công nghệ Unity
Em đã sử dụng các phương pháp nghiên cứu:
- Phương pháp đọc tài liệu
- Phương pháp phân tích các ứng dụng TMĐT hiện có
- Phương pháp thực nghiệm
Trang 18Qua khảo sát tìm hiểu, các website/ ứng dụng TMĐT hiện nay nói chung và ứng dụng Furniture Store nói riêng, em nhận thấy các ứng dụng đều có mô hình xử lý hàng hóa như sau:
- Bán hàng:
+ Khách hàng đặt nội thất trên ứng dụng Furniture Store
+ Khách hàng có thể tới phần đặt nội thất này qua ứng dụng ARFurniture + Hệ thống chuyển đơn nội thất về Webservice để nhân viên xử lý
- Đóng gói:
+ Nhân viên lấy nội thất trong kho theo đơn hàng và đóng gói
+ Nhân viên cập nhật lại số lượng nội thất trong kho
Trang 19+ Xử lý hàng hóa không có người nhận
+ Xử lý hàng hóa bị khách hàng trả lại
Em nhận thấy ứng dụng ARFuniture có mô hình thu hút khách hàng như sau:
- Sư dụng phần mềm:
+ Khách hàng chọn lựa sản phẩm yêu thích muốn mua
+ Khách hàng thử sản phẩm trên thế giới thực qua AR camera
+ Khách hàng thấy thích thú và muốn mua sản phẩm
Sau khi xác định đề tài và nghiên cứu, tìm hiểu thực tế, em đã xây dựng ý tưởng thiết
kế ứng dụng thương mại điện tử cần đạt được những mục tiêu sau:
5.1 Đối với khách hàng và người quản trị
Khách hàng xem lựa chọn sản phẩm và tiến hành mua sắm, đăng nhập khách hàng
và quyết định có sử dụng ứng dụng hay không
Khách hàng có thể tìm hiểu những thông tin về sản phẩm, giá cả và đánh giá sản phẩm
Nếu bạn là người quản trị bạn có thể thao tác trên cơ sở dữ liệu, đăng ký người quản trị mới, cập nhật thông tin sản phẩm, cập nhật tin tức, thông tin tư vấn,…
Trang 20Khách hàng có thể xem các thông tin về số khách hàng, lựa chọn các sản phẩm vào giỏ hàng sau khi xem sản phẩm
Xử lý, chuẩn hóa dữ liệu nhập vào bởi những người truy cập ứng dụng và ban quản trị khi cập nhật thông tin
Xây dựng thành công hệ thống gợi ý sản phẩm cho hiệu năng cao
Hệ thống có khả năng xây dựng và phát triển nhanh chóng
Hệ thống tối ưu hóa lợi nhuận cho nhà cung cấp sản phẩm uy tín, chất lượng Phần mềm ARFuniture thân thiện với người dùng và cung cấp trải nghiệm tối ưu
để khách hàng cảm thấy thích thú khi mua sản phẩm
Phần mềm ARFurniture áp dụng công nghệ AR mới nhất để cung cấp người dùng trải nghiệm tối ưu
Trang 21Kế hoạch thực hiện: (Mô tả kế hoạch làm việc và phân chia công việc các thành viên tham
+ Sprint 1: tìm hiểu về platform Java, ReactJS, Unity, Arcore, khảo sát nghiệp vụ, quy trình xử lý hàng hóa của các ứng dụng, website tương
Sprint Nguyễn Quốc Nam Sang
Trang 221
(01/03/2020 –
21/03/2020)
Tìm hiểu về platform Java, ReactJS, Unity, Arcore, khảo sát nghiệp
vụ, quy trình xử lý hàng hóa của các ứng dụng, website tương tự hiện có: Tiki, Shopee, IKEA
+ Sprint 5: Tìm hiểu về AR và các nguyên lý thiết kế AR Thực hiện test và kiểm tra tính thực dụng của AR, áp dụng AR vào phần mềm ARFurniture và tiến hành kết hợp
+ Sprint 6: Áp dụng thành công và tiến hành Deploy, kiểm thử và bảo trì, thu thập thông tin từ người dùng thử
Trang 23Sprint Nguyễn Quốc Nam Sang
Trang 24MỤC LỤC
Chương 1 Giới thiệu đề tài 311.1 Mục tiêu đề tài: 311.2 Lí do chọn đề tài: 321.3 Tổng quan các vấn đề chính 33Chương 2 Các kiến thức/công nghệ nền tảng 342.1 ARcore Introduction 342.2 ARcore 342.3 Unity 352.4 ReactJs 362.5 Mobx 382.6 Java Jax-rs 382.7 Amazon Elastic cloud compute 392.8 Amazon Relational Database Service 40Chương 3 Xây dựng ứng dụng 413.1 Tổng quan khảo sát các ứng dụng liên quan 413.1.1 Khảo sát AppStore: 413.1.2 Khảo sát các cửa hàng online như Shoppee, Tiki,… 413.2 Phân tích, thiết kế, cài đặt phần mềm 41
Trang 253.2.1 Yêu cầu chức năng 413.2.2 Yêu cầu phi chức năng 473.2.3 Yêu cầu giao diện 483.3 Đặc tả yêu cầu phần mềm 493.3.1 Các bên liên quan – Stakeholders 493.3.2 Các actors và mục tiêu 503.3.3 Các usecase 513.3.4 Sơ đồ Use Case 533.3.5 Đặc tả Use Cases 553.3.6 Sơ đồ Sequence 733.3.7 Sơ đồ Activity 843.4 Thiết kế giao diện 893.4.1 Sơ đồ màn hình liên kết 893.4.2 Danh sách màn hình 913.4.3 Hình ảnh mỗi màn hình 96Chương 4 Thiết kế Kiểm thử 1224.1 Môi trường kiểm thử 1224.2 Kết quả thử nghiệm 1224.3 Kết quả sản phẩm: 122Chương 5 Kết luận và hướng phát triển 1235.1 Kết quả đạt được 1235.1.1 Lý thuyết 1235.1.2 Công nghệ 123
Trang 265.1.3 Ứng dụng FurnitureStore bán hàng online 1255.1.4 Ứng dụng FurnitureStore AR 1265.2 Hạn chế 1275.3 Hướng phát triển 127Tài liệu tham khảo 129
Trang 27DANH MỤC TỪ VIẾT TẮT
TỪ VIẾT TẮT TỪ ĐẦY ĐỦ ĐỊNH NGHĨA TIẾNG VIỆT
AR Augmented reality Thực tế tăng cường
SDK Software Development Kit Bộ phát triển phần mềm
NDK Native Development Kit Bộ phát triển Native
3D Three Dimensional 3 chiều
API Application Programming
Interface Giao diện lập trình ứng dụng
Trang 28DANH MỤC BẢNG BIỂU
Bảng 3.1 Bảng yêu cầu chức năng 47 Bảng 3.2 Bảng yêu cầu phi chức năng 47 Bảng 3.3 Bảng yêu cầu giao diện 49 Bảng 3.4 Bảng các actors và mục tiêu 51 Bảng 3.5 Đặc tả use case “cấp quyền camera” 56 Bảng 3.6 Đặc tả use case “tìm kiếm mặt phẳng” 57 Bảng 3.7 Đặc tả use case “thay đổi danh mục nội thất” 58 Bảng 3.8 Đặc tả use case “Chọn nội thất” 59 Bảng 3.9 Đặc tả use case “Xóa nội thất đã chọn” 60 Bảng 3.10 Đặc tả use case “Chụp màn hình sau khi thiết kế” 61 Bảng 3.11 Đặc tả use case “Truy cập trang web để lựa và mua sản phẩm” 62 Bảng 3.12 Đặc tả use case “Tìm kiếm trên trang web sản phẩm mình muốn” 63 Bảng 3.13 Đặc tả use case “Thêm sản phẩm vào giỏ hàng” 64 Bảng 3.14 Đặc tả use case “Xem và theo dõi đơn hàng” 65 Bảng 3.15 Đặc tả use case “Chọn hình thức thanh toán” 66 Bảng 3.16 Đặc tả use case “Quản lí sản phẩm” 67 Bảng 3.17 Đặc tả use case “Quản lí đơn hàng” 69 Bảng 3.18 Đặc tả use case “Quản lí nhập hàng” 70 Bảng 3.19 Đặc tả use case “Thống kê doanh thu” 72 Bảng 3.20 Đặc tả use case “Phân quyền hệ thống” 73
Trang 29Bảng 3.21 Bảng danh sách màn hình FurnitureStore – khách hàng 93 Bảng 3.22 Bảng danh sách màn hình FurnitureStore – Quản lý 95 Bảng 3.23 Bảng danh sách màn hình ARFurniture 96
DANH MỤC HÌNH ẢNH
Hình 3.1 Sơ đồ usecase khách hàng sử dụng website và phần mềm AR 53 Hình 3.2 Sơ đồ usecase quản lý sử dụng chức năng quản lý website 54 Hình 3.3 Sơ đồ Sequence cho UC-2 – Tìm kiếm mặt phẳng 74 Hình 3.4 Sơ đồ Sequence cho UC-3 – Thay đổi danh mục 75 Hình 3.5 Sơ đồ Sequence cho UC-5 – Xóa nội thất đã đặt 76 Hình 3.6 Sơ đồ Sequence cho UC-6 – Chụp màn hình 77 Hình 3.7 Sơ đồ Sequence cho UC-7 – Truy cập trang web để lựa và mua sản phẩm 78 Hình 3.8 Sơ đồ Sequence cho UC-8 – Tìm kiếm sản phẩm mình muốn 79 Hình 3.9 Sơ đồ Sequence cho UC-9 – Thêm sản phẩm vào giỏ hàng 79 Hình 3.10 Sơ đồ Sequence cho UC-10 – Xem và theo dõi đơn hàng 80 Hình 3.11 Sơ đồ Sequence cho UC-13– Đặt hàng và thanh toán 81 Hình 3.12 Sơ đồ Sequence cho UC-15 – Quản lí đơn hàng 82 Hình 3.13 Sơ đồ Sequence cho UC-18 – Phân quyền hệ thống 83 Hình 3.14 Sơ đồ Activity cho UC-2 – Tìm kiếm mặt phẳng 84 Hình 3.15 Sơ đồ Activity cho UC-3 – Thay đổi danh mục 85
Trang 30Hình 3.16 Sơ đồ Activity cho UC-1 – Chọn nội thất 86 Hình 3.17 Sơ đồ Activity cho UC-5 – Xóa nột thất đã đặt 87 Hình 3.18 Sơ đồ Activity cho UC-6 – Chụp màn hình 88 Hình 3.19 Sơ đồ liên kết FurnitureStore khách hàng 89 Hình 3.20 Sơ đồ liên kết FurnitureStore – Quản lý 91 Hình 3.21 Sơ đồ liên kết ARFurniture 91 Hình 3.22 Màn hình trang chủ 96 Hình 3.23 Màn hình đăng nhập 97 Hình 3.24 Màn hình đăng ký 97 Hình 3.25 Màn hình chi tiết sản phẩm 98 Hình 3.26 Màn hình giỏ hàng 99 Hình 3.27 Màn hình quản lý đơn hàng 100 Hình 3.28 Màn hình thanh toán đơn hàng 101 Hình 3.29 Màn hình thanh toán bằng Visa 102 Hình 3.30 Màn hình chi tiết đơn hàng 102 Hình 3.31 Màn hình trang chủ trước khi đăng nhập 103 Hình 3.32 Màn hình trang chủ sau khi đăng nhập 103 Hình 3.33 Màn hình đăng nhập 104 Hình 3.34 Màn hình quản lý sản phẩm 104 Hình 3.35 Màn hình chi tiết sản phẩm 105 Hình 3.36 Màn hình sửa sản phẩm 106
Trang 31Hình 3.37 Màn hình thêm sản phẩm 107 Hình 3.38 Màn hình quản lý đơn hàng 108 Hình 3.39 Màn hình chi tiết đơn hàng 109 Hình 3.40 Màn hình sửa đơn hàng 110 Hình 3.41 Màn hình thêm đơn hàng 111 Hình 3.42 Màn hình quản lý nhập hàng 112 Hình 3.43 Màn hình chi tiết đơn nhập hàng 112 Hình 3.44 Màn hình sửa đơn nhập hàng 113 Hình 3.45 Màn hình thêm đơn nhập hàng 114 Hình 3.46 Màn hình chọn khung thời gian thống kê doanh thu 115 Hình 3.47 Biểu đồ thống kê doanh thu của một món đồ trên tổng 115 Hình 3.48 Biểu đồ thống kê chi phí 116 Hình 3.49 Màn hình chọn khung thời gian thống kê lợi nhuận 116 Hình 3.50 Biểu đồ thống kê lợi nhuận 117 Hình 3.51 Màn hình phân quyền tài khoản 117 Hình 3.52 Màn hình trang chính chưa đăng nhập 118 Hình 3.53 Màn hình trang chính sau khi đăng nhập 118 Hình 3.54 Màn hình đăng nhập 119 Hình 3.55 Màn hình đăng ký 120 Hình 3.56 Màn hình danh mục khác 120 Hình 3.57 Màn hình giỏ hàng 121
Trang 32CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
Tên đề tài: Tìm hiểu AR và xây dựng ứng dụng website bán đồ nội thất
1.1 Mục tiêu đề tài:
Công việc kinh doanh buôn bán đã xuất hiện từ rất lâu, trải qua mỗi giai đoạn lịch
sử nó mang một hình thức đặc thù riêng Trước kia, khi các công cụ hỗ trợ công việc mua bán chưa phát triển mạnh, thì người kinh doanh mua bán chỉ diễn ra dưới hình thức mua bán trực tiếp Từ khi khoa học công nghệ phát triển, nó đã tạo ra phát triển các loại hình thức mua bán mới, điển hình là mua bán trực tuyến Hình thức mua bán trực tuyến
hỗ trợ đắc lực cho người kinh doanh tiếp xúc với được nhiều khách hàng, còn khách hàng thì công việc mua bán được diễn ra nhanh chóng, thuận lợi, tiết kiệm được thời
gian,…
Hiện nay, Thương Mại Điện Tử (TMĐT) đang được nhiều quốc gia quan tâm, coi
là một trong những động lực phát triển chủ yếu của nền kinh tế và dần trở thành xu hướng tất yếu trong mùa dịch toàn cầu COVID-19 đang diễn ra TMĐT đem lại những lợi ích tiềm tàng, giúp doanh nghiệp thu được thông tin phong phú về thị trường và đối tác, giảm chi phí tiếp thị và giao dịch, tạo dựng và củng cố quan hệ bạn hàng Thế nhưng thị trường thương mại điện tử hiện nay chỉ giới hạn ở những món đồ nhỏ, món đồ dễ lắp đặt
và không có giá trị quá lớn khi người dùng phổ thông muốn mua bán online Với công nghệ AR bọn em muốn mở rộng thị trường đến những món đồ mà bình thường không ai nghĩ tới sẽ mua bán qua internet: đồ nội thất, trang trí nhà, phòng ốc
Việc mua hàng qua mạng chỉ với thủ tục đăng ký mua sắm đơn giản nhưng đem lại nhiều lợi ích: tiết kiệm và chủ động về thời gian, tránh những nơi đông người và tránh khỏi những phiền phức khó chịu Vậy nên việc mua bán hàng qua mạng đang rất được mọi người quan tâm và thị trường mua bán đồ nội thất online cũng chưa được khai thác nhiều nên rất có tiềm năng để phát triển, công nghệ AR sẽ là đòn bẩy thúc đẩy khả năng
Trang 33khai thác thị trường này Trên cơ sở các kiến thức được học trong nhà trường và quá trình tìm hiểu các website trong thực tế, em đã quyết định chọn đề tài “Tìm hiểu AR và xây dựng ứng dụng bán đồ nội thất online”
Các ưu điểm mà luận văn tốt nghiệp hướng tới đạt được:
- Phục vụ tốt hơn nhu cầu của khách hàng và quản lý của cửa hàng trong hoạt động kinh doanh
- Khách hàng chỉ cần các thao tác đơn giản trên điện thoại di động là có thể đặt hàng được ngay
- Khách hàng có thể xem trước sản phẩm mình chọn sẽ trông ra sao trong nhà, phòng mình từ đó tăng khả năng quyết định đặt mua sản phẩm
Mục đích của đề tài là tạo ra một sản phẩm giúp thương mại hóa thị trường bán
đồ nội thất trên hệ thống internet và android, giúp thúc đẩy số hóa công việc buôn bán nội thất, đồ trang trí hay những món đồ to lớn khiến người mua đắn đo khi mua trên sàn thương mại điện tử hiện có
Trang 34Với phần mềm thiết kế nội thất bằng AR của em sẽ giúp cho các công ty design hoặc các cửa hàng bán hàng nội thất áp dụng công nghệ để triển khai những sản phẩm của mình cho khách hàng ngay tại nhà\phòng của họ chỉ bằng các thiết bị Mobile có tích hợp công nghệ AR trong camera
Sau khi thiết kế hoàn chỉnh người dùng có thể chọn những món đồ thêm vào giỏ hàng(sau khi đã đăng nhập) và tiến hành mua đồ nội thất tại website bán hàng nội thất
1.3 Tổng quan các vấn đề chính
Bài toán: Sử dụng công nghệ AR để thiết kế một phần mềm có tính ứng dụng
trong cuộc sống hoặc cho xã hội, kết hợp với phần mềm bán hàng online để kinh doanh thương mại sản phẩm nội thất
Giới hạn/phạm vi: Những quy trình ứng dụng, nghiệp vụ của phần mềm được
tìm hiểu từ những phần mềm trên thị trường và tự suy diễn ra với tư cách là một người dùng sản phẩm
Các nội dung nghiên cứu/thực hiện: Nghiên cứu các quy trình nghiệp vụ và áp
dụng công nghệ AR và các công nghệ liên quan khác để triển khai được một phần mềm hoàn chỉnh, các nghiệp vụ, quy trình của một website bán hàng online cụ thể là cửa hàng bán đồ nội thất online
Kết quả hướng tới: Một phần mềm AR có giá trị sử dụng và một website bán
nội thất liên kết được với phần mềm AR
Trang 35CHƯƠNG 2 CÁC KIẾN THỨC/CÔNG NGHỆ NỀN TẢNG
2.1 ARcore Introduction
ARcore là một thư viện open source của google nhằm giúp cho các developer có thể triển khai công nghệ AR vào ứng dụng của mình mà không phải nghiên cứu khoa học và các học thuật liên quan khác Thư viên này giúp các developer có thể tìm hiểu hơn về các nguyên lý thiết kế AR và các hướng liên quan đến AR Khi sử dụng thư viện thì bắt buộc phải xài các framework như UE hoặc Unity, bạn có thể tùy biến thư viện để
sử dụng trên framework của mình nhưng sẽ phải tự tìm hiểu từ đầu những nguyên lý của
AR để triển khai trên engine hoặc framework của bản thân
2.2 ARcore
ARcore là một thư viện giúp các Developer tích hợp AR vô phần mềm của mình
Vì nó là thư viện open source nên sẽ không có các chức năng cụ thể mà chỉ có các chức năng đa dụng để có thể triển khai AR trên các nền tảng khác nhau
Các tính năng hiện tại mà ARcore cung cấp cho developer:
• Anchor: Khi ARcore update môi trường xung quanh thì những object sẽ có hiệu ứng trôi đi và anchor giúp giữ object tại chỗ trong vị trí tương đối với thế giới hiện tại Chúng ta dùng anchor để đảm bảo trải nghiệm cho người dùng và tính chân thật của phần mềm của chúng ta
• Camera Config: hỗ trợ Developer chỉnh sửa camera, cung cấp các thông tin như CPU và GPU Lớp này giúp Developer điều chỉnh khả năng nhận biết chiều sâu của camera, FPS của camera,…
• Config: cho Developer khả năng chỉnh lại các hiệu năng khác nhau của ARcore như PlaneFindingMode(phương pháp tìm kiếm mặt
phẳng),UpdateMode(chỉnh sửa hành vi của Session.Update()),…
Trang 36• Plane:Lớp mặt phẳng do ARcore tạo ra để Developer sử dụng định nghĩa mặt phẳng ngoài đời thực qua Camera [1]
2.3 Unity
Unity là một “cross- flatform game engine” tạm hiểu là công cụ phát triển game
đa nền tảng được phát triển bởi Unity Technologies Game engine này được sử dụng để phát trển game trên PC, consoles, thiết bị di động và trên websites
Chức năng cốt lõi đa dạng bao gồm: cung cấp công cụ dựng hình (kết xuất đồ họa) cho các hình ảnh 2D hoặc 3D, công cụ vật lý (tính toán và phát hiện va chạm), âm thanh,
mã nguồn, hình ảnh động, 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 Nhờ có các engine mà công việc làm game trở nên ít tốn kém và đơn giản hơn
Hỗ trợ đa nền tảng: Một trong các thế mạnh của Unity3D chính là khả năng hỗ trợ gần như toàn bộ các nền tảng hiện có bao gồm: PlayStation 3, Xbox 360, Wii U, iOS, Android, Windows, Blackberry 10, OS X, Linux, trình duyệt Web và cả Flash Nói cách khác, chỉ với một gói engine, các studio có thể làm game cho bất kỳ hệ điều hành nào và
dễ dàng convert chúng sang những hệ điều hành khác nhau Đồng thời, đây cũng là giải pháp cho các game online đa nền tảng – có thể chơi đồng thời trên nhiều hệ điều hành, phần cứng khác nhau như Web, PC, Mobile, Tablet…
Dễ sử dụng: Unity3D được built trong một môi trường phát triển tích hợp, cung cấp một Phần mềm toàn diện cho các lập trình viên, từ soạn thảo mã nguồn, xây dựng công cụ tự động hóa đến trình sửa lỗi Do được hướng đến đồng thời cả lập trình viên không chuyên và studio chuyên nghiệp, nên Unity3D khá dễ sử dụng Hơn nữa, đây là một trong những engine phổ biến nhất trên thế giới, người dùng có thể dễ dàng tìm kiếm kinh nghiệm sử dụng của “tiền bối” trên các forum công nghệ
Trang 37Tính kinh tế cao: Unity Technologies hiện cung cấp bản miễn phí engine Unity3D cho người dùng cá nhân và các doanh nghiệp có doanh thu dưới 100.000 USD/năm Với bản Pro, người dùng phải trả 1.500 USD/năm – một con số rất khiêm tốn so với những
gì engine này mang lại [2]
2.4 ReactJs
React.js là một thư viện Javascript đang nổi lên trong những năm gần đây với xu hướng Single Page Application Trong khi những framework khác cố gắng hướng đến một mô hình MVC hoàn thiện thì React nổi bật với sự đơn giản và dễ dàng phối hợp với những thư viện Javascript khác Nếu như AngularJS là một Framework cho phép nhúng code javasscript trong code html thông qua các attribute như ng-model, ng-repeat thì với react là một library cho phép nhúng code html trong code javascript nhờ vào JSX, bạn có thể dễ dàng lồng các đoạn HTML vào trong JS Tích hợp giữa javascript và HTML vào trong JSX làm cho các component dễ hiểu hơn
Một trong những điểm hấp dẫn của React là thư viện này không chỉ hoạt động trên phía client, mà còn được render trên server và có thể kết nối với nhau React so sánh
sự thay đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít thay đổi nhất trên DOM Trươc khi đến cài đặt và cấu hình, chúng ta sẽ đi đến một số khái niệm
cơ bản [3]:
Virtual DOM: Công nghệ DOM ảo giúp tăng hiệu năng cho ứng dụng Việc chỉ node gốc mới có trạng thái và khi nó thay đổi sẽ tái cấu trúc lại toàn bộ, đồng nghĩa với việc DOM tree cũng sẽ phải thay đổi một phần, điều này sẽ ảnh hưởng đến tốc độ xử lý React JS sử dụng Virtual DOM (DOM ảo) để cải thiện vấn đề này.Virtual DOM là một object Javascript, mỗi object chứa đầy đủ thông tin cần thiết để tạo ra một DOM, khi dữ liệu thay đổi nó sẽ tính toán sự thay đổi giữa object và tree thật, điều này sẽ giúp tối ưu hoá việc re-render DOM tree thật React sử dụng cơ chế one-way data binding – luồng
Trang 38dữ liệu 1 chiều Dữ liệu được truyền từ parent đến child thông qua props Luồng dữ liệu đơn giản giúp chúng ta dễ dàng kiểm soát cũng như sửa lỗi Với các đặc điểm ở trên, React dùng để xây dựng các ứng dụng lớn mà dữ liệu của chúng thay đổi liên tục theo thời gian Dữ liệu thay đổi thì hầu hết kèm theo sự thay đổi về giao diện Ví dụ như Facebook: trên Newsfeed của bạn cùng lúc sẽ có các status khác nhau và mỗi status lại
có số like, share, comment liên tục thay đổi Khi đó React sẽ rất hữu ích để sử dụng
JSX: JSX là một dạng ngôn ngữ cho phép viết các mã HTML trong Javascript Đặc điểm: Faster: Nhanh hơn JSX thực hiện tối ưu hóa trong khi biên dịch sang mã Javacsript Các mã này cho thời gian thực hiện nhanh hơn nhiều so với một mã tương đương viết trực tiếp bằng Javascript Safer: an toàn hơn Ngược với Javascript, JSX là kiểu statically-typed, nghĩa là nó được biên dịch trước khi chạy, giống như Java, C++
Vì thế các lỗi sẽ được phát hiện ngay trong quá trình biên dịch Ngoài ra, nó cũng cung cấp tính năng gỡ lỗi khi biên dịch rất tốt Easier: Dễ dàng hơn JSX kế thừa dựa trên Javascript, vì vậy rất dễ dàng để cho các lập trình viên Javascripts có thể sử dụng
Components: React được xây dựng xung quanh các component, chứ không dùng template như các framework khác Trong React, chúng ta xây dựng trang web sử dụng những thành phần (component) nhỏ Chúng ta có thể tái sử dụng một component ở nhiều nơi, với các trạng thái hoặc các thuộc tính khác nhau, trong một component lại có thể chứa thành phần khác Mỗi component trong React có một trạng thái riêng, có thể thay đổi, và React sẽ thực hiện cập nhật component dựa trên những thay đổi của trạng thái Mọi thứ React đều là component Chúng giúp bảo trì mã code khi làm việc với các dự
án lớn Một react component đơn giản chỉ cần một method render Có rất nhiều methods khả dụng khác, nhưng render là method chủ đạo
Props và State: Props: giúp các component tương tác với nhau, component nhận input gọi là props, và trả thuộc tính mô tả những gì component con sẽ render Prop là bất
Trang 39biến State: thể hiện trạng thái của ứng dụng, khi state thay đồi thì component đồng thời render lại để cập nhật UI
Phiên bản ReactJS trong khóa luận này sẽ là phiên bản React sử dụng ngôn ngữ typescript được phát triển và publish trên github [4]
2.5 Mobx
MobX rất đơn giản, có thể mở rộng (scalable) và là một giải pháp để quản lý trạng thái (state management) Hướng dẫn sau sẽ giúp bạn hiểu khái niệm cơ bản của MobX trong mười phút MobX là một thư viện độc lập, nhưng hầu hết mọi người sử dụng nó
của mỗi ứng dụng và ở đây không có con đường nào tạo ra nhiều lỗi, không thể quản lý ứng dụng nhanh hơn việc tạo ra một trạng thái không nhất quán (inconsistent state) hoặc một state không đồng bộ với các biến cục bộ xung quanh Do đó có nhiều giải pháp quản
lý state bằng cách cố gắng hạn chế các cách mà bạn có thể sửa đổi state, ví dụ như làm state bất biến (state immutable) Nhưng các cách này lại phát sinh vấn đề mới, dữ liệu cần được chuẩn hóa, tính toàn vẹn tham chiếu có thể không còn được đảm bảo và nó không thể sử dụng các khái niệm mạnh mẽ như prototype
MobX có thể làm state management trở nên đơn giản bởi giải quyết vấn đề cốt lõi: không thể ạo ra trạng thái không nhất quán Để làm được điều này thật đơn giản: đảm bảo mọi thứ có thể được dẫn xuất từ trạng thái ứng dụng một cách tự động [5]
2.6 Java Jax-rs
Java Api cho Restful web services(JAX-RS) là một API có mục đích giúp đỡ, tạo giải pháp cho việc phát triển Restful web services trong Java Động lực tạo nên API này đến từ việc những Java Web API hiện có thường gặp các vấn đề sau:
Trang 40• Cấp rất thấp, bắt buộc developer phải hiện thực nhiều việc dễ gây lỗi và mang tính lặp lại như URL pasting, thương lượng nội dung,…
• Cấp cao và dễ hiểu, làm cho việc xây dựng web services theo một pattern nào đó dễ dàng nhưng thiếu khả năng linh hoạt để xử lý những trường hợp thông dụng khác
JAX-RS là một trong những Java API thuộc thế hệ mới nhất sử dụng Java annotation(phụ chú) để giảm thiểu những lớp cơ bản cần thiết, hiện thực lại những interface cần thiết và những file thiết lập phức tạp Phụ chú được dùng như một công cụ
để điều hướng request từ client đến đúng lớp Java và phương thức lớp Java đó và gắn request data vào những parameter đã định nghĩa ở trong phương thức đó JAX-RS cũng cung cấp những lớp và interface truyền thống để truy cập động đến request data và để tùy biến responses [6]
2.7 Amazon Elastic cloud compute
Amazon Elastic cloud compute(EC2) là một công cụ thuộc Amazon web service cloud console(AWS cloud console) giúp cho người dùng AWS cloud console có khả năng tạo một máy ảo trên hệ thống cloud của Amazon tại vị trí cụ thể trong hệ thống cloud server của AWS
Người dùng có thể sử dụng Amazon machine images(AMI) để tạo thẳng ngay môi trường máy ảo mà mình mong muốn hoặc tự tạo kernel Linux rồi thiết lập mội trường hệ điều hành mình mong muốn trên kernel Linux đó
Người dùng có thể tạo, triển khai, dừng hoặc xóa máy ảo trên Amazon EC2 tạo
sự tiện lợi trong việc triển khai, bảo trì hoặc nâng cấp server