Liệu có thể tạo ra một ứng dụng đơn giản được dùng trên điện thoại diđộng nhưng lại cung cấp một nền tảng mô phỏng 3D chân thực, giúp kiến trúc sư vànhà thiết kế trực quan hóa ý tưởng củ
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIÊN THONG
KHOA CÔNG NGHỆ THÔNG TIN
Nghiên cứu xây dựng ứng dụng mô phỏng nhà
Giảng viên hướng dẫn: TS Đỗ Thị Liên Sinh viên thực hiện: Trần Thành Tài
Mã sinh viên: BI9DCCN565
Lớp: DI9CNPMI
Niên khóa: 2019-2024
Hệ đào tạo: Đại học chính quy
HÀ NỘI — 2023
Trang 2NHAN XÉT CUA GIẢNG VIÊN HƯỚNG DAN
Điểm: (Bằng chữ )
Ngày tháng năm 20
Giáo viên hướng dân
Trang 3NHẬN XÉT CUA GIANG VIÊN PHAN BIEN
Điểm: (Bang chữ )
Ngày tháng năm 20
Giáo viên phản biện
Trang 4Đồ án tốt nghiệp đại học
LỜI CẢM ƠNĐầu tiên, em xin gửi lời cảm ơn đến các thây cô trong Học viện công nghệ
bưu chính viễn thông nói chung và các thay cô trong khoa Công nghệ thông tin nói riêng Cảm ơn các thây cô đã dạy cho em rất nhiều kiến thức và kinh nghiệm trong
suốt 5 năm đại học, giúp em có được cơ sở ly thuyết vững vàng và tạo một môi
trường học tập chuyên nghiệp dé em có thé phát triển bản thân và vững bước trên
con đường phát triên sự nghiệp.
Em xin gửi lời cảm ơn chân thành đến cô TS Đỗ Thị Liên — Giảng viên bộ
mon Công nghệ phân mém đã tận tình hướng dan cũng như tạo điêu kiện giúp em
hoàn thành đồ án này, em xin chúc cô và gia đình thật nhiêu sức khỏe và thành CÔNG.
Cuối cùng, em xin chân thành cảm ơn gia đình và bạn bè, đã luôn tạo diéu
kiện, quan tâm, giúp đỡ, động viên em trong suôt quá trình học tập va hoàn thành khóa luận tot nghiệp.
Vì thời gian có hạn, trình độ hiểu biết của bản thân còn nhiều hạn chế Cho
nên trong đồ án này không tránh khỏi những thiếu sót, em rất mong nhận được sự đóng góp ý kiến của tat cả các thay cô giáo cũng như các bạn bè dé đô án em được hoàn thiện hơn nữa.
Em xin chân thành cảm ơn!
Trần Thanh Tài - BI9DCCN565
Trang 5THUẬT NGỮ VIET TÁTT - 2-2 SE+ESE£EE£EEEEEEE2EE 2121212111111 11x 1xe 11
PHAN MO ĐẦU - 5-5221 2S 2E 2212212211211211211211211211111211211211111 1121 xe 12CHUONG 1 TONG QUAN VE UNG DỤNG MO PHONG NHÀ 13
1.1 Xác định yêu cầu 5c SE E2 12112112112112112111 1111111 re 13
1.1.1 Mục đích hệ thống - 5-25 SE SE E2EEE12171211 2111111111 ye, 13
1.1.2 Khảo sát thị trường và các sản phẩm tương tự - 2 s5 s+: 13
1.1.3 Yêu cầu hoạt động của ứng dụng 2 +sccecscrxzxexererree 17
1.2 Thiết kế tương tác - 22522 E2E221217111212112111111111111 1x cce 18
1.3 Xác định phương pháp tiếp cận và giải quyết vấn đề 5- 5+: 19
1.3.1 Mô hình tổng quát hệ thống 2-52 +S2+E+E££E+E+EzEzEerxzxeree 191.3.2 Phương pháp xây dung phan mềm - ¿2 52 z+*+E+Ez£z£z+xz 201.4 Công nghệ triển khai hệ thống 2-2 2SE+E£EE+E£EE2E+EEEE2EeEEzEeErrkrree 20
1.4.1 Unity Engine -.c c1 vn ng vn kg 20
Trần Thanh Tai - BI9DCCN565
Trang 6Đồ án tốt nghiệp đại học
1.4.3 Shader Code LH TH TH TH HH kp 22
1.5 Kết luận chương 2:222+5E2E222E2EEE2E22122122121122121121 2 xe 23
CHUONG 2 CÔNG NGHỆ XÂY DUNG UNG DUNG MÔ PHONG NHÀ24
2.1 Hé thong Unity 3D ieee ceccccccccssssssesseessessessessssssessssussssssesseauesseesesseseeeees 24
2.1.1 Giới thiGU eee ccccccccssessessecssessessesssessessessussssssessssusssessesssssesseesesseess 24
2.1.2 Thành phan chinh cccccccccccccscesssssesesscssessessessessessessessssessscsesessesesees 24
2.2 Builder Pattern ccc cece ccccesscsccceesssccccesseeeccessssseeeseeseeeeesesssesssssssnaees 26
2.2.1 Vấn đề khởi tạo ham trong hệ thống lớn 2 2 2+s+z+zx+zx+s+ 262.2.2 Giới thiệu về Builder Pattern -¿-:- - sSx+E+EEE+E£EEEE+EvErxrrerssesee 282.2.3 Cấu trúc của Builder Patterth cccccccccccccscesesecesesesecesescesesescseseeceseeees 30
2.3 Kết luận chương 2 :- 2252 E2 E21121211111111121121121111 1111111 te 31CHƯƠNG3 PHAN TÍCH VÀ THIẾT KE HỆ THÓNG 33
3.1 Phân tích hệ thống 2 2S E2ESEEEEEEEEEE12115112112112112111E 111 xe 33
3.1.1 Biểu đồ Use Case và Scenario c.ccccccccssssssssessssssestsesesescscestevstseseeeeees 33
3.1.2 Danh sách Use Case va Scenario tương Ứng - +s-s++ssssssxsss 34
3.1.3 Biểu đồ lớp phân tích ¿5-52 S222 E2EEE12121E212111211 1111 xe, 48
3.2 Thiết kế hệ thống -:- 2 5ESE2EE2EE2E12E12112121711111211211211211 1.21 xe 51
3.2.1 Biểu đỗ tuần tet eccccccccccccccccssssssessessessessessessessessessssssessssesessesesisseeeeeees 51
3.2.2 Biểu đỗ lớp thiết kế - essecsesscssessessesesecsesssestsecsessseseeenees 59
3.3 Kết luận chương 3 cecccecccssesescsesssesessesessessesessessesesseseseesscstsasstsvsssesessesees 61
Trần Thanh Tai - BI9DCCN565
Trang 7Đồ án tốt nghiệp đại học
KET LUẬN VÀ HƯỚNG PHAT TRIỆN -° <5 5° se sess=sesesseses 63
1 _ Đánh giá kết quả của đồ án - -©2¿2+22S 2x2 EEE2E2E2122121 2122121 zxe 63
2 Phương hướng phát triỂn - - + seSeEEEEE2EE2E12E12E121121E 2121211 xeE 63
PHU LUC CÀI ĐẶT VÀ TRIEN KHAI 5-5-2 s s+ssss=sesssesss 64
I _ Thiết lập môi trường - ¿- ++++k‡EE£EEEEEEEEEE121121121121121E 21211 64
2 Cài đặt triển khai hệ thống ¿ ¿- + ©2¿22222E2E2EE212E 2122121 2EeErcxe2 643 Giao diện và hình ảnh sản phẩm - - 2c 2 E+EE£EE£EE2EE2EE2EzErrerkered 68
TÀI LIEU THAM KHẢO <2 s2 se s£Es£Ess£xseEseEsetxserserssrssrsere 76
Trần Thanh Tài - BI9DCCN565
Trang 8Đồ án tốt nghiệp đại học
DANH MỤC CÁC BANG
Bang 3.1 Kịch bản module tạo phòng TỚI - 5 25 32+ * +2 k+seeerersekee 34 Bang 3.2 Kịch ban module chỉnh sửa phòng - 5à Shin, 35
Bảng 3.3 Kịch bản module xem video hướng dẫn 2- 52 52+s+£+cz£ss+ 36
Bang 3.4 Kịch bản module thêm d6 vật - ¿2-52 5E E‡E‡ESEE2E2EeEeEerrkrvee 37
Bảng 3.5 Kịch ban module thay đổi chat liệu sàn - - 2-52 5s2cs2cs2cc+2 39Bảng 3.6 Kịch bản module ấn toàn bộ đồ vật i5: St ctct x2 EE2EEsxsxsxsez 41
Bang 3.7 Kich ban module tao chất liệu mới ¿- - + + ‡x+EeErxerererxerrrs 42Bảng 3.8 Kịch bản module thay đổi cài đặt ánh sáng -2- ¿5 255: 44Bang 3.9 Kịch ban module thay đổi chế độ góc nhìn - 2-5 + +c£zc5+: 46Bảng 3.10 Kịch bản module chỉnh sửa AG vật ác cv 12121 re 47
Trần Thanh Tài - BI9DCCN565
Trang 9Đồ án tốt nghiệp đại học
DANH MỤC CÁC HÌNH VE
Hình 1.1.Thống kê số lượng nhà ở những năm gan đây s2: 14Hình 1.2.Thống kê số lượng người dung smartphone qua các năm 15Hình 1.3 Mô hình thiết kế tương tác của hệ thống - - + z+s+x+xzcsez 18Hình 1.4.Mô hình tong quát của hệ thống - 2 ¿SE £E2E+EeEeErxrxez 19Hình 1.5 Phác thảo mô hình MVC cho hệ thống 2- 2 2522 2+2: 20Hình 1.6 Ví dụ về ShaderLab trong Unity - - 2-2 s+2++S++E++E+zEzEzEerxzxee 23Hình 2.1 Các Component chuyên dụng trong hệ thống - 5-2: 25Hình 2.2 Van đề trong lập trình với constructOr -¿ ¿+ =z+s+z++zz+xze: 27Hình 2.3 Phương án giải quyết trong van đề constructOr - 2: scscs+: 27Hình 2.4 Mô hình hệ thống nhà nhiều thành phần - 2 2 s2 22 z£z+522 28Hình 2.5 Cấu trúc hoàn chỉnh của Builder Pattern trong hệ thống nhà 31
Hình 3.1 Use Case tổng quát hệ thống 2-2 2 SSE2E#ESEE2EEEE2EEEEErEerkeg 33
Hình 3.2 Use Case module tạo phòng MỚII - 5 2c 3S 3+3 Evssseerrrrrevee 34
Hình 3.3 Use Case module xem video hướng dẫn - 2-5 2 s+s+=+s+sss+ 36
Hình 3.4 Use Case mudule thay đổi chất liệu sàn - 2-52 522cs+cz2cz+2 39Hình 3.5 Use Case module ân toàn bộ d6 vật - + xe +x+EeEeEerrerererx 40Hình 3.6 Use Case module tạo chất liệu mới -¿-¿2+s+x+E+E+EvEEEEE+E+EzEezrsez 42Hình 3.7 Use Case module thay đổi cài đặt ánh sáng - + czcse: 44
Hình 3.8 Use Case module thay đổi chế độ góc nhìn ¿5 5x5: 45Hình 3.9 Use Case module chỉnh sửa d6 vật -¿- 5xx EvEvEeEeEexererrrres 47
Hình 3.10 Biêu đồ lớp phân tích - 2:22 + x2E22E+2EEtEE2EE2Exerxzreerxerxee 50Hình 3.11 Biéu đồ tuần tự module xem danh sách loại phòng 51Hình 3.12 Biểu đồ tuần tự module thêm phòng mới - - 2 s2 2+ +2: 52Hình 3.13 Biéu đồ tuần tự module xem video hướng dẫn 5: 5+ 52
Trần Thanh Tài - BI9DCCN565
Trang 10Đồ án tốt nghiệp đại học
Hình 3.14 Biéu đồ tuần tự module thêm đồ vật - 2 2s t+x+EvEvEeEvrervsi 53Hình 3.15 Biéu đồ tuần tu module tạo chất liệu mới - - + + c+s+=+zexss+ 54Hình 3.16 Biéu đồ tuần tự module ân toàn bộ đồ vật ¿2+ se s22 55Hình 3.17 Biểu đồ tuần tự module hiền thị lưới -.¿-ccccccccscxerrreee 56Hình 3.18 Biéu đồ tuần tự module thay đổi cai đặt ánh sáng 57Hình 3.19 Biéu đồ tuần tự module thay đôi cài đặt góc nhìn 58Hình 3.20 Biéu đồ tuần tu module chỉnh sửa đồ vật ¿+ scz+x+x+xzzzs+2 59Hình 3.21 Biểu đồ lớp thiết kẾ - ¿S2 SE E21 12121815E111712151 11111 cxe 60Hình 3.22 Biểu đồ gói hệ thống 2-2 252222 EEEEEEEEEE71E21211221 2211 xe 61Hình 0.1 Giao diện trang chủ nIfy c2 Sc 3321111325 1E EESEkrrerrvee 65 Hình 0.2 Giao diện cai đặt Un1fy 2c 2211121123111 112111111 kg re 65 Hình 0.3 Giao diện chọn thư mục chứa EdItor 5555553 + +++++++++++++++>s+ 66
Hình 0.4 Giao diện cai đặt thành công - c2 222211 1*22 112Exxexzxes 66 Hình 0.5 Giao diện tao dự án Unity ccc cccccsccsccesecssecessecesecesseeeseesseeensees 67 Hình 0.6 Giao diện mở ứng dụng - - 3322133211131 1515EE1EEEekxrs 68 Hình 0.7 Giao diện horne c2 2 2211112222311 11 1131115515555 xx 69
Hình 0.8 Giao điện phòng mẫu -¿- 5 2 +E+S£S2SE+E£EEEE£EEEEEEEEEEEEErErrkrkrrres 70
Hình 0.9 Giao diện thiết kế c2cc22tttEth HH 71
Hình 0.10 Giao điện danh sách đồ Vate.c.c.ccccccccccccsesecesecsssescsesesececsesescscsesesvscseeees 72Hình 0.11 Giao diện chỉnh sửa đỗ vật ¿5c cv 73Hình 0.12 Giao điện xem chất liệu -. -55:22+tc tri 74Hình 0.13 Giao điện thêm chất liệu - ¿2-2-5 SE EESE£E+E‡E+EvEEEEEEEErEsEErrrrrsee 75
Trần Thanh Tài - BI9DCCN565
Trang 12Đồ án tốt nghiệp đại học
PHAN MỞ ĐẦU
Với sự tiến bộ nhanh chóng của công nghệ và sự phát triển đô thị, ngành xây
dựng và thiết kế nhà đang trở thành một lĩnh vực ngày càng quan trọng trong phát
triển đất nước Theo đó, gia tăng dân số và lượng nhà ở nhanh chóng khiến cho việc
quan lý và tối ưu hóa không gian trở thành một yếu tô thiết yếu trong việc xây dựng.
Vào những năm trước, kiến trúc sư chủ yếu sử dụng những phần mềm
chuyên dụng, xong lại gây khó khăn trong việc giao tiếp giữa người xây dựng và chủ nhà Trong khi người bình thường chỉ có thé dùng các ứng dụng mang tính chất giải trí hơn Liệu có thể tạo ra một ứng dụng đơn giản được dùng trên điện thoại diđộng nhưng lại cung cấp một nền tảng mô phỏng 3D chân thực, giúp kiến trúc sư vànhà thiết kế trực quan hóa ý tưởng của họ, đồng thời hỗ trợ chủ nhà cũng như nhà
thầu hiểu rõ về cau trúc và quy trình xây dựng?
Từ những vấn đề cấp thiết trên, em đã nảy ra ý tưởng “Xây dựng ứng dụng
nhà mô phỏng” và chọn nó làm đê tài cho đô án tôt nghiệp đại học.
Đồ án được cau trúc thành 3 chương gồm có những nội dung chính sau:
Chương 1: Tổng quan về ứng dụng mô phỏng nhà
Chương 2: Công nghệ xây dựng ứng dụng mô phỏng nhà.
Chương 3: Phân tích thiết kế hệ thống
Trần Thanh Tài - BI9DCCN565
Trang 13Đồ án tốt nghiệp đại học
CHUONG 1 TONG QUAN VE UNG DỤNG MÔ
PHONG NHA
Trong chương này, đồ án tập trung giới thiệu tong quan về lý do chọn đề tài,
đặt ra các vân đê mà hệ thông cân xử lý, từ đó đưa ra các phương pháp và công nghệ dùng đê triên khai hệ thông.
1.1 Xác định yêu cầu
1.1.1 Mục đích hệ thống
Cung cấp một ứng dụng trò chơi, cho phép người dùng sử dụng để xây dựng
và thiệt kê các phòng dê dàng thông qua giao diện đơn giản.
1.1.2 Khảo sát thị trường và các sản phẩm tương tự
Khảo sát thị trường
Theo số liệu thông kê về nhà ở năm 2023, Số ngôi nhà mới bắt đầu xây dựng
vào năm 2023 cao hơn 15,0% so với mức trung bình 120 tháng trước đó.[I]
e_ Trong 5 năm (2018 đến 2022), trung bình mỗi năm có 1,41 triệu đơn vi nhà ở
thuộc sở hữu tư nhân mới được khởi công.
e 1,67 triệu là số giấy phép nhà ở trung bình hàng năm được cấp phép trong 5
năm.
° Tổng số 1,60 triệu nhà ở mới thuộc sở hữu tư nhân bắt đầu được xây dựng vào
năm 2021, tăng 16,0% so với năm 2020.
e Tổng số giấy phép nha ở được cấp là 1,74 triệu vào năm 2021, tăng 18,1% so
với năm 2020
Trần Thanh Tài - BI9DCCN565
Trang 14Sep22 0(t22 Nov22 Dec22 Jan’23 Feb2š Mar2š Apr25 May'235 lun 25 Jul'23 Aug23 Sep 2š
Bra New Permits @ New Starts
iPropertyManagement.com data source: U.S Census Bureau
Hình 1.1.Thong kê số lượng nha ở những năm gân đây
Ngoài ra theo Statista [2], số lượng người dùng điện thoại di động trên thế giới
là là 6,567 tỷ người, chiếm 82,16 % dân số thé giới (khoảng 7,992 tỷ người) sở hữu
smartphone Con sô này tăng đáng kế so với năm 2016 khi chỉ có 3,668 tỷ người
dùng, chiếm 49,40 % dân số toàn cau.
Trần Thanh Tài - BI9DCCN565
Trang 15@ Additional information Show source @
Hình 1.2.Thống kê số lượng người dùng smartphone qua các năm
Từ các sô liệu phân tích trên, có thê thay nhu câu sử dụng điện thoại di động trên
thê giới là rât lớn, đông thời mỗi cá nhân đêu có mong muôn được tự mô phỏng
nên một ngôi nhà của riêng mình!
Khảo sát các sản phẩm tương tự:
Sau khi tham khảo 3 ứng dụng phố biến thuộc thé loại Simulator, em rút ra
được các ưu nhược diém như sau:
Ưu điểm Nhược điểm
Flight Simulatơ | Đồ họa và Realism: Microsoft e | Dung lượng ứng dụng quá nặng
Flight Simulator nôi tiêng với đô
(https:// hoa tuyét voi va su chan thuc
www.flightsimu | trong việc mô phỏng máy bay va
lator.com/) môi trường.
® | Sự Da Dạng của Máy Bay: Cung
cấp một loạt rộng lớn các loạimáy bay từ những chiếc nhẹ đến
máy bay thương mại vả quân sự.
Trần Thanh Tài - BI9DCCN565
Trang 16Đồ án tốt nghiệp đại học
Dữ Liệu Thực Tế: Sử dụng dữliệu thực tế dé tái tạo môi trường
và điều kiện thời tiết thực tế trên
Nôi tiêng với việc tap trung vàoe
mô phỏng cuộc sông hăng ngày
của nhân vật.
Cung câp nhiêu lựa chọn xây dựng nhà cửa với giao diện thân
thiện với người chơi.
Đa dạng về nội thất và trang trí
Hạn chê đôi với các dự án xây
Cung cấp trải nghiệm xây dựng
nhà cụ thê và chi tiết.
Thách thức người chơi với nhiệm vu sửa nhà dé ban lại với
giá cao hơn.
Chưa đủ độ chân thực và hơi đơn
giản so với thực tê
=> Từ các ưu điêm, nhược diém cua 3 ứng dụng em đã rút ra những yêu tô cân
phải có ở sản phâm của mình là:
e Giao diện thân thiện, dé sử dụng với người dùng.
Dữ liệu local, có thé dùng offline
Đa dạng đồ vật, chất lượng đồ vật
Dễ dàng tìm kiếm và điều hướng.
Trần Thanh Tài - BI9DCCN565
Trang 17Đồ án tốt nghiệp đại học
e Dung lượng ứng dụng nhẹ, phủ hợp với nhiều dong máy.
e Trải nghiệm chân thực với chất liệu thong dụng
1.1.3 Yêu cầu hoạt động của ứng dụng
e Người dùng truy cập ứng dụng trực tiếp thông qua thiết bi di dong
e Người dùng có thé xem các video hướng dẫn
e Người dùng có thé tạo một project mới
e Người dùng có thê truy cập và sửa đổi các project cũ
e Người dùng có thé xem các template được tạo sẵn
e Khi truy cập một project, người dùng có thể thêm, sửa, xoá các object trong
project đó
e Người dùng có thé thay đổi kích thước, chất liệu, các thuộc tinh của toàn bộ
object có trong project
Trần Thanh Tai - BI9DCCN565
Trang 18x z
AS
Đô an tot nghiệp đại hoc
1.2 Thiết kế tương tác
TRANG CHỦ DANH SÁCH LOẠI PHÒNG DANH BACH PHÒNG ĐÃ TAO
Doanh sich loại phông,
¬ Danh sách loại phòng Danh sách phẳng đã tạo
“hông 1 Phòng? eter 3
trông ngà | | Phàngan ° hora
DANH SACH DO VAT CHỈNH SỬA ĐỒ VAT
Hình 1.3 Mô hình thiết kế tương tác của hệ thong
Trần Thanh Tài - BI9DCCN565
Trang 19Scriptable Object Unity Asset
Texture JSON DATA
Sprite
Material
Thêm vào dữ liệu
Lấy ra dữ liệu
Hình 1.4.Mô hình tổng quát của hệ thống
Trần Thanh Tài - BI9DCCN565
Trang 20Đồ án tốt nghiệp đại học
1.3.2 Phương pháp xây dựng phần mềm
Mục tiêu của dự án là phát triển một hệ thống có khả năng tách biệt các
nhiệm vụ trong ứng dụng, giúp việc quản lý, mở rộng va bao trì dễ dàng hon Do
đó, ứng dụng sẽ được sử dụng phương pháp xây dựng phân mêm theo mô hình
Hình 1.5 Phác thảo mô hình MVC cho hệ thống
1.4 Công nghệ triển khai hệ thống
1.4.1 Unity Engine
Khai niém:
Unity là một nền tảng phát triển trò chơi đa năng được phát triển bởi Unity
Technologies và đã ra mắt lần đầu vào năm 2005 Nền tảng này được sử dụng rộng
rãi trong ngành công nghiệp phát triển trò chơi, đặc biệt là trên các nền tảng
Android và iOS.
Trong lĩnh vực trò choi, Unity là công cụ mạnh mẽ cho việc tạo ra cả trò chơi hai chiều (2D) và ba chiều (3D), cũng như mô phỏng các tương tác phức tạp Ngoài
ra, phần mềm này cũng được ưa chuộng và sử dụng rộng rãi trong các lĩnh vực khác
như điện ảnh, kiến trúc, công nghiệp ô tô, và xây dựng
Trần Thanh Tài - BI9DCCN565
Trang 21Đồ án tốt nghiệp đại học
Tinh năng cơ bản cua Unity:
@ Tạo giao diện UI của Game như tạo drop bar, textbox,
@ Hiền thị mô hình 3D, 2D — hệ thống vật lý 2D, 3D
@ Networking: Hỗ trợ tao game chơi nhiều người cùng lúc
@ Hỗ trợ nèn tảng đặc biệt mới: AR — Augmented reality (Thực tế tăng cường),
VR — Virtual reality (Thực tê ảo)
@ Hỗ trợ hiền thị chữ bằng font đặc biệt
@
Ưu điểm khi sử dung Unity:
Trên thị trường game quốc tế và Việt Nam, vẫn tồn tại nhiều game engine duoc
ưa chuộng bởi các nha phát triển, chăng hạn như Unreal, CryEngine, và nhiều
engine khác Mỗi engine có ưu điểm và hạn chế riêng biệt và vân được sử dụng
rộng rãi trong các studio phát triển game Riêng về khía cạnh tổng thé của khả nănglàm game, Huy đã đề cập đến ba lợi thế quan trọng của Unity như sau:
e Trình chỉnh sửa (Editor): Unity cung cấp một trình chính sửa cho phép nhà phát
triển sắp xếp các đối tượng trong trò chơi mà không cần phải viết mã Người
phát triên có thé dé dang kéo và thả, cũng như thay đổi vị trí của các đối tượng
trực tiếp trong trình chỉnh sửa.
e Da nên tang: Lợi ích thứ hai quan trọng đối với nhiều công ty và nhà phát triển
là tính đa nền tảng của Unity Bằng cách phát triển trò chơi có khả năng hoạt
động trên nhiều hệ điều hành quan trọng như máy tính (Mac, Windows, và
Linux), thiết bị di động (iOS, Android), hoặc trình duyệt web (WebGL), Unity
giúp tiết kiệm thời gian và nguồn lực cho doanh nghiệp.
e Miễn phí: Một ưu điểm cuối cùng mà Unity mang lại là tính miễn phí Điều này
thu hút nhiều nhà phát triển lựa chọn sử dụng engine này Tuy nhiên, đối với các
trò chơi được tạo ra miễn phí, buộc phải bao gồm biểu trưng Unity trong trò
chơi.
1.4.2 Scriptable Object
Xây dựng một hệ thống với lượng data lớn yêu cau việc quan ly dit liệu một
cách thuận tiện nhât cho việc truy xuât cũng như lưu trữ.
Trần Thanh Tài - BI9DCCN565
Trang 22Đồ án tốt nghiệp đại học
ScriptableObject là một lớp cơ bản trong Unity, cho phép lưu trữ dữ liệu không phụ thuộc vào các đối tượng trong Scene Điều này giúp tạo ra các tài
nguyên đữ liệu có thể tái sử dụng và đễ dàng quản lý.
Ưu điểm của Scriptable Object:
Tách rời dữ liệu từ Scene: ScriptableObject giúp tách rời dữ liệu từ Scene, cho phép tạo và chỉnh sửa dữ liệu mà không cần mở Scene Điều này tiện lợi khi cần
thay đôi giá trị, thử nghiệm và cập nhật dữ liệu mà không làm ảnh hưởng đến
cầu trúc của Scene
Tái sử dụng dé dang: Có thé tạo ra các ScriptableObject dé lưu trữ cấu hình, tai
nguyên, hoặc bat kỳ dit liệu nào cần được chia sẻ giữa nhiều đối tượng trong
game Điều này giúp giảm sự phụ thuộc và tăng khả năng tái sử dụng
Dễ dàng quản lý và mở rộng: ScriptableObject tạo ra một cách thuận tiện dé
quản ly đữ liệu Có thé tạo và tổ chức ScriptableObject trong thư mục Assets,
giúp dé dàng theo dõi và mở rộng hệ thống dữ liệu
Hỗ trợ Serialize: ScriptableObject được hỗ trợ trong quá trình serialize, điều này
có nghĩa là có thể lưu trữ và giữ nguyên dữ liệu của nó sau cả khi thoát và khởi
động lại ứng dụng.
Sử dụng trong Editor: ScriptableObject có thé được sử dung dé tạo các công cụ
và tùy chọn tùy chỉnh trong trình soạn thao cua Unity, giúp tối ưu hóa quá trìnhphát triển và làm cho các tác vụ lặp lại trở nên dễ dàng
Hiệu suất tốt: Sử dụng ScriptableObject giúp giảm bớt việc thực hiện
serialize/deserialize đối tượng trong Scene, giảm tải cho CPU và cải thiện hiệu
suất của ứng dụng
1.4.3 Shader Code
Shader code là một phan quan trọng trong lập trình đồ họa, được sử dụng dé
mô tả cách các đối tượng và hiệu ứng được vẽ và hiển thị trên màn hình Trong ngữ
cảnh của trò chơi và đồ họa máy tính, shader code thường được viết bằng ngôn ngữ lập trình shader như OpenGL Shading Language (GLSL), DirectX High-Level
Shading Language (HLSL), hoặc ShaderLab trong Unity.
Trần Thanh Tai - BI9DCCN565
Trang 23Hinh 1.6 Vi du vé ShaderLab trong Unity
Lợi ich của việc sử dung shader code bao gôm khả năng tôi ưu hóa hiệu suât,
tạo ra hiệu ứng đồ họa phức tạp, và kiêm soát mọi khía cạnh của việc hiển thị đối
tượng trên màn hình Shader code đóng vai trò quan trọng trong việc tạo ra trải
nghiệm đô họa động và hap dan trong trò chơi và ứng dụng đa phương tiện.
1.5 Kết luận chương
Như vậy, ở chương 1 đồ án đã giới thiệu tông quan về đề tài bao gồm nhữngnội dung sau:
Khảo sát về hiện trạng của ngành xây dựng vào công nghệ hiện nay
Xác định mục tiêu và mục tiêu nghiên cứu của đề tài
Xác định phương pháp dé thực hiện dé tai.
Giới thiệu về các công nghệ và công cụ được sử dung dé thực hiện đề tài.
Dựa vào bài toán đã được đặt ra ở chương này, chương tiếp theo đồ án sẽ thực
hiện xây dựng phân tích và thiết kế cho hệ thống
CHƯƠNG 2 CÔNG NGHỆ XÂY DỰNG ỨNG DỤNG
MÔ PHỎNG NHÀ
Trong chương này, ta tập trung nghiên cứu vào bộ khung xương của ứng
dụng, những thành phần công nghệ chủ yếu duoc sử dung trong ứng dụng.
Trần Thanh Tài - BI9DCCN565
Trang 24Đồ án tốt nghiệp đại học
2.1 Hệ thống unity 3D
2.1.1 Giới thiệu
Như đã đề cập ở mục 1.4.2, Unity là một trang phần mềm phát triển trò chơi
và ứng dụng 3D phô biến Hệ thống 3D của Unity cung cap môi trường phát triển
mạnh mẽ và linh hoạt cho các nhà phát triển dé tạo ra các trò choi va ứng dụng
động đa dạng Đặc biệt với hệ thống xây dựng nhà mô phỏng trong không gian 3D,
việc sử dụng môi trường 3D của Unity là hoàn toàn phù hợp.
2.1.2 _ Thành phan chính
Game Objects (Đối tượng trò choi):
e Là các phan cơ bản của môi trường 3D trong Unity.
e Đại diện cho toàn bộ thực thé trong ứng dụng bao gồm phòng, đồ vật, ánh sáng,
camera, ;
Components (Bộ phan):
e Là các thành phần được đính kèm vào Game Objects dé định rõ tinh chat và
hành vi của chúng.
e Các Components quan trọng bao gồm Transform (vị trí, quay, tỷ lệ), Mesh
Renderer (hiên thị hình dang 3D), Collider (xác định vùng va chạm), và
Animator (quản lý animation).
Hình 2.7 Các Component chuyên dụng trong hệ thống
Trong đó, Component Transform là thông dụng nhất, được dùng dé chỉnh vị trí,
kích thước, góc xoay của đô vật Component MeshRenderer nhận vào các
lưới(Mesh) thể hiện hình dạng của đồ vật, thuộc tính material cho phép vật được
render theo chất liệu sẵn có, ngoài ra còn một vai cài đặt khác như đồ
Trần Thanh Tài - BI9DCCN565
Trang 25Đồ án tốt nghiệp đại học
bóng(Shadows), phản xạ(Reflection), Cuối cùng, Collider là Component được
dùng đê xử lý va chạm và các thao tác kéo thả đô vật.
Ngoài ra, mỗi script khi được gắn vào Game Object cũng được xem như một
Component
Materials (Vật liệu):
e Định nghĩa các đặc tính vật liệu của một đôi tượng như màu sắc, độ bóng, và
ánh sáng phản xạ.
e Materials thường được gan cho Mesh Renderer(Hình 2.1), đây cũng là một
thành phân rât được chú trọng trong ứng dụng.
Shaders (Bộ vi xử lý đồ họa):
e Định rõ cách mà vật liệu phản ánh ánh sáng va màu sắc.
e Unity hỗ trợ nhiều loại shaders dé tạo ra các hiệu ứng đồ họa đa dạng
Lighting (Chiếu sáng):
e Hệ thống chiếu sáng của Unity bao gồm nhiều loại đèn như Directional Light,
Point Light, va Spot Light.
e Cung cấp các tính năng như Global Illumination để mô phỏng ánh sáng lan toa
trong môi trường.
Camera (Máy ảnh):
e Định rõ góc nhìn va cách nhìn của người chơi hoặc người dùng.
e Có thể cấu hình thông số như cận cảnh, góc nhìn, và độ chệch
e Cung cấp các tính năng vật ly như trong lực, va cham, và độ ma sat
e_ Collider và Rigidbody là các Components quan trọng dé xác định hình dang và
động lực.
Trần Thanh Tài - BI9DCCN565
Trang 26Đồ án tốt nghiệp đại học
Particle System (Hệ thống hạt):
e Cho phép tạo ra các hiệu ứng như hỏa, khói, và mưa.
e Điều chỉnh các tham số như tốc độ, hướng, và kích thước của hạt.
Asset Import Pipeline (Đường ống nhập tài nguyên):
e Hỗ trợ quá trình nhập va quản ly tài nguyên như model 3D, texture, âm thanh,
và video.
2.2 Builder Pattern
2.2.1 Vấn đề khởi tao ham trong hệ thống lớn
Ở hau hết ngôn ngữ lập trình, trong mỗi lớp đều có những ham constructor
và nếu chúng không được khai báo thì trình biên dịch sẽ tự động xây dựng một hàmconstructor mặc định cho lớp ay Khi chúng ta xây dựng, ta cũng thé tùy ý lựa chọn
những tham số truyền vào cho constructor miễn là nó hữu ích
Như vậy, vấn đề đặt ra ở đây khi một đối tượng có thể được khởi tạo với rất
nhiêu những tham sô truyện vào va có thê một vai trong sô đó không nhât thiệt phải truyền vào trong lúc khởi tao:
Hình 2.8 Van dé trong lập trình với constructor
Có một phương án dé giải quyết, đó là bằng cách truyền những giá trị null
vào tham số trong hàm constructor hoặc là nạp chồng nhiều ham constructor khác
với những tham số tùy ý Khi đó cấu trúc lớp sẽ trông như sau:
Trần Thanh Tài - BI9DCCN565
Trang 27Đồ án tốt nghiệp đại học
Student(String 1d, String firstName, String lastName id = id;
= id;
Hình 2.9 Phương án giải quyết trong van dé constructor
Cách này có thể giải quyết một số trường hợp nhưng sẽ có những nhược điểm như
sau:
e Phải tao rất nhiều ham constructor trong những trường hợp khác nhau
e Khó khăn trong việc xác định thứ tự của những tham số truyền vào
Vậy liệu có cách nào để giải quyết vấn đề này không?
2.2.2 Giới thiệu về Builder Pattern
e Builder là một mau thiết kế thuộc nhóm Creational Pattern — những mẫu thiết kế
cho việc khởi tạo đôi tượng của lớp
e Builder Pattern là một mẫu thiết kế được dùng dé cung cấp một giải pháp linh
hoạt cho các van đê tạo đôi tượng (object) khác nhau trong lập trình hướng đôi
tượng.
e_ Cho phép xây dựng các đối tượng phức tạp bằng cách sử dụng các đối tượng
đơn giản và sử dụng tiếp cận từng bước Builder Pattern còn cho phép tạo ra các
kiêu thê hiện khác nhau của một đôi tượng băng cách sử dụng cùng một
constructor code.
Trần Thanh Tài - BI9DCCN565
Trang 28Đồ án tốt nghiệp đại học
Tại sao chọn builder Pattern cho hệ thống?
Hình 2.10 Mô hình hệ thong nhà nhiễu thành phan
Xây dựng một ứng dụng nhà mô phỏng yêu cầu một lượng đầu vào constructor rất lớn, đồng thời yêu cầu sự mở rộng, linh hoạt cao, do đó Builder
Pattern chắc chắn sẽ là phương pháp phù hợp đề làm bộ khung chính cho dự án.
Ngoài ra, Builder Pattern còn có những ưu điểm không không hề nhỏ hỗ trợ
cho sự linh hoạt của hệ thông.
Ưu điểm của Builder Pattern?
Builder Pattern được thiết kế dé giải quyết một số van dé chung xuất hiện
trong quá trình xây dựng đối tượng, đặc biệt là khi đối tượng đó có nhiều thành
phần hoặc cần được xây dựng theo nhiều cách khác nhau Dưới đây là một số mục
đích quan trọng cua Builder Pattern:
- Tach biệt quá trình xây dựng và biéu diễn:
e Builder Pattern cho phép chúng ta tách biệt quá trình xây dựng đối tượng từ cách
đối tượng được biểu diễn.
e Client không cần biết chi tiết về cách đối tượng được xây dựng hoặc cách các
thành phân được tạo ra.
- Linh họat quá trình xây dựng:
Trần Thanh Tài - BI9DCCN565
Trang 29Khi có quá nhiều tham số trong constructor, đặc biệt là khi một số tham số là tùy
chọn, code trở nên khó đọc và bảo trì.
Builder Pattern giảm sự phức tạp của constructor và giúp tránh việc có quá nhiều
phiên ban constructor (constructor overload).
- H6 tro immutable objects:
Builder Pattern thường được sử dụng dé xây dựng immutable objects, tức là các
đối tượng không thé thay đổi sau khi đã được tạo.
Các phương thức của builder thường trả về một phiên bản mới của chính builder
đó, giúp g1ữ nguyên tính không thay đôi của đôi tượng.
- Dễ mở rộng:
Nếu cần thêm các thành phần mới cho đối tượng, ta chỉ cần thêm phương thức
vào builder mà không ảnh hưởng đên client code.
Builder Pattern làm cho quá trình mở rộng đối tượng trở nên dé dang ma khônglàm thay đôi code hiện tại.
- Đồng nhất quy trình xây dựng:
Builder Pattern giúp định rõ các bước cần thiết dé xây dựng một đối tượng, giúp
đồng nhất quy trình xây dựng và giảm kha năng quên một số bước quan trọng.
2.2.3 Cấu trúc của Builder Pattern
Các thành phần trong mô hình:
Builder: Giao diện Builder khai báo các bước product construction chung cho tất
cả các loại builder Abstract interface đê tạo nên các đôi tượng sản pham ( object product )
Concrete Builder: Cung cấp các cách triển khai khác nhau của các bước
construction cho Builder Cac concrete builder có thê tạo ra các product không
tuân theo giao diện chung.
ConcreBuilder: Là một object có thé xây dựng nên các object khác Xây dựng
và lap ráp các phân đê xây dựng object.
Trần Thanh Tài - BI9DCCN565
Trang 30Đồ án tốt nghiệp đại học
@ Products: Là các đối tượng kết quả Các product do các builder khác nhau tạo ra
không nhât thiệt phải thuộc cùng một hệ thông phân câp hoặc giao diện lớp.
e Director: Lớp Director xác định thứ tự gọi các bước construction, vì vậy có thê
tạo và sử dụng lại các câu hình cụ thê của product.
@ Client: Client phải liên kết một trong các đối tượng trình tạo với director Thông
thường, nó chỉ được thực hiện một lân, thông qua các tham sô của hàm tạo của
director Sau đó, director sử dung builder object đó cho tat cả các construction
tiép theo.
Trần Thanh Tai - BI9DCCN565
Trang 31Đồ án tốt nghiệp đại học
d.maketl
Room r = b.getResult()
Director builder:Builder
<<Interface>>
Builder
Reset()
BuildStepAl) BuildStepB()
BuildStepZ(]
Director(builder) ChangeBuilder(builder)
makeltype)
builder.Reset() if(type == “LivingRoom")
Tóm lại, thông qua việc phân tích chi tiết trong Chương 2 của đồ án, ta đã có
cơ hội hiệu rõ vê những công nghệ hàng dau được tích hợp trong ứng dụng Trong
đó, hệ thong Unity 3D và mô hình thiệt kê Builder Pattern đã nôi bật lên như những
Trần Thanh Tài - BI9DCCN565
Trang 32Đồ án tốt nghiệp đại học
yếu tô chính, đóng vai trò quan trọng trong việc xây dựng và phát triển ứng dụng.
Sự tích hợp của những thành phần này không chỉ tạo nên sự độc đáo và đặc sắc của ứng dụng mà còn góp phần định hình những ưu điểm và khả năng mở rộng của nó.
Việc sử dụng hệ thống Unity 3D mang lại khả năng tương tác và trải nghiệm
người dùng độc đáo, trong khi mô hình Builder Pattern giúp: tối ưu hóa quá trình
xây dựng và quản lý các thành phần của ứng dụng Cả hai yếu tố này không chỉ tạo
ra một ứng dụng mạnh mẽ từ góc độ kỹ thuật mà còn mang lại trải nghiệm người
dùng tốt nhất có thé
Đồ án đã chú trọng vào việc phân tích các công nghệ này không chỉ để hiểu rõ về
tính năng của chúng ma còn dé a áp dụng chúng một cách linh hoạt và hiệu quả trong
ngữ cảnh cụ thê của ứng dụng Điều này đặt nên móng cho sự thành công của dự án
và đồng thời tạo ra tiềm năng phát triển và mở rộng trong tương lai.
Trần Thanh Tài - BI9DCCN565
Trang 33CHUONG 3 PHAN TÍCH VÀ THIET KE HE THONG
Trong chương này, đồ án sẽ tập trung vào việc trình bay phân tích thiết kế chotoàn bộ hệ thông và phân tích thiệt kê chi tiệt cho từng module có mặt trong trong hệ
thông.
3.1 Phân tích hệ thống
3.1.1 Biểu đồ Use Case va Scenario
Actor chính của hệ thong là người dùng.
Hệ thông nha mé phỏng
fan toàn bộ đô vat
đổi cài đặt phố “““ <<Exlend>
Thay đổi chất liệu san = mameextension points
SELES “vm Na Hiển thị lưới
Sửa đồ vật trong phòng Tao chat liệu mới
Xem danh sách loại đỗ vật \ ^^” ^^ ^^ ^^ z ExtensionPoint c
Hình 3.12 Use Case tổng quát hệ thống
extension points
Xem video hướng dẫn.
Trang 343.1.2 Danh sách Use Case và Scenario tương ứng
Module tạo phòng mới:
A
Hình 3.13 Use Case module tạo phòng mới
Bang 3.1 Kich ban module tao phong moi
Tén Use case Tao phong moi
Tac nhan chinh Người dùng
Điều kiện tiên quyết Người dùng đã truy cập ứng dụng
Hậu điều kiện Người dùng tạo phòng mới thành công
Chuỗi sự kiện chính 1 Người dùng truy cập vào ứng dụng.
2 Giao diện chính hiển thị các đề mục
3 Người dùng chọn vào Thêm phòng mới
4 Giao diện phòng mới hiển thị
Trang 35Ngoại lệ Không có ngoại lệ
Module chỉnh sửa phòng
Bảng 3.2 Kịch bản module chính sửa phòng
Tên Ủse case Chỉnh sửa phòng
Tác nhân chính Người dùng
Điều kiện tiên quyết Người dùng truy cập ứng dụng
Hậu điều kiện Người dùng thêm đồ vật thành công
Chuỗi sự kiện chính 1 Người dùng truy cập vào ứng dụng.
2 Giao diện chính hiền thị các đề mục
3 Người dùng chọn vào một phòng đã tạo
Ngoại lệ Không có ngoại lệ
Trang 36Module xem video hướng dẫn
Người dùng
Hình 3.14 Use Case module xem video hướng dẫn
Bang 3.3 Kịch ban module xem video hướng dan
Tên Use case Xem video hướng dan
Tac nhan chinh Người dùng
Điều kiện tiên quyết Người dùng truy cập ứng dụng
Hậu điều kiện Người dùng xem video hướng dẫn thành
công
Chuỗi sự kiện chính 1 Người dùng truy cập vào ứng dụng.
2 Giao diện chính hiển thị các đề mục
3 Người dùng chọn vào phần “Tutorials”
Trang 375 Người dụng chọn một video bat ki
6 Ung dụng dan đến video tương ứng trên
nên tảng youtube
5.2 Ứng dụng hiển thị video không tồn tại
Module thêm đồ vật
Bảng 3.4 Kịch bản module thêm đồ vật
Tên Use case
Điều kiện tiên quyết Người dùng đã truy cập giao diện chỉnh
sửa phòng
Hậu điêu kiện Người dùng thêm đồ vật thành công
Chuỗi sự kiện chính 1 Người dùng click vào button “Add
Object”
2 Ứng dung hiển thi popup gồm các loại
đô vật theo môi trường sử dụng
Trang 383 Người dùng click vào một loại bat kì
4 Ứng dụng hiển thị các loại đồ vật theo
mục đích sử dụng nắm trong môi trường đó.
5 Người dùng click vào một loại đồ vật
Ngoại lệ Không có ngoại lệ
Module thay đối chất liệu sàn
Người dùng
<<lInclude>>
Hình 3.15 Use Case mudule thay đổi chất liệu sàn