কিউবপার্ট: একটি উন্মুক্ত-শব্দভাণ্ডার, অংশ-নিয়ন্ত্রণযোগ্য ৩ডি জেনারেটর
কার্যকর গেম-রেডি অ্যাসেট নির্মাণের দিকে

আধুনিক 3D জেনারেটিভ মডেলগুলো টেক্সট প্রম্পট থেকে সুন্দর, জটিল 3D অবজেক্ট তৈরি করতে পারে, কিন্তু গেম ডেভেলপারদের জন্য একটি মনোলিথিক 3D মডেল কাজে আসে না। উদাহরণস্বরূপ, একটি গাড়ি চালানোযোগ্য হতে হবে। চাকাগুলো আলাদাভাবে ঘুরতে হবে, দরজাগুলো খুলতে হবে, এবং হেডলাইটগুলো জ্বলতে হবে।
বর্তমানে, 3D শিল্পীদের ম্যানুয়ালি জেনারেটেড মডেলগুলো ভেঙে অংশগুলোর নাম দিতে হয়—একটি প্রক্রিয়া যা বড় পরিসরে কার্যকর নয়। আমাদের যুগান্তকারী সমাধান হল CubePart: প্রথম জেনারেটিভ AI ফ্রেমওয়ার্ক যা ওপেন-ভোকাবুলারি, অংশ-নিয়ন্ত্রণযোগ্য 3D মেশ জেনারেট করার সুবিধা দেয়। CubePart স্বয়ংক্রিয়ভাবে ডেভেলপারদের প্রোগ্রামিং চাহিদার সাথে খাপ খায় এমন একটি একত্রিত সেট তৈরি করে, যা স্বতন্ত্র, কার্যকরী এবং সঠিকভাবে লেবেলকৃত মেশ নিয়ে গঠিত।
CubePart 4D Generation-এ আমরা যে স্থির স্কিমা ধারণাটি প্রবর্তন করেছিলাম, তা সম্প্রসারিত করে, যাতে একজন নির্মাতা কোনো বস্তুকে কতটি অংশে ভেঙে দেখাতে হবে তার তালিকা নির্ধারণ করতে পারে। CubePart দ্বারা তৈরি করা মেষের সেট সরাসরি গেম ইঞ্জিনে ব্যবহার করা যায় এবং ম্যানুয়াল পরিমার্জন ছাড়াই অ্যানিমেশন, ফিজিক্স এবং গেমপ্লে স্ক্রিপ্টের মাধ্যমে নিয়ন্ত্রণ করা যায়। আমরা আমাদের CubePart গবেষণা arXiv-এ প্রকাশ করেছি এবং পার্ট-কন্ট্রোলেবল জেনারেশন সমর্থনের জন্য আমাদের ওপেন সোর্স Cube রিপোজিটরি আপডেট করেছি। এই বছরের শেষের দিকে, আমরা SIGGRAPH-এ আমাদের ফলাফল উপস্থাপন করব।
স্কিমা: ইন্টারেক্টিভ 3D অ্যাসেটের জন্য API চুক্তি
Roblox-এ, ইন্টারেক্টিভ আচরণ স্ক্রিপ্টের মাধ্যমে বাস্তবায়িত হয় যা অংশ—একটি অ্যাসেটের নির্দিষ্ট, নামকৃত উপশ্রেণি—উপর কাজ করে। গেম বা পরিস্থিতির উপর নির্ভর করে একই ধরনের অ্যাসেটও সম্পূর্ণ ভিন্ন অংশের প্রয়োজন হতে পারে। একটি স্থির শ্রেণীবিন্যাস সৃজনশীলতা ও কার্যকারিতা সীমিত করবে, তাই CubePart দুটি ইনপুট অফার করে:
- একটি বৈশ্বিক টেক্সট প্রম্পট যা বস্তুটি দেখতে কেমন তা বর্ণনা করে: উদাহরণস্বরূপ, "একটি জেলিফিশ থিমের রেস কার।"
- একটি নির্দিষ্ট, উন্মুক্ত তালিকা যা স্কিমা নামে পরিচিত: উদাহরণস্বরূপ, "সামনের বাম চাকা", "সামনের ডান চাকা", "পিছনের বাম চাকা", "পিছনের ডান চাকা", "বন্দুক", "হেডলাইট", "এক্সহস্ট পাইপ", "বডি"।
স্কিমা হল অ্যাসেট এবং গেমপ্লে কোডের মধ্যে API চুক্তি, এবং CubePart একজন নির্মাতাকে চুক্তির সাথে সামঞ্জস্যপূর্ণ অ্যাসেট তৈরি করতে দেয়। এই উন্মুক্ত-শব্দভাণ্ডার নিয়ন্ত্রণ CubePart-কে Roblox-এর অ্যাসেট এবং অভিজ্ঞতার বৈচিত্র্য ধারণ করতে সক্ষম করে।
দুই ধাপে জেনারেট
CubePart হল একটি দুই-পর্যায়ের ডিফিউশন আর্কিটেকচার যা VecSet ল্যাটেন্ট শেপ প্রতিনিধিত্বের উপর নির্মিত।
নিচের চিত্রগুলিতে, ব্যবহারকারী দুটি প্রম্পট ইনপুট করেছেন।
- গ্লোবাল টেক্সট প্রম্পট: "কার্টুনসদৃশ বৈশিষ্ট্যযুক্ত একটি টো ট্রাক।"
- স্কিমা: "ক্যাব", "চ্যাসিস", "চাকা", "ছাদের বিমণ", "টowing অ্যাসেম্বলি"।
পর্যায় ১ বস্তুর মৌলিক আকৃতি নির্ধারণের দায়িত্বে রয়েছে, (কার্টুনসদৃশ বৈশিষ্ট্যে বৈশিষ্ট্যযুক্ত একটি টো ট্রাক)। এই ধাপটি Qwen-VL টেক্সট এনকোডারসহ MMDiT আর্কিটেকচার ব্যবহার করে পুরো বস্তুর জন্য একটি একক ল্যাটেন্ট তৈরি করে, যা প্রায় ৪.৭ মিলিয়ন মেশ-টেক্সট জোড়ায় প্রশিক্ষিত। এটি ডেটা-ক্ষুধার্ত ধাপ: ওপেন-ভোকাবুলারি ভাষাকে ৩ডি জিওমেট্রিতে ম্যাপ করা জেনারেটিভ ৩ডি-র কঠিন অংশ, এবং এটি ভালো করার জন্য একটি বড়, বৈচিত্র্যময় কর্পাস প্রয়োজন। আমরা অতিরিক্তভাবে স্টেজ ১-কে স্কিমা-সচেতন হিসেবে ফাইন-টিউন করি।



আমাদের ডেটাসেট এবং VLM পাইপলাইন
CubePart প্রশিক্ষণের জন্য, আমরা ৪৬০,০০০-এরও বেশি অ্যাসেট এবং ২.০২ মিলিয়ন অংশ নিয়ে একটি ডেটাসেট তৈরি করেছি—যা পূর্ববর্তী পাবলিক ডেটাসেটগুলোর তুলনায় ১১ গুণ বড়—এবং ম্যানুয়াল লেবেলিংয়ের পরিবর্তে ভিশন-ল্যাঙ্গুয়েজ মডেল (VLM) ব্যবহার করে একটি স্বয়ংক্রিয় পাইপলাইন তৈরি করেছি।
এই পাইপলাইনটি যুগল পদ্ধতির মাধ্যমে হাজার হাজার 3D মডেলকে বিভিন্ন কোণ থেকে রেন্ডার করে: একটি টেক্সচারযুক্ত চিত্র (অর্থগত প্রেক্ষাপটের জন্য) এবং একটি অংশ-রঙিন চিত্র (নির্ভুল সীমানা ট্র্যাকিংয়ের জন্য)। উভয়ই একই নম্বরযুক্ত মার্কার দিয়ে ছাপানো থাকে, যা VLM-কে 3D স্পেসে যুক্তি করার এবং প্রতিটি অংশকে ক্লাস্টার ও নামকরণ করার জন্য টেক্সট-ভিত্তিক হ্যান্ডেল প্রদান করে।
আগে প্রকাশিত ডেটাসেটগুলোর মতো, যেখানে যানবাহনের প্রতিটি চাকা কেবল 'wheel' নামে লেবেল করা হতো, আমাদের ডেটাসেট AI-কে স্থানিক পার্থক্য (যেমন 'সামনের বাম চাকা' ও 'পিছনের ডান চাকা' পৃথকভাবে চেনা) শেখায়। এই মিলানোর নির্ভুলতাই গেম ইঞ্জিনগুলো ঠিক এ রকমই চায়।
কি আনলক করে CubePart এবং পরবর্তী কী
CubePart নির্মাতাদের তাদের গেমপ্লে কোডের সাথে মিলিত অ্যাসেট তৈরি করতে এবং বিদ্যমান অ্যানিমেশন, ফিজিক্স এবং স্ক্রিপ্টিং ওয়ার্কফ্লোয়ের সাথে সরাসরি সামঞ্জস্য বজায় রাখতে দেয়। CubePart বিদ্যমান আর্টিস্টদের মেష్গুলোকে একটি নতুন স্কিমাতে ভেঙে দিতে পারে, যা শুধুমাত্র নতুন অ্যাসেট তৈরিতেই নয়, পুরনো অ্যাসেট আপগ্রেড করতেও সহায়ক।
এখনো অনেক কিছু করার বাকি আছে। CubePart কঠিন-দেহ বিচ্ছেদ (rigid-body decomposition) পরিচালনা করে, তবে আমরা জৈব চরিত্র বিকৃতি (organic character deformation) জন্য স্কিনড ভেরটেক্স ওজন (skinned vertex weights) নিয়েও কাজ করছি। ক্রস-পার্ট অ্যাটেনশন (Cross-part attention) ওভারল্যাপ নাটকীয়ভাবে কমায়, তবে তা পুরোপুরি দূর করে না। স্থানীয় যুক্তি-বিচার—"সামনের বাম" বনাম "পিছনের ডান"—এ উন্নতির জন্য এখনও যথেষ্ট সুযোগ রয়েছে।
আমরা স্কিমা-চালিত জেনারেশনকে সেই ধাপ হিসেবে দেখি যা একটি প্ল্যাটফর্মে জেনারেটিভ 3D-কে কার্যকর করে, যেখানে প্রতিটি অ্যাসেট সিমুলেশনে অংশ নেয়। শীঘ্রই, এই প্রযুক্তি Roblox স্টুডিওর ভিতরে সরাসরি Roblox নির্মাতাদের জন্য উপলব্ধ হবে।



