PHẦN MỞ ĐẦU 1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI Đề tài này xuất phát từ nhu cầu thực tiễn trong cuộc sống và là kết quả của sự sáng tạo, tư duy đột phá của nhóm chúng em nhằm giải quyết một vấn đề lớn trong ngành thiết kế nội thất. Ý tưởng nảy sinh sau khi chúng em nhận thấy một thách thức lớn đối với các doanh nghiệp thiết kế nội thất: nhu cầu về không gian sống của người dân ngày càng tăng cao, và nội thất đóng vai trò quan trọng trong việc tạo nên không gian sống đó. Hiện nay, các công nghệ trên internet cho phép khách hàng xem trước bản vẽ và không gian 3D của các thiết kế nội thất, nhưng điều này phụ thuộc vào các phần mềm vẽ 3D chuyên nghiệp như SketchUp, Blender, 3ds Max,.
Quá trình render một thiết kế hoàn chỉnh thường mất rất nhiều thời gian, từ 1-2 ngày cho những thiết kế đơn giản đến 3-7 ngày cho những thiết kế phức tạp. Hơn nữa, việc này đòi hỏi người thực hiện phải có kiến thức chuyên sâu về thiết kế 3D và render. Điều này dẫn đến chi phí và thời gian gia tăng đáng kể, trong khi kết quả cuối cùng không đảm bảo khi khách hàng không chốt đơn, gây lãng phí tài nguyên và giảm hiệu quả kinh doanh. Nhận thấy được nhu cầu và thách thức trên, nhóm chúng em đã thảo luận và phát triển ý tưởng về một giải pháp mới: thiết kế một website hỗ trợ thiết kế nội thất 3D trực tuyến.
Website này sẽ tập trung vào việc cung cấp công cụ để khách hàng có thể tự thiết kế những mẫu nội thất cơ bản nhưng có nhu cầu sử dụng cao như tủ bếp, tủ áo, tủ giày,. Mục tiêu của chúng em là tạo ra một nền tảng dễ sử dụng, không đòi hỏi người dùng phải có kiến thức chuyên sâu về 3D hay render. Chỉ với 3-5 phút hướng dẫn cơ bản, khách hàng có thể tự thiết kế nội thất theo ý muốn, giúp họ tiết kiệm thời gian và tăng tính cá nhân hóa trong sản phẩm. Website này không chỉ giúp khách hàng tự do sáng tạo, thể hiện phong cách riêng của mình mà còn giúp các doanh nghiệp giảm chi phí và thời gian thiết kế, từ đó tăng tỉ lệ chốt đơn hàng.
Điều này tạo ra lợi ích kép: khách hàng hài lòng hơn với trải nghiệm mua sắm, và doanh nghiệp tăng hiệu quả kinh doanh nhờ giảm nhân lực thiết kế. Tuy nhiên, từ ý tưởng đến thực tế là một chặng đường dài và đầy thách thức. Để xây dựng một website hoàn chỉnh và đáp ứng được các quy cách và tiêu chuẩn thiết kế nội thất, 1 nhóm chúng em sẽ phải vượt qua nhiều khó khăn. Chúng em cần nghiên cứu sâu về các công nghệ web tiên tiến, hiểu rõ về các tiêu chuẩn thiết kế nội thất, và làm việc chặt chẽ với các chuyên gia trong lĩnh vực.
Chúng em sẽ trình bày chi tiết những khó khăn này và các giải pháp cụ thể trong các phần tiếp theo của báo cáo. Như vậy, đề tài này không chỉ có tính thực tiễn cao mà còn mở ra cơ hội sáng tạo và phát triển công nghệ mới trong ngành thiết kế nội thất. Đây là một bước đi táo bạo nhưng cần thiết, hứa hẹn mang lại nhiều lợi ích cho cả khách hàng và doanh nghiệp. MỤC ĐÍCH CỦA ĐỀ TÀI - Cung Cấp Công Cụ Thiết Kế Dễ Sử Dụng: Phát triển một nền tảng trực tuyến giúp người dùng tự thiết kế nội thất 3D dễ dàng, chỉ cần 3-5 phút hướng dẫn cơ bản.
- Tiết Kiệm Thời Gian và Chi Phí: Giảm thiểu thời gian và chi phí cho quá trình thiết kế nội thất, tăng hiệu quả kinh doanh cho doanh nghiệp. - Tăng Tính Cá Nhân Hóa: Cho phép khách hàng tự do sáng tạo, thể hiện phong cách riêng trong thiết kế nội thất với các công cụ và thư viện phong phú. - Nâng Cao Trải Nghiệm Khách Hàng: Cải thiện trải nghiệm mua sắm nội thất, giúp khách hàng có cái nhìn chân thực và tổng quan về sản phẩm trước khi quyết định mua. - Đẩy Mạnh Sự Tương Tác: Tăng cường sự tương tác giữa khách hàng và doanh nghiệp, cho phép chia sẻ ý tưởng và nhận tư vấn từ các nhà thiết kế chuyên nghiệp.
- Ứng Dụng Công Nghệ Mới: Sử dụng công nghệ tiên tiến trong thiết kế 3D và lập trình web để xây dựng một ứng dụng mạnh mẽ và thân thiện với người dùng. PHƯƠNG PHÁP THỰC HIỆN Để thực hiện đề tài, chúng em tiến hành theo các bước sau: ● Nghiên Cứu Kiến Thức Cần Thiết: - Three.js: Tìm hiểu các kỹ thuật load và hiển thị module 3D bằng thư viện Three.js, giúp tạo ra các mô hình 3D trực quan và hiệu quả. - Học và nắm vững ngôn ngữ lập trình JavaScript, nền tảng quan trọng để phát triển ứng dụng web động và tương tác. ● Nghiên Cứu Các Công Nghệ Web: 2 - React.js: Tìm hiểu và áp dụng React.js, một thư viện JavaScript mạnh mẽ để xây dựng giao diện người dùng tương tác và quản lý trạng thái ứng dụng.
- FastAPI: Nghiên cứu FastAPI để xây dựng server-side cho ứng dụng, giúp quản lý yêu cầu và xử lý dữ liệu một cách hiệu quả. - Thư viện hỗ trợ: Khám phá và tích hợp các thư viện hỗ trợ như Redux (quản lý trạng thái), Axios (giao tiếp API), và các công cụ khác giúp tối ưu hóa quá trình phát triển. ● Quản Lý Dữ Liệu: - PostgreSQL: Tìm hiểu và sử dụng PostgreSQL, một cơ sở dữ liệu NoSQL, để quản lý và lưu trữ dữ liệu thiết kế nội thất. PostgreSQL cung cấp khả năng linh hoạt và mở rộng, phù hợp với yêu cầu của ứng dụng.
● Thiết Kế và Phát Triển: - Xây dựng giao diện người dùng dựa trên React.js, tích hợp các mô hình 3D được tạo bằng Three. - Phát triển backend với FastAPI để xử lý các yêu cầu từ phía khách hàng và quản lý dữ liệu trong PostgreSQL. - Tích hợp các thư viện hỗ trợ để tối ưu hóa trải nghiệm người dùng và hiệu quả hoạt động của ứng dụng. ● Kiểm Thử và Triển Khai: - Tiến hành kiểm thử toàn diện để đảm bảo ứng dụng hoạt động ổn định và hiệu quả.
- Triển khai ứng dụng lên môi trường thực tế và thu thập phản hồi từ người dùng để tiếp tục cải tiến. Những phương pháp này giúp đảm bảo rằng ứng dụng hỗ trợ thiết kế nội thất 3D được phát triển một cách bài bản, hiệu quả, và đáp ứng được các yêu cầu đặt ra. KHÓ KHĂN VÀ HƯỚNG GIẢI QUYẾT - Load module lên 3D và vị trí , kích thước của các module chưa hợp lý: ● Khó khăn: khó khăn đầu tiên là chúng em chưa bao giờ được học qua 3D hay những kiến thức liên quan đến 3D nên không thể hình dung được cách 3 load hoặc vẽ một model lên 3D như thế nào để có thể giống với thiết kế của nội thất. Bên cạnh đó là bên nội thất thì thiết kế nội thất tủ bếp có chia ra là bếp chữ I và bếp chữ L , vậy làm sao để có thể load các module theo các kiểu thiết kế đó là 1 thách thức rất lớn.
Bên cạnh đó , quy chuẩn của 1 khối thiết kế của tủ bếp là 450 mm , vậy khi khách hàng nhập vào kích thước nhất định làm sao có thể biết được là vùng thiết kế đó sẽ load được bao nhiều module , mỗi module đó có kích thước như thế nào cũng là một vấn đề rất nan giải. ● Hướng giải quyết: + Đầu tiên, phải mất khá nhiều thời gian, trải qua rất nhiều lần nghiên cứu với các thư viện khác nhau như Babylon. thì nhóm chúng em mới đưa ra được quyết định sử dụng thư viện Three.Js để làm môi trường không gian 3D cho thiết kế. Sử dụng load module 3D thông qua module dưới dạng file glb và load lên dưới dạng GLTF lên môi trường 3D.
+ Tiếp đến là vấn đề bếp chữ I và bếp chữ L , thì sau nhiều lần nghiên cứu , tụi em quyết định sẽ chia thiết kế ra các step, các step này được backend trả về khi người dùng chọn loại thiết kế. Ví dụ bếp chữ I sẽ có 2 step là bếp dưới và bếp trên , còn bếp L thì sẽ chia ra thành 4 step là bếp dưới phải , bếp dưới trái , bếp trên phải , bếp trên trái. Mỗi step sẽ có vị trí và góc quay nhất định để có thể xử lý việc load module lên theo mỗi step. + Tiếp theo đó là vấn đề số khối module có thể load lên trong mỗi step và vị trí của mỗi module sẽ được load lên như thế nào.
Thì quy chuẩn của thiết kế nội thất ở tủ bếp là mỗi khối sẽ chia ra theo đơn vị thiết kế , mỗi đơn vị sẽ có kích thước tiêu chuẩn là 450 mm và dao động từ khoảng 250-500mm. Từ đó chúng em sẽ tính ra được từ kích thước người dùng nhập vào thì mỗi step sẽ có được mấy đơn vị thiết kế và cho người dùng load tối đa số đơn vị thiết kế trong step đó. Và khi tính theo đơn vị thiết kế như vậy , rõ ràng các module sẽ có kích 4 thước khác nhau khi người dùng nhập vào các số đo khác nhau. Ví dụ như khi nhập vào 2000 mm thì sẽ tính ra được là 2000/450 = sấp xỉ 5 đơn vị thiết kế , suy ra mỗi đơn vị thiết kế sẽ là 400mm, nhưng khi nhập là 2200 mm thì cũng là 5 đơn vị thiết kế vậy trung bình mỗi module sẽ khoảng 440mm.
Theo ví dụ đó thì sẽ thấy được các module không có kích thước cố định , nên chúng em nghĩ ra 1 cách là dùng 1 số scale được tính theo công thức và từ đó sẽ tính được mỗi module sẽ có kích thước là bao nhiêu và khi load lên 3D , các module cũng được nhân với số scale này để có thể thể hiện sự khác nhau về tỉ lệ kích thước của module một cách chân thực nhất. + Cuối cùng là vị trí của module khi load lên 3D, đây là thiết kế với các khối liên kề , nên chúng em sẽ quy định là cho thiết kế các module theo chiều từ góc tọa độ đi ra. Khi chọn module thì sẽ kiểm tra xem list module ở step có tồn tại module nào chưa , nếu chưa thì sẽ load theo vị trí mặc định của step còn nếu đã tồn tại module rồi thì sẽ tính được position của module đó bằng cách lấy position của module kế trước và cộng chiều tương ứng của position với chiều rộng của module kế trước là sẽ được positon mới cho module hiện tại cần load lên.