BabylonJS এ Multi-camera ব্যবস্থাপনা একটি শক্তিশালী ফিচার, যা বিভিন্ন ক্যামেরা ব্যবহার করে একই সময়ে 3D দৃশ্যের বিভিন্ন দৃষ্টিকোণ থেকে ভিউ প্রদান করতে সাহায্য করে। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন আপনি 3D অ্যাপ্লিকেশন বা গেমে একাধিক ক্যামেরা ব্যবহারের প্রয়োজন পড়ে, যেমন প্রথম-পাত্র দৃশ্য (first-person view), তৃতীয়-পাত্র দৃশ্য (third-person view), অথবা একটি টপ-ডাউন ভিউ।
BabylonJS এ একাধিক ক্যামেরা পরিচালনা করা সহজ এবং সরল। আপনি একাধিক ক্যামেরা তৈরি করতে পারেন, এবং যেকোনো সময় ক্যামেরার ভিউ পরিবর্তন করতে পারবেন।
Multi-camera ব্যবস্থাপনা
১. ক্যামেরা তৈরি করা
একাধিক ক্যামেরা ব্যবহারের জন্য, প্রথমে আপনাকে বিভিন্ন ধরনের ক্যামেরা তৈরি করতে হবে। একাধিক ক্যামেরা তৈরি করতে, আপনি BABYLON.ArcRotateCamera, BABYLON.FreeCamera, অথবা অন্যান্য ক্যামেরা ব্যবহার করতে পারেন।
উদাহরণ:
// প্রথম ক্যামেরা: ArcRotateCamera
var camera1 = new BABYLON.ArcRotateCamera("camera1", Math.PI / 2, Math.PI / 2, 10, BABYLON.Vector3.Zero(), scene);
camera1.attachControl(canvas, true);
// দ্বিতীয় ক্যামেরা: FreeCamera
var camera2 = new BABYLON.FreeCamera("camera2", new BABYLON.Vector3(0, 5, -10), scene);
camera2.setTarget(BABYLON.Vector3.Zero());
camera2.attachControl(canvas, true);
এখানে, camera1 একটি ArcRotateCamera, যা একটি নির্দিষ্ট পয়েন্ট (যেমন BABYLON.Vector3.Zero()) থেকে দৃশ্যের চারপাশে ঘোরে। camera2 একটি FreeCamera, যা আপনার কীবোর্ড এবং মাউসের মাধ্যমে পুরো দৃশ্যে স্বাধীনভাবে চলাফেরা করতে পারে।
২. ক্যামেরা সোইচ করা
BabylonJS এ একাধিক ক্যামেরা সক্রিয় করার জন্য scene.activeCamera প্রপার্টি ব্যবহার করা হয়। আপনি যেকোনো ক্যামেরাকে সক্রিয় করতে পারেন এবং দৃশ্যের ভিউ পরিবর্তন করতে পারেন।
উদাহরণ:
// প্রথম ক্যামেরা সেট করা
scene.activeCamera = camera1;
// দ্বিতীয় ক্যামেরা সেট করা
scene.activeCamera = camera2;
এটি ক্যামেরা সোইচ করার সহজ উপায়, যেখানে camera1 বা camera2 যে কোন একটি ক্যামেরা অ্যাক্টিভ হবে, এবং দৃশ্যের দৃষ্টিকোণ পরিবর্তিত হবে।
৩. ক্যামেরা সোইচ করার জন্য কীবোর্ড বা মাউস কন্ট্রোল ব্যবহার করা
আপনি ক্যামেরা সোইচ করার জন্য ইউজার ইন্টারফেস বা কীবোর্ড ইনপুটও ব্যবহার করতে পারেন। উদাহরণস্বরূপ, ব্যবহারকারী যদি কোনো বিশেষ কী প্রেস করে, তাহলে ক্যামেরা পরিবর্তন হবে।
উদাহরণ:
window.addEventListener("keydown", function(evt) {
if (evt.key === "1") {
scene.activeCamera = camera1; // ক্যামেরা 1 সক্রিয় হবে
}
if (evt.key === "2") {
scene.activeCamera = camera2; // ক্যামেরা 2 সক্রিয় হবে
}
});
এখানে, ব্যবহারকারী যদি 1 কী প্রেস করে, ক্যামেরা 1 সক্রিয় হবে, এবং যদি 2 প্রেস করে, ক্যামেরা 2 সক্রিয় হবে।
৪. ক্যামেরার ভিউপোর্ট (Viewport) ব্যবহার
কখনও কখনও আপনি চান যে, একাধিক ক্যামেরার দৃশ্য একই সময় প্রদর্শিত হোক। এর জন্য viewport ব্যবহার করা হয়। একটি viewport নির্ধারণ করে আপনি প্রতিটি ক্যামেরার জন্য একটি নির্দিষ্ট অংশে দৃশ্য প্রদর্শন করতে পারেন।
উদাহরণ:
// প্রথম ক্যামেরা সম্পূর্ণ দৃশ্য প্রদর্শন করবে
camera1.viewport = new BABYLON.Viewport(0, 0, 1, 1);
// দ্বিতীয় ক্যামেরা স্ক্রীনের একটি নির্দিষ্ট অংশে দৃশ্য প্রদর্শন করবে
camera2.viewport = new BABYLON.Viewport(0.5, 0, 0.5, 1);
এখানে, প্রথম ক্যামেরা পুরো স্ক্রীন জুড়ে দৃশ্য প্রদর্শন করবে, এবং দ্বিতীয় ক্যামেরা স্ক্রীনের ডান দিকে 50% অংশে দৃশ্য প্রদর্শন করবে।
৫. ক্যামেরার ট্রানজিশন (Transition) ইফেক্ট
কখনও কখনও আপনি চাইবেন ক্যামেরা সোইচ করার সময় একটি মসৃণ ট্রানজিশন বা অ্যানিমেশন তৈরি করতে। এর জন্য আপনি ক্যামেরার ফিল্ড অফ ভিউ (FOV), পজিশন বা টার্গেট পরিবর্তন করতে পারেন।
উদাহরণ:
// ক্যামেরার পজিশন পরিবর্তন করে ট্রানজিশন তৈরি করা
var targetPosition = new BABYLON.Vector3(0, 5, -10);
var animation = new BABYLON.Animation("cameraAnimation", "position", 30, BABYLON.Animation.ANIMATIONTYPE_VECTOR3, BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT);
var keyFrames = [];
keyFrames.push({
frame: 0,
value: camera1.position
});
keyFrames.push({
frame: 100,
value: targetPosition
});
animation.setKeys(keyFrames);
camera1.animations.push(animation);
scene.beginAnimation(camera1, 0, 100, false);
এখানে, camera1 এর পজিশনটি 0 থেকে targetPosition পর্যন্ত মসৃণভাবে পরিবর্তিত হবে, একটি ট্রানজিশন প্রভাব তৈরি করবে।
সারাংশ
BabylonJS এ multi-camera ব্যবস্থাপনা সহজ এবং কার্যকরী। আপনি একাধিক ক্যামেরা তৈরি করতে পারেন এবং বিভিন্ন ক্যামেরার মধ্যে সোইচ করতে পারেন। ক্যামেরার ভিউপোর্ট ব্যবহার করে একাধিক ক্যামেরার দৃশ্য একই সময়ে প্রদর্শন করা সম্ভব, এবং কীবোর্ড বা মাউস ইনপুট ব্যবহার করে ক্যামেরা পরিবর্তন করা যায়। এছাড়া, ক্যামেরার ট্রানজিশন তৈরি করে মসৃণ পরিবর্তন নিশ্চিত করা সম্ভব। এই ফিচারগুলো 3D গেম বা অ্যাপ্লিকেশন ডিজাইন করার জন্য খুবই উপযোগী।