Shadows বা ছায়া তৈরি করা 3D গ্রাফিক্সের একটি গুরুত্বপূর্ণ অংশ, যা একটি দৃশ্যকে আরও বাস্তবসম্মত এবং গভীর দেখায়। BabylonJS-এ Soft Shadows এবং Cascaded Shadow Maps (CSM) ব্যবহার করে আপনি আরও উন্নত এবং প্রাকৃতিক শ্যাডো ইফেক্ট তৈরি করতে পারবেন। চলুন, এই দুটি বৈশিষ্ট্য এবং তাদের ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করা যাক।
১. Soft Shadows
Soft Shadows এমন শ্যাডো যেগুলি সোজা এবং শক্ত নয়, বরং ধীরে ধীরে মৃদু হয়ে যায়। এগুলি বাস্তব জীবনে যেমন দেখা যায়, তেমন প্রাকৃতিক। মূলত, শ্যাডো প্যাকিং ও ব্লারিং ব্যবহার করে এই প্রভাব তৈরি করা হয়।
Soft Shadows তৈরির পদ্ধতি:
BabylonJS-এ Soft Shadows তৈরি করতে ShadowGenerator ব্যবহার করা হয়, যার মাধ্যমে শ্যাডোকে ধীরে ধীরে মৃদু এবং বাস্তবসম্মত করা হয়।
কোড উদাহরণ:
var scene = new BABYLON.Scene(engine);
// ক্যামেরা তৈরি করা
var camera = new BABYLON.ArcRotateCamera("camera1", Math.PI / 2, Math.PI / 2, 10, BABYLON.Vector3.Zero(), scene);
camera.attachControl(canvas, true);
// আলোর উৎস তৈরি করা
var light = new BABYLON.HemisphericLight("light1", BABYLON.Vector3.Up(), scene);
// বক্স তৈরি করা
var box = BABYLON.MeshBuilder.CreateBox("box", {size: 2}, scene);
box.position.y = 1;
// শ্যাডো জেনারেটর তৈরি করা
var shadowGenerator = new BABYLON.ShadowGenerator(1024, light);
// বক্সের শ্যাডো সেট করা
shadowGenerator.addShadowCaster(box);
box.receiveShadows = true;
// শ্যাডোর ধরণ: Soft Shadows
shadowGenerator.usePoissonSampling = true; // Soft Shadows তৈরি করতে Poisson Sampling ব্যবহার করা
// দৃশ্য রেন্ডার করা
engine.runRenderLoop(function () {
scene.render();
});
কোডের ব্যাখ্যা:
- Poisson Sampling:
shadowGenerator.usePoissonSampling = true;দিয়ে soft shadows তৈরি করা হয়েছে, যা শ্যাডোর প্রান্তগুলোকে আরও মৃদু এবং প্রাকৃতিক করে। - Shadow Generator:
ShadowGeneratorব্যবহার করা হয়েছে যাতে আলো থেকে ছায়া তৈরি করা যায় এবং তা বক্সের ওপর প্রয়োগ করা হয়।
এটি একটি সাধারণ উদাহরণ যেখানে শ্যাডো প্রান্তগুলো নরম এবং বাস্তবসম্মতভাবে প্রভাবিত হবে।
২. Cascaded Shadow Maps (CSM)
Cascaded Shadow Maps (CSM) হল একটি উন্নত প্রযুক্তি যা Shadow Maps ব্যবহার করে বৃহৎ দৃশ্যে বেশি বাস্তবসম্মত এবং স্পষ্ট শ্যাডো তৈরি করতে সাহায্য করে। CSM প্রযুক্তি মূলত বিভিন্ন দূরত্বে বিভিন্ন শ্যাডো রেজোলিউশন ব্যবহার করে, যাতে কাছের অবজেক্টগুলির শ্যাডো স্পষ্ট এবং দূরের অবজেক্টগুলির শ্যাডো আরও সস্তা এবং কম রেজোলিউশন থাকে। এটি বড় দৃশ্যে ব্যবহৃত হয়, যেখানে বেশিরভাগ শ্যাডো একটানা এবং বাস্তবসম্মতভাবে প্রদর্শিত হতে হবে।
CSM ব্যবহারের পদ্ধতি:
BabylonJS-এ CSM ব্যবহারের জন্য CascadedShadowGenerator ব্যবহার করা হয়। এটি আলোর উৎসের কাছে স্পষ্ট এবং দূরে মৃদু শ্যাডো তৈরি করতে সাহায্য করে।
কোড উদাহরণ:
var scene = new BABYLON.Scene(engine);
// ক্যামেরা তৈরি করা
var camera = new BABYLON.ArcRotateCamera("camera1", Math.PI / 2, Math.PI / 2, 10, BABYLON.Vector3.Zero(), scene);
camera.attachControl(canvas, true);
// আলোর উৎস তৈরি করা (ডিরেকশনাল লাইট)
var light = new BABYLON.DirectionalLight("light1", new BABYLON.Vector3(0, -1, 0), scene);
light.position = new BABYLON.Vector3(0, 10, 0);
// শ্যাডো জেনারেটর তৈরি করা (Cascaded Shadows)
var shadowGenerator = new BABYLON.CascadedShadowGenerator(1024, light);
// ক্যাসকেডেড শ্যাডোর জন্য ৩টি কেস সেট করা
shadowGenerator.lambda = 0.5; // উচ্চতর মানে ক্যাসকেডের সংখ্যা বাড়বে
shadowGenerator.depthScale = 5000;
shadowGenerator.bias = 0.0001;
// একটি বক্স তৈরি করা
var box = BABYLON.MeshBuilder.CreateBox("box", {size: 2}, scene);
box.position.y = 1;
// বক্সে শ্যাডো প্রয়োগ করা
shadowGenerator.addShadowCaster(box);
box.receiveShadows = true;
// দৃশ্য রেন্ডার করা
engine.runRenderLoop(function () {
scene.render();
});
কোডের ব্যাখ্যা:
- CascadedShadowGenerator:
CascadedShadowGeneratorব্যবহার করা হয়েছে, যা Cascaded Shadow Maps (CSM) প্রযুক্তি ব্যবহার করে আলোর উৎসের কাছের শ্যাডো পরিষ্কার এবং দূরের শ্যাডো মৃদু করে। - Light: এখানে DirectionalLight ব্যবহার করা হয়েছে যা একদিক থেকে আলো পাঠায় এবং পুরো দৃশ্যের জন্য শ্যাডো তৈরি করে।
- lambda:
lambda = 0.5মানের মাধ্যমে শ্যাডোর রেজোলিউশন নিয়ন্ত্রণ করা হয়, যাতে কাছের এবং দূরের শ্যাডো যথাযথভাবে সম্পাদিত হয়।
এটি CSM প্রযুক্তি ব্যবহারের একটি উদাহরণ, যা বৃহৎ দৃশ্যে বা উঁচু-নিচু অবজেক্টের শ্যাডো তৈরি করতে উপকারী।
সারাংশ
এই গাইডে, আমরা শিখলাম কিভাবে Soft Shadows এবং Cascaded Shadow Maps (CSM) তৈরি করা যায় BabylonJS-এ।
- Soft Shadows: Poisson Sampling প্রযুক্তি ব্যবহার করে শ্যাডো প্রান্ত মৃদু এবং বাস্তবসম্মত করা হয়।
- Cascaded Shadow Maps (CSM): বড় দৃশ্যের জন্য CascadedShadowGenerator ব্যবহার করে শ্যাডোর রেজোলিউশন নিয়ন্ত্রণ করা হয়, যেখানে কাছের শ্যাডো স্পষ্ট এবং দূরের শ্যাডো কম রেজোলিউশন থাকে।
এই প্রযুক্তিগুলি ব্যবহারে, আপনি আপনার 3D দৃশ্যগুলিতে আরো উন্নত এবং বাস্তবসম্মত শ্যাডো ইফেক্টস তৈরি করতে পারবেন।
Read more