BabylonJS একটি শক্তিশালী 3D গ্রাফিক্স ইঞ্জিন, যা বিভিন্ন 3D ফাইল ফরম্যাট যেমন OBJ, STL, এবং GLTF/GLB সমর্থন করে। এই ফাইল ফরম্যাটগুলি 3D মডেল তৈরি এবং আমদানির জন্য খুবই জনপ্রিয় এবং সহজেই ব্যবহৃত হয়। BabylonJS এ এই ফরম্যাটগুলো আমদানি করা সহজ, যা আপনাকে আপনার 3D প্রজেক্টে কাস্টম মডেল ব্যবহার করতে সাহায্য করে।
৩D মডেল ফরম্যাট
১. OBJ ফরম্যাট
OBJ একটি সাধারণ 3D মডেল ফরম্যাট যা মূলত 3D জ্যামিতি (vertices, edges, faces) ধারণ করে। এটি বেশিরভাগ 3D মডেলিং সফটওয়্যার দ্বারা এক্সপোর্ট করা হয়। তবে, এটি কেবল মডেলিং তথ্য প্রদান করে, টেক্সচার এবং ম্যাটেরিয়াল ফাইল আলাদা রাখে (সাধারণত .mtl ফরম্যাটে)।
২. STL ফরম্যাট
STL (STereoLithography) একটি জনপ্রিয় 3D প্রিন্টিং ফরম্যাট যা 3D মডেলের জ্যামিতি সংরক্ষণ করে। এটি সাধারণত 3D প্রিন্টিং উদ্দেশ্যে ব্যবহৃত হয় এবং এটি টেক্সচার বা ম্যাটেরিয়াল ধারণ করে না, শুধুমাত্র মডেলের পৃষ্ঠের তথ্য রাখে।
৩. GLTF/GLB ফরম্যাট
GLTF (GL Transmission Format) একটি অত্যন্ত জনপ্রিয় এবং আধুনিক 3D ফাইল ফরম্যাট। এটি 3D মডেল, টেক্সচার, অ্যানিমেশন, ম্যাটেরিয়াল এবং অন্যান্য উপাদান একটি মাত্র ফাইলে সংরক্ষণ করে। GLB হলো GLTF-এর বাইনারি ভার্সন। GLTF/GLB ফরম্যাটের সুবিধা হলো এটি দ্রুত লোড হয় এবং ওয়েব অ্যাপ্লিকেশনগুলিতে খুবই কার্যকরী।
BabylonJS এ 3D মডেল আমদানি
BabylonJS তে এই ফরম্যাটগুলির মধ্যে 3D মডেল আমদানির জন্য বিভিন্ন API এবং প্লাগইন ব্যবহার করা যেতে পারে।
১. OBJ ফরম্যাটে মডেল আমদানি
OBJ ফরম্যাটে মডেল আমদানির জন্য আপনি BABYLON.SceneLoader.ImportMesh() ফাংশন ব্যবহার করতে পারেন।
উদাহরণ:
BABYLON.SceneLoader.ImportMesh("", "path/to/obj/", "model.obj", scene, function(meshes) {
// মডেল লোড হওয়ার পর এখানে কোড লিখুন
var objMesh = meshes[0]; // প্রথম মডেলটি ধরে নেয়া
objMesh.position = new BABYLON.Vector3(0, 0, 0); // পজিশন সেট করা
});
এখানে "path/to/obj/" হল আপনার OBJ ফাইলের অবস্থান, এবং "model.obj" হচ্ছে আপনার OBJ ফাইলের নাম।
২. STL ফরম্যাটে মডেল আমদানি
STL ফরম্যাটে মডেল আমদানি করতে, BabylonJS সরাসরি SceneLoader এর মাধ্যমে STL ফাইল লোড করতে পারে না। তবে, আপনি STLLoader প্লাগইন ব্যবহার করতে পারেন। STL ফাইল লোড করার জন্য প্রথমে এই প্লাগইনটি যোগ করতে হবে।
উদাহরণ:
<script src="https://cdn.babylonjs.com/stlLoader.js"></script>
এরপর আপনি এই কোড ব্যবহার করে STL ফাইল লোড করতে পারবেন:
BABYLON.SceneLoader.ImportMesh("", "path/to/stl/", "model.stl", scene, function(meshes) {
var stlMesh = meshes[0]; // মডেলটিকে meshes থেকে নেয়া
stlMesh.position = new BABYLON.Vector3(0, 0, 0); // পজিশন সেট করা
});
এখানে "path/to/stl/" হল STL ফাইলের অবস্থান এবং "model.stl" হচ্ছে STL ফাইলের নাম।
৩. GLTF/GLB ফরম্যাটে মডেল আমদানি
GLTF এবং GLB ফরম্যাটে মডেল আমদানি করা সবচেয়ে সহজ এবং দ্রুত। BabylonJS এ GLTF/GLB ফাইল লোড করতে SceneLoader.ImportMesh() ব্যবহার করা হয়, তবে GLTF এর জন্য এটি আরো সহজ।
উদাহরণ:
BABYLON.SceneLoader.ImportMesh("", "path/to/gltf/", "model.gltf", scene, function(meshes) {
var gltfMesh = meshes[0]; // GLTF মডেলটি meshes থেকে নেয়া
gltfMesh.position = new BABYLON.Vector3(0, 0, 0); // পজিশন সেট করা
});
এখানে "path/to/gltf/" হল GLTF ফাইলের অবস্থান এবং "model.gltf" হচ্ছে GLTF ফাইলের নাম।
GLB ফরম্যাট জন্য একইভাবে কোড ব্যবহার করা যায়, শুধু ফাইল এক্সটেনশনটি .glb হবে।
BABYLON.SceneLoader.ImportMesh("", "path/to/glb/", "model.glb", scene, function(meshes) {
var glbMesh = meshes[0]; // GLB মডেলটি meshes থেকে নেয়া
glbMesh.position = new BABYLON.Vector3(0, 0, 0); // পজিশন সেট করা
});
৪. 3D মডেল লোডিং এর পর কাজ করা
একবার আপনি মডেল লোড করে নিলেই, তার উপর বিভিন্ন কাজ করতে পারেন, যেমন:
- পজিশন এবং রোটেশন: মডেলের অবস্থান এবং ঘূর্ণন পরিবর্তন করা।
model.position = new BABYLON.Vector3(0, 2, 0); // Y অক্ষে 2 ইউনিট উপরে স্থানান্তরিত করা
model.rotation = new BABYLON.Vector3(0, Math.PI / 2, 0); // Y অক্ষে 90° ঘুরানো
- টেক্সচারিং এবং ম্যাটেরিয়াল: মডেলটির জন্য নতুন টেক্সচার বা ম্যাটেরিয়াল অ্যাপ্লাই করা।
var material = new BABYLON.StandardMaterial("mat", scene);
material.diffuseTexture = new BABYLON.Texture("path/to/texture.jpg", scene);
model.material = material; // মডেলের উপর টেক্সচার প্রয়োগ করা
সারাংশ
BabylonJS এ OBJ, STL, এবং GLTF/GLB ফরম্যাটে 3D মডেল আমদানি করা সম্ভব এবং এই প্রক্রিয়াটি খুবই সহজ। আপনি SceneLoader.ImportMesh() ব্যবহার করে এই ফরম্যাটগুলির মডেল লোড করতে পারেন এবং তারপর সেগুলি পজিশন, রোটেশন, টেক্সচারিং ইত্যাদি কাস্টমাইজ করতে পারেন। GLTF/GLB ফরম্যাটটি আধুনিক 3D মডেলিং ফরম্যাট হিসেবে বিশেষভাবে জনপ্রিয় এবং এটি দ্রুত লোড হয়, যা ওয়েব অ্যাপ্লিকেশনে ব্যবহার করার জন্য আদর্শ।
Read more