Nội dung trên trang web này đã được dịch bằng trí tuệ nhân tạo (AI) hoặc công nghệ dịch máy và có thể có lỗi.

Skip to content

CubePart: Trình tạo 3D có thể điều khiển từng phần với từ vựng mở

Xây dựng các tài sản sẵn sàng cho trò chơi

SEO image for CubePart: An Open-Vocabulary Part-Controllable 3D Generator

Các mô hình tạo hình 3D hiện đại có thể tạo ra các đối tượng 3D đẹp mắt và phức tạp từ các lời nhắc văn bản, nhưng đối với một nhà phát triển trò chơi, một mô hình 3D nguyên khối không hữu ích. Ví dụ, một chiếc xe hơi cần phải có thể lái được. Các bánh xe cần phải quay riêng biệt, các cửa cần phải mở được và đèn pha cần phải bật được. 

Hiện tại, các nghệ sĩ 3D phải tự tay chia nhỏ các mô hình được tạo ra và đặt tên cho các bộ phận — một quy trình không hiệu quả khi mở rộng quy mô. Đột phá của chúng tôi là CubePart: khung công nghệ AI tạo hình 3D đầu tiên cho phép tạo lưới 3D với từ vựng mở và khả năng kiểm soát từng bộ phận. CubePart tạo ra một bộ lưới đã lắp ráp, riêng biệt, chức năng và được gắn nhãn chính xác, đáp ứng ngay lập tức các yêu cầu lập trình của nhà phát triển.

CubePart mở rộng khái niệm về các lược đồ cố định mà chúng tôi đã giới thiệu với 4D Generation để trao quyền cho người sáng tạo xác định danh sách các bộ phận mà một đối tượng nên được chia thành. Bộ lưới được tạo ra bởi CubePart có thể được đưa thẳng vào công cụ trò chơi và có thể được điều khiển bằng hoạt hình, vật lý và tập lệnh trò chơi mà không cần dọn dẹp thủ công. Chúng tôi đã công bố nghiên cứu về CubePart trên arXiv và cập nhật kho lưu trữ mã nguồn mở Cube để hỗ trợ việc tạo ra các phần có thể điều khiển được. Vào cuối năm nay, chúng tôi sẽ trình bày những phát hiện của mình tại SIGGRAPH

Sơ đồ: Hợp đồng API cho tài sản 3D tương tác

Trên Roblox, hành vi tương tác được triển khai trong các tập lệnh hoạt động trên các bộ phận — các phần con cụ thể, được đặt tên của một tài sản. Ngay cả các tài sản tương tự cũng có thể yêu cầu các bộ phận hoàn toàn khác nhau tùy thuộc vào trò chơi hoặc tình huống. Một hệ thống phân loại cố định sẽ hạn chế sự sáng tạo và chức năng, vì vậy CubePart cung cấp hai đầu vào: 

  1. Một lời nhắc văn bản toàn cục mô tả đối tượng trông như thế nào: ví dụ: "một chiếc xe đua theo chủ đề sứa".
  2. Một danh sách cụ thể, mở rộng các phần bắt buộc được gọi là schema: ví dụ: "bánh xe trước bên trái", "bánh xe trước bên phải", "bánh xe sau bên trái", "bánh xe sau bên phải", "súng", "đèn pha", "ống xả", "thân xe". 

Schema là hợp đồng API giữa tài sản và mã trò chơi, và CubePart cho phép người sáng tạo tạo ra các tài sản tuân thủ hợp đồng này. Kiểm soát từ vựng mở này cho phép CubePart nắm bắt sự đa dạng của các tài sản và trải nghiệm Roblox.

Tạo ra theo hai giai đoạn 

CubePart là kiến trúc khuếch tán hai giai đoạn được xây dựng trên biểu diễn hình dạng tiềm ẩn VecSet

Trong các hình minh họa dưới đây, người dùng nhập hai lời nhắc. 

  1. Lời nhắc văn bản chung: "Một xe kéo có đặc điểm hoạt hình." 
  2. Cấu trúc: “cabin”, “khung gầm”, “bánh xe”, “đèn báo trên nóc”, “bộ phận kéo”.

Giai đoạn 1 chịu trách nhiệm xác định hình dạng cơ bản của đối tượng (một xe kéo có đặc điểm hoạt hình). Giai đoạn này tạo ra một tiềm ẩn duy nhất cho toàn bộ đối tượng bằng cách sử dụng kiến trúc MMDiT với bộ mã hóa văn bản Qwen-VL, được huấn luyện trên khoảng 4,7 triệu cặp lưới-văn bản. Đây là giai đoạn cần nhiều dữ liệu: Áp dụng ngôn ngữ từ vựng mở vào hình học 3D là phần khó nhất của 3D tạo ra, và nó đòi hỏi một tập hợp dữ liệu lớn, đa dạng để hoạt động tốt. Chúng tôi cũng tinh chỉnh Giai đoạn 1 để nhận biết lược đồ. 

Giai đoạn 2 lấy dữ liệu tiềm ẩn từ Giai đoạn 1 và tạo ra một phần dữ liệu tiềm ẩn cho mỗi mục sơ đồ để tái tạo đối tượng với các bộ phận. Đối với ví dụ về xe cứu hộ hoạt hình của chúng tôi, Giai đoạn 2 tạo ra một phần dữ liệu tiềm ẩn riêng biệt cho cabin, khung gầm, bánh xe, đèn báo trên mui xe và bộ phận kéo để tái tạo chiếc xe cứu hộ cuối cùng với các bộ phận riêng biệt và có chức năng. Dữ liệu 3D được gắn nhãn bộ phận hiếm hơn nhiều so với dữ liệu văn bản lưới. Với Giai đoạn 1 hấp thụ bản đồ văn bản-hình dạng phức tạp từ một tập hợp văn bản lớn hơn, Giai đoạn 2 chỉ cần học vị trí ranh giới các bộ phận trên một đối tượng mà mô hình đã hiểu. Chúng tôi xem sự loại bỏ trong bài báo là bằng chứng trực tiếp cho điều này: Loại bỏ quá trình huấn luyện trước Giai đoạn 1 làm suy giảm đáng kể khả năng khái quát từ vựng mở của Giai đoạn 2. Nói tóm lại, Giai đoạn 1 là yếu tố giúp Giai đoạn 2 khái quát hóa. 
Một cải tiến quan trọng khác trong kiến trúc của chúng tôi là cách các phần giao tiếp với nhau. Giải pháp của chúng tôi là chèn các khối chú ý chéo giữa các bộ phận chuyên dụng thay vì sửa đổi các khối hiện có, với các dự báo đầu ra được khởi tạo bằng 0 để chúng bắt đầu như các thao tác không hoạt động và học cách giao tiếp giữa các bộ phận mà không làm xáo trộn đường dẫn đã được huấn luyện trước. Nguyên tắc này sẽ quen thuộc với những độc giả của ControlNet, được áp dụng ở đây cho việc phân tách bộ phận 3D. Đối với ví dụ về xe kéo của chúng tôi, các khối chú ý chéo giữa các bộ phận đảm bảo rằng cabin và bộ phận kéo được tích hợp liền mạch và định vị chính xác so với khung gầm và bánh xe.

Bộ dữ liệu và quy trình VLM của chúng tôi 

Để huấn luyện CubePart, chúng tôi đã tạo ra một bộ dữ liệu gồm hơn 460.000 tài sản — lớn hơn 11 lần so với các bộ dữ liệu công khai trước đây1 — và 2,02 triệu bộ phận. Thay vì gắn nhãn thủ công, chúng tôi đã xây dựng một quy trình tự động bằng cách sử dụng các mô hình thị giác-ngôn ngữ (VLM).

Quy trình này hiển thị hàng nghìn mô hình 3D từ nhiều góc độ bằng cách tiếp cận kết hợp: một hình ảnh có kết cấu (để cung cấp bối cảnh ngữ nghĩa) và một hình ảnh có màu cho từng bộ phận (để theo dõi ranh giới chính xác). Cả hai đều được đánh dấu bằng các điểm đánh dấu có số thứ tự giống nhau, giúp VLM có một "cái nắm" có thể truy cập bằng văn bản để suy luận trong không gian 3D và nhóm cũng như đặt tên cho từng bộ phận.

Không giống như các bộ dữ liệu được công bố trước đây, trong đó mọi bánh xe trên một chiếc xe đều chỉ được gắn nhãn đơn giản là "bánh xe", bộ dữ liệu của chúng tôi dạy AI cách phân biệt không gian (ví dụ: phân biệt "bánh xe trước bên trái" với "bánh xe sau bên phải"). Độ chính xác trong việc khớp nối này chính xác là điều mà các công cụ trò chơi đang tìm kiếm.

Những gì CubePart mở ra và những gì tiếp theo

CubePart cho phép các nhà sáng tạo tạo ra các tài sản phù hợp với mã gameplay của họ và có khả năng tương thích trực tiếp với các quy trình làm việc hiện có về hoạt hình, vật lý và kịch bản. CubePart cũng có thể phân tách các lưới mô hình hiện có của nghệ sĩ sang một lược đồ mới, điều này hữu ích cho việc nâng cấp các tài sản cũ, không chỉ tạo ra các tài sản mới.

Vẫn còn nhiều việc phải làm. CubePart xử lý việc phân tách vật thể cứng, nhưng chúng tôi cũng đang nghiên cứu trọng số đỉnh có da cho biến dạng nhân vật hữu cơ. Cơ chế chú ý giữa các phần giúp giảm đáng kể sự trùng lặp nhưng chưa loại bỏ hoàn toàn. Khả năng suy luận không gian — "trước trái" so với "sau phải" — vẫn còn nhiều tiềm năng cải thiện.

Chúng tôi coi việc tạo ra dựa trên lược đồ là bước giúp 3D tạo ra trở nên hữu ích trên một nền tảng mà mọi tài sản đều tham gia vào mô phỏng. Sắp tới, công nghệ này sẽ được cung cấp cho các nhà sáng tạo Roblox trực tiếp trong Roblox Studio.

1So sánh với PartVerseXL