Bối cảnh và vấn đề nghiên cứu

Trong lĩnh vực thiết kế và sản xuất nội thất, nhu cầu cá nhân hóa không gian sống của người tiêu dùng ngày càng gia tăng. Tuy nhiên, quy trình tư vấn và thiết kế truyền thống bộc lộ nhiều điểm nghẽn về mặt kỹ thuật và vận hành:

  • Phụ thuộc vào phần mềm chuyên dụng: Việc xây dựng bản vẽ phối cảnh 3D hiện nay phụ thuộc chủ yếu vào các phần mềm đồ họa chuyên nghiệp như SketchUp, Blender, hoặc 3ds Max.
  • Thời gian xử lý kéo dài: Quá trình dựng hình và kết xuất (render) một thiết kế hoàn chỉnh đòi hỏi thời gian từ 1–2 ngày đối với các mẫu đơn giản và từ 3–7 ngày đối với các mẫu phức tạp.
  • Chi phí nhân sự và rủi ro kinh doanh: Doanh nghiệp phải duy trì đội ngũ kỹ thuật viên có chuyên môn sâu về đồ họa 3D. Khi khách hàng không hoàn tất ký kết hợp đồng sau giai đoạn phối cảnh, chi phí thời gian và nguồn lực nhân sự bị lãng phí đáng kể.

Nhằm giải quyết bất cập trên, đề tài "Xây dựng website hỗ trợ thiết kế nội thất" (mã số SKL013871) được thực hiện bởi sinh viên Mai Hải Đăng và Nguyễn Minh Chiến dưới sự hướng dẫn của TS. Mai Anh Thơ tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh.

Mục tiêu nghiên cứu được xác định cụ thể gồm:

  1. Xây dựng một nền tảng trực tuyến cho phép người dùng tự thiết kế nội thất 3D cơ bản chỉ sau 3–5 phút tiếp cận tài liệu hướng dẫn, không đòi hỏi kiến thức chuyên sâu về dựng hình hay render.
  2. Rút ngắn thời gian và chi phí thiết kế sơ bộ cho doanh nghiệp nội thất, hỗ trợ nâng cao tỷ lệ chốt đơn hàng.
  3. Tăng cường tính cá nhân hóa thông qua việc cung cấp công cụ tùy biến chi tiết cấu trúc, vật liệu, màu sắc và phụ kiện.
  4. Đẩy mạnh tương tác trực quan giữa khách hàng và đơn vị thi công dựa trên thông số kỹ thuật thực tế.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Quy trình mô hình hóa đồ nội thất dạng khối ghép (module), kỹ thuật hiển thị mô hình 3D trên nền tảng web, và hệ thống quản trị dữ liệu cấu hình sản phẩm nội thất.
  • Phạm vi thời gian: Đề tài được triển khai thực hiện từ ngày 01/08/2023 đến ngày 10/07/2024.
  • Phạm vi chức năng: Tập trung vào các dòng nội thất có nhu cầu ứng dụng cao như hệ tủ bếp (bếp chữ I, bếp chữ L), tủ áo, tủ giày thuộc phân hệ thiết kế tùy chỉnh (Product Configurator), cùng không gian phòng mẫu cho các sản phẩm nội thất rời (Virtual Design).

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và công nghệ áp dụng

Đề tài khai thác các nền tảng kỹ thuật và thư viện phần mềm chuyên dụng trong phát triển ứng dụng web hiện đại:

  • Three.js: Thư viện JavaScript mã nguồn mở dựng trên nền tảng WebGL, đóng vai trò hiển thị không gian 3D tương tác trực tiếp trên trình duyệt web mà không cần cài đặt phần mềm bổ trợ.
  • React.js: Thư viện giao diện người dùng (Frontend SPA), kết hợp Redux để quản trị trạng thái tập trung và Axios để xử lý các yêu cầu HTTP ngoại vi.
  • FastAPI: Khung ứng dụng phía máy chủ (Backend) xây dựng trên nền tảng Python, tối ưu tốc độ phản hồi và cung cấp chuẩn giao tiếp RESTful API.
  • PostgreSQL: Hệ quản trị cơ sở dữ liệu lưu trữ toàn bộ cấu trúc định danh module, quan hệ phụ kiện, bảng giá và dữ liệu thiết kế của người dùng.
  • Mô hình 3D GLTF/GLB: Định dạng tệp tối ưu hóa cho đồ họa web, được tạo lập từ phần mềm SketchUp trước khi đưa vào môi trường render của Three.js.

Phương pháp nghiên cứu và thực nghiệm

Tác giả đã áp dụng quy trình nghiên cứu thực nghiệm kết hợp mô hình hóa kỹ thuật phần mềm:

  • Phương pháp khảo sát đối sánh: Khảo sát các hệ thống cấu hình sản phẩm 3D trực tuyến trên thị trường (tiêu biểu là giải pháp tùy biến giày 3D của hãng Nike) để nghiên cứu cơ chế ánh xạ vật liệu, kỹ thuật tách lớp lưới đồ họa (mesh), và mô hình tương tác 3D trên web. Nhóm cũng tiến hành thực nghiệm so sánh thư viện Babylon.js và Three.js trước khi chọn Three.js làm giải pháp hiển thị chính.
  • Phương pháp mô hình hóa hướng đối tượng (UML): Sử dụng sơ đồ lớp (Class Diagram), sơ đồ trường hợp sử dụng (Use Case Diagram gồm 19 Use Case chính), và sơ đồ tuần tự (Sequence Diagram) để chuẩn hóa logic nghiệp vụ.
  • Quy chuẩn dữ liệu đầu vào: Toàn bộ kích thước và quy tắc ghép nối tuân theo tiêu chuẩn công nghiệp ngành mộc nội thất:
    • Một đơn vị module tiêu chuẩn có kích thước chiều ngang mặc định là 450 mm (khoảng dao động kỹ thuật từ 250 mm đến 500 mm).
    • Module tủ đôi (chứa chậu rửa hoặc bếp nấu) có kích thước cố định 800 mm.
    • Module tủ khô (chiếm toàn bộ chiều cao không gian bếp) bị giới hạn bố trí ở vị trí ngoài cùng bên trái hoặc bên phải.

Thiết kế và triển khai

Hệ thống được thiết kế theo kiến trúc phân tầng dịch vụ (Client-Server Architecture) giao tiếp thông qua giao thức RESTful API.

+-----------------------------------------------------------------------+
|                             TRÌNH DUYỆT WEB                           |
|  +---------------------------------+  +----------------------------+  |
|  |       Website Design            |  |       Website Admin        |  |
|  |  (React.js / Redux / Three.js)  |  |      (React.js / Redux)    |  |
|  +---------------------------------+  +----------------------------+  |
+-----------------------------------------------------------------------+
|                           MÁY CHỦ BACKEND                             |
|                              FastAPI                                  |
|            +-------------------------------------------+              |
|            | Tầng định tuyến API / Xử lý nghiệp vụ logic|              |
|            +-------------------------------------------+              |
+-----------------------------------------------------------------------+
|                         CƠ SỞ DỮ LIỆU POSTGRESQL                      |
| (Lưu trữ User, Module, Submodule, Texture, Material, Background, Price)|
+-----------------------------------------------------------------------+

Các thuật toán và giải pháp kỹ thuật cốt lõi

  1. Thuật toán chia bước (step) và tính tỷ lệ co giãn (scale factor): Để giải quyết kết cấu bếp chữ I và chữ L, hệ thống chia mặt bằng thành các bước: bếp chữ I gồm 2 bước (bếp dưới, bếp trên); bếp chữ L gồm 4 bước (dưới phải, dưới trái, trên phải, trên trái). Khi người dùng nhập tổng chiều dài $L$, số đơn vị thiết kế được tính bằng phép chia nguyên: $$\text{Số module} \approx \frac{L}{450}$$ Từ đó, chiều rộng thực tế của từng khối được nhân với một tỷ số co giãn nhằm đảm bảo mô hình phủ kín chiều dài mà không làm lệch tỷ lệ khối. Vị trí ($x, y, z$) của module sau được tính tịnh tiến từ tọa độ module trước cộng với bề rộng tương ứng.
  2. Kỹ thuật ánh xạ vân bề mặt (Texture Mapping): Nhóm chuẩn hóa cấu trúc tệp .glb bằng cách đặt tên các phân vùng lưới (Mesh). Chỉ những khối mang tên Main hoặc Door mới nhận texture vân gỗ (Melamine, Acrylic) hoặc vân đá; riêng chi tiết tấm hậu giữ nguyên bề mặt phẳng đơn sắc nhằm đảm bảo tính đồng nhất với sản phẩm sau gia công cơ khí.
  3. Mô phỏng độ phản xạ ánh sáng (Gloss/Reflection): Đặc tính bóng của vật liệu được điều khiển qua hai chỉ số metalness và roughness trong Three.js:
    • Sơn 2K: Độ phản xạ cao (roughness thấp, điều chỉnh metalness).
    • Acrylic: Độ bóng trung bình.
    • Melamine: Bề mặt nhám mờ, hầu như không phản xạ. Để ánh sáng phản chiếu thực tế, nhóm triển khai một môi trường HDR ảo ẩn trong không gian 3D làm nguồn bức xạ gián tiếp.
  4. Logic định vị tay nắm cửa tự động: Trên các module cánh cửa, nhóm gắn các điểm neo hình học (locator dot) mang quy ước tên như TAYNAM_LEFT (tay nắm đặt dọc bên trái) hoặc TAYNAM_CENTER (tay nắm ngang ở giữa). Khi người dùng chọn loại tay nắm, thuật toán tự động căn chỉnh tọa độ và góc xoay tương ứng với điểm neo.

Kiểm thử hệ thống

Nhóm nghiên cứu đã thực hiện kiểm thử chức năng (Functional Black-box Testing) trên cả hai phân hệ chính:

  • Phân hệ Website Design: Kiểm thử các ca đăng nhập, chọn cấu hình mặt bằng, tính toán kích thước, tải mô hình 3D, áp vật liệu, tính giá và lưu/tải bản thiết kế (Bảng kiểm thử số 47 trong khóa luận).
  • Phân hệ Website Admin: Kiểm thử các chức năng CRUD cho danh mục module, vật liệu, texture, bảng đơn giá, nền phòng 3D và cấp phát tài khoản (Bảng kiểm thử số 48 trong khóa luận).

Nội dung chính theo từng chương

Chương 1: Khảo sát hiện trạng, phân tích yêu cầu

Chương này khảo sát thực trạng công nghệ 3D trên môi trường web, phân tích hạn chế của các phương pháp render truyền thống và tham chiếu giải pháp tương tác từ website của Nike. Nội dung chương xác định:

  • Yêu cầu phi chức năng: Đảm bảo thời gian tải trang nhanh, tương thích đa thiết bị, tính sẵn sàng 24/7 và bảo mật thông tin người dùng.
  • Yêu cầu chức năng phân chia theo 2 tác nhân chính:
    • Người dùng (User): Đăng nhập, chọn cấu hình thiết kế, gắn module/submodule, đổ vật liệu/texture, bật/tắt kích thước, ẩn/hiện cánh cửa, xem danh sách sản phẩm và chi phí, lưu trữ bản vẽ.
    • Quản trị viên (Admin/Designer): Quản lý phân quyền tài khoản, cấu hình dữ liệu module, thư viện vật liệu, bảng giá và môi trường phòng mẫu. Đồ án đưa ra quy định không mở cổng đăng ký tài khoản tự do mà người dùng phải liên hệ quản trị viên cấp phát nhằm kiểm soát tương tác và hạn chế rủi ro phá hoại hệ thống dữ liệu.

Chương 2: Mô hình hóa yêu cầu

Chương 2 mô tả chi tiết kiến trúc hướng đối tượng của hệ thống thông qua hệ thống biểu đồ UML:

  • Biểu đồ lớp (Class Diagram): Đặc tả các thực thể dữ liệu gồm Product Configurator, Virtual Design, Module, Submodule, Module Virtual và User.
  • Biểu đồ trường hợp sử dụng (Use Case Diagram): Chuẩn hóa 19 Use Case đánh số từ UC01 đến UC19:
    • UC01 đến UC08: Luồng tương tác thuộc phân hệ Product Configurator (đăng nhập, chọn loại thiết kế, thêm main module, thêm sub module, thêm tay nắm, gán vật liệu/màu, lưu và tải thiết kế).
    • UC09 đến UC13: Luồng tương tác thuộc phân hệ Virtual Design (chọn không gian phòng mẫu, đưa module rời vào phòng, hiển thị danh mục sản phẩm, lưu và tải bản vẽ).
    • UC14 đến UC19: Luồng quản trị của Admin (quản lý module, quản lý module virtual, quản lý texture, quản lý background, quản lý biểu giá, quản lý vật liệu).
  • Biểu đồ tuần tự (Sequence Diagram): Mô tả chi tiết thông điệp trao đổi giữa UI, Controller, Server và Database cho từng tác vụ trọng yếu.

Chương 3: Kiến trúc hệ thống và các công nghệ áp dụng

Tập trung làm rõ cơ chế tích hợp giữa thư viện đồ họa Three.js và khung giao diện React.js. Trình bày chi tiết luồng xử lý dữ liệu từ các tệp .glb thông qua GLTFLoader, phương pháp quản lý state của cây component 3D, và cơ chế ánh xạ API bất đồng bộ từ máy chủ FastAPI.

Chương 4: Thiết kế giao diện và xử lý

Tác giả minh họa chi tiết hệ thống giao diện thực tế cùng bảng mô tả các trường thông tin xử lý tương ứng:

  • Giao diện Client: Màn hình trang chủ, màn hình đăng nhập, màn hình chọn quy chuẩn thiết kế (bếp chữ I, chữ L), màn hình nhập số đo thực tế, và không gian tương tác 3D trung tâm cho phép thao tác kéo thả, đổi góc nhìn camera, bật/tắt hiển thị kích thước và phụ kiện.
  • Giao diện Admin: Hệ thống bảng quản lý (tables) và biểu mẫu cập nhật (forms) phục vụ cấu hình tham số: nhập kích thước và quy tắc ràng buộc cho Main Module/Submodule, xem trước (preview) mô hình 3D trước khi lưu, quản lý thư viện Texture vân gỗ mới từ thị trường, quản lý chi phí linh kiện và công thức định giá tự động cho từng module.

Chương 5: Cài đặt và kiểm thử ứng dụng

Tổng hợp kết quả triển khai mã nguồn, đối chiếu danh sách chức năng hoàn thiện so với kế hoạch đề ra, công bố kết quả kiểm thử chức năng trên các bảng thực nghiệm, đồng thời tự đánh giá kiến thức nền tảng, kỹ năng thu nhận được, các điểm hạn chế kỹ thuật và định hướng nâng cấp hệ thống.


Kết quả và đóng góp

Kết quả kỹ thuật đạt được

Hệ thống phần mềm đã hoàn thành đầy đủ hai phân hệ chức năng chính theo đúng đề cương:

Phân hệ Tính năng kỹ thuật cốt lõi Dữ liệu đầu ra tương ứng
Product Configurator Ghép nối các module nội thất tùy biến (tủ bếp, tủ áo) theo bước chuẩn hóa; tính toán scale theo số đo thực tế; ràng buộc vị trí tủ đôi (800 mm) và tủ khô. Mô hình phối cảnh 3D trực quan; kích thước chi tiết từng khối; phân tách cửa/phụ kiện; bảng bóc tách giá thành sơ bộ theo vật liệu.
Virtual Design Bố trí các sản phẩm nội thất rời (sofa, bàn trà, kệ tivi) trong các không gian phòng mẫu định sẵn; di chuyển mô hình tự do có giới hạn chống xuyên tường. Danh sách sản phẩm đã bài trí (Product List); tổng chi phí ước tính; bản lưu không gian phòng kèm vị trí và góc quay của từng vật phẩm.
Hệ thống Quản trị (Admin) Cung cấp công cụ quản trị tham số 3D, xem trước mô hình trước khi phê duyệt, nạp texture mới, hiệu chỉnh đơn giá và cấu hình không gian nền. Cập nhật trực tiếp cơ sở dữ liệu module, quản lý bảng giá vật tư, kiểm soát quyền truy cập của người dùng.

Đóng góp thực tiễn của đề tài

  • Ứng dụng quy chuẩn sản xuất vào phần mềm: Khác với các công cụ vẽ tự do, hệ thống tích hợp sẵn các logic ràng buộc thực tế của ngành mộc (kích thước module 450 mm, phân chia bước theo hệ chữ I/L, quy cách lắp đặt tay nắm và tấm hậu), giúp bản vẽ thiết kế trên web có tính khả thi trực tiếp khi chuyển sang xưởng sản xuất.
  • Tối ưu hóa quy trình tư vấn khách hàng: Giảm thiểu công đoạn dựng hình thủ công tốn kém từ 1–7 ngày xuống còn vài phút tương tác trực tiếp trên trình duyệt, tạo tiền đề nâng cao hiệu suất bán hàng cho doanh nghiệp nội thất vừa và nhỏ.

Hạn chế và hướng nghiên cứu tiếp

Theo tự đánh giá của tác giả trong đồ án, nghiên cứu vẫn còn một số điểm giới hạn:

  • Về mặt kỹ thuật đồ họa: Kiến thức về lập trình 3D và WebGL của nhóm ban đầu còn hạn chế, dẫn đến việc xử lý va chạm không gian (ngăn module xuyên qua tường) ở chế độ Virtual Design chưa đạt độ mượt mà tối ưu.
  • Thư viện mẫu: Số lượng phòng mẫu và danh mục module có sẵn chưa bao quát toàn bộ các hình thái kiến trúc phức tạp trong thực tế.
  • Hiệu năng hệ thống: Chưa có các thuật toán tối ưu hóa đa giác (LOD - Level of Detail) khi tải đồng thời nhiều mô hình 3D chi tiết cao trên các thiết bị có cấu hình phần cứng thấp.

Hướng phát triển tiếp theo được đề xuất:

  • Tiếp tục tối ưu hóa thuật toán va chạm và di chuyển module trong phân hệ Virtual Design.
  • Bổ sung các quy chuẩn thiết kế nội thất phức tạp hơn (bếp chữ U, bàn đảo, hệ tủ âm tường).
  • Tích hợp thêm cơ chế xuất bản vẽ kỹ thuật chi tiết (bản vẽ 2D kèm thông số gia công) và nâng cấp bộ công cụ tính toán chi phí lắp đặt, phụ kiện cơ khí tự động.

Giá trị tham khảo

Báo cáo khóa luận này là tài liệu tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ phần mềm và Công nghệ thông tin: Làm tài liệu tham khảo thực tế cho các đề tài phát triển ứng dụng web tương tác đồ họa 3D sử dụng Three.js kết hợp React.js và FastAPI.
  • Nhà phát triển hệ thống thương mại điện tử nội thất: Cung cấp giải pháp mẫu về việc mô hình hóa cấu trúc dữ liệu cho bài toán cấu hình sản phẩm trực tuyến (Product Configurator).
  • Phần đáng lưu ý nhất: Chương 2 (đặc tả 19 use case chi tiết và thiết kế biểu đồ tuần tự) cùng giải pháp xử lý kỹ thuật tại Phần mở đầu về: thuật toán phân chia bước theo tỷ lệ 450 mm, cơ chế lọc tên mesh để đổ texture chính xác, và kỹ thuật dùng môi trường HDR ẩn để tạo độ bóng cho vật liệu sơn 2K và acrylic.

Câu hỏi thường gặp

Hệ thống xử lý kích thước module tủ bếp như thế nào khi người dùng nhập số đo tùy ý?
Hệ thống sử dụng kích thước tiêu chuẩn của một đơn vị thiết kế là 450 mm (biên độ dao động từ 250–500 mm). Từ chiều dài nhập vào, hệ thống lấy chiều dài chia cho 450 mm để tính ra số lượng đơn vị thiết kế (ví dụ: 2000 mm tương đương xấp xỉ 5 đơn vị, mỗi khối 400 mm; 2200 mm chia ra 5 đơn vị, mỗi khối 440 mm). Chiều rộng hiển thị của từng module trên 3D sẽ được nhân với hệ số scale tương ứng để vừa vặn với kích thước thực tế.

Làm cách nào để hệ thống ngăn chặn việc đổ vân gỗ (texture) lên toàn bộ mô hình, bao gồm cả tấm hậu?
Trong tệp thiết kế 3D (.glb), nhóm nghiên cứu quy ước đặt tên cho từng phần lưới riêng biệt (Mesh). Chỉ những lưới mang tên nhóm là Main hoặc Door mới được hệ thống ánh xạ hình ảnh texture; các lưới khác như tấm ván hậu (tấm ốp sau lưng) được giữ nguyên bề mặt phẳng đơn sắc theo đúng tiêu chuẩn gia công thực tế.

Hệ thống phân biệt độ bóng giữa các vật liệu sơn 2K, acrylic và melamine bằng kỹ thuật nào?
Nhóm sử dụng hai thuộc tính metalness và roughness trong thư viện Three.js kết hợp nạp một không gian môi trường HDR ảo được ẩn đi trên khung nhìn 3D. Nhờ nguồn sáng phản xạ từ môi trường HDR này, vật liệu sơn 2K thể hiện độ bóng cao, acrylic thể hiện độ bóng vừa, còn melamine thể hiện bề mặt nhám mờ không phản quang.

Tại sao website không cung cấp tính năng cho người dùng tự đăng ký tài khoản?
Theo phân tích yêu cầu tại Chương 1, hệ thống không mở đăng ký tự do mà yêu cầu khách hàng liên hệ trực tiếp với đơn vị quản trị để được cấp tài khoản. Quy định này nhằm mục đích thiết lập kênh tương tác trực tiếp với khách hàng tiềm năng, hỗ trợ tư vấn dịch vụ, giữ chân người dùng và hạn chế việc các đối thủ cạnh tranh truy cập phá hoại cơ sở dữ liệu.


Kết luận

Khóa luận tốt nghiệp của sinh viên Mai Hải Đăng và Nguyễn Minh Chiến đã xây dựng thành công nền tảng website hỗ trợ thiết kế nội thất 3D trực tuyến dựa trên sự kết hợp giữa Three.js, React.js, FastAPI và PostgreSQL. Đề tài giải quyết hiệu quả bài toán tự động hóa phối cảnh nội thất sơ bộ thông qua hai chế độ cấu hình sản phẩm theo module và bài trí không gian phòng mẫu, tích hợp chặt chẽ các quy chuẩn kích thước mộc thực tế. Dù còn một số hạn chế về độ bao phủ không gian và thuật toán va chạm 3D, công trình đã thể hiện phương pháp tiếp cận kỹ thuật bài bản và mang lại giá trị tham khảo ứng dụng cao cho lĩnh vực kỹ thuật phần mềm ứng dụng trong thương mại đồ nội thất.