Mirror Texture বা প্রতিফলন টেক্সচার হল একটি বিশেষ ধরনের টেক্সচার যা একটি দৃশ্যের প্রতিফলন তৈরি করতে ব্যবহৃত হয়। এটি সাধারণত জল, গ্লাস, বা অন্য কোনো প্রতিফলনযোগ্য পৃষ্ঠের জন্য ব্যবহৃত হয়, যেখানে অবজেক্টগুলি প্রতিফলিত হয়। BabylonJS-এ Mirror Texture ব্যবহার করে খুব সহজেই একটি বাস্তবসম্মত প্রতিফলন তৈরি করা যায়।
Mirror Texture কী?
Mirror Texture হল একটি বিশেষ ধরনের টেক্সচার যা 3D দৃশ্যে কোন একটি পৃষ্ঠের উপর আলোর প্রতিফলন বা অবজেক্টের প্রতিফলন প্রদর্শন করতে ব্যবহৃত হয়। এটি মূলত একটি render target texture, যেখানে একটি দৃশ্য রেন্ডার করা হয় এবং সেই দৃশ্যকে একটি পৃষ্ঠে প্রতিফলিত করা হয়। উদাহরণস্বরূপ, আপনি একটি জলাধার তৈরি করতে পারেন যেখানে পানির পৃষ্ঠে আশেপাশের দৃশ্যের প্রতিফলন দেখা যাবে।
Mirror Texture ব্যবহার করে রিফ্লেকশন তৈরি
BabylonJS-এ Mirror Texture ব্যবহার করতে হলে, আপনাকে একটি Mirror Texture তৈরি করতে হবে এবং তারপর সেটিকে একটি মেটেরিয়ালের সাথে অ্যাপ্লাই করতে হবে যা সেই মেটেরিয়ালটি প্রতিফলনযোগ্য।
উদাহরণ: Mirror Texture দিয়ে রিফ্লেকশন তৈরি
// Canvas এলিমেন্টটি পেতে
var canvas = document.getElementById("renderCanvas");
// BabylonJS ইঞ্জিন তৈরি করা
var engine = new BABYLON.Engine(canvas, true);
// দৃশ্য তৈরি করা
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);
// Mirror Texture তৈরি করা
var mirrorTexture = new BABYLON.MirrorTexture("mirror", 1024, scene, true);
// মেটেরিয়াল তৈরি করা এবং প্রতিফলন যোগ করা
var material = new BABYLON.StandardMaterial("mirrorMat", scene);
material.reflectionTexture = mirrorTexture; // Mirror Texture অ্যাপ্লাই করা
material.reflectionTexture.level = 1.0; // প্রতিফলনের ক্ষমতা নির্ধারণ করা
// একটি প্লেন তৈরি করা
var plane = BABYLON.MeshBuilder.CreatePlane("plane", {size: 10}, scene);
plane.material = material; // প্লেনে মেটেরিয়াল অ্যাপ্লাই করা
plane.position.y = -2; // প্লেনটির অবস্থান নিচে সেট করা
// একটি বক্স তৈরি করা
var box = BABYLON.MeshBuilder.CreateBox("box", {size: 2}, scene);
box.position.y = 2; // বক্সটির অবস্থান উপরে সেট করা
// ক্যামেরা ফোকাসে বক্স এবং প্লেন উভয়ই থাকবে
camera.target = box.position;
// Mirror Texture রেন্ডার করা
mirrorTexture.renderList.push(box); // বক্সটি মিরর টেক্সচারে অন্তর্ভুক্ত করা
// দৃশ্যে এনিমেশন শুরু করা
engine.runRenderLoop(function () {
scene.render();
});
// ব্রাউজারের আকার পরিবর্তন হলে আউটপুট রিসাইজ করা
window.addEventListener("resize", function () {
engine.resize();
});
কোডের ব্যাখ্যা:
- MirrorTexture তৈরি করা:
BABYLON.MirrorTextureক্লাস ব্যবহার করে একটি মিরর টেক্সচার তৈরি করা হয়েছে। এখানে1024হল টেক্সচারের রেজোলিউশন এবংtrueমানে হচ্ছে টেক্সচারটি কিউবিক রিফ্লেকশন (cube reflection) সহ তৈরি হবে। - মেটেরিয়াল অ্যাপ্লাই করা:
StandardMaterialক্লাস ব্যবহার করে একটি সাধারণ মেটেরিয়াল তৈরি করা হয়েছে এবং সেই মেটেরিয়ালেreflectionTextureপ্রপার্টি দিয়ে মিরর টেক্সচারটি অ্যাপ্লাই করা হয়েছে। এটি প্লেনের উপর প্রতিফলন দেখাবে। - ফোকাস এবং রেন্ডার তালিকা:
mirrorTexture.renderList.push(box)ব্যবহার করে আমরা বক্সটিকে মিরর টেক্সচারের রেন্ডার তালিকায় যোগ করেছি, যাতে বক্সটির প্রতিফলন প্লেনের উপর প্রদর্শিত হয়।
Mirror Texture এর আরো বৈশিষ্ট্য
১. Reflection Level:
Mirror Texture-এ reflection level প্রপার্টি ব্যবহার করে আপনি প্রতিফলনের গা dark ়তা বা উজ্জ্বলতা নিয়ন্ত্রণ করতে পারেন। এর মান 0 থেকে 1 এর মধ্যে হতে পারে।
material.reflectionTexture.level = 0.5; // আংশিক প্রতিফলন
২. Render Quality:
Mirror Texture এর রেন্ডার কোয়ালিটি নিয়ন্ত্রণ করার জন্য renderSize প্রপার্টি ব্যবহার করতে পারেন। এটি বড় মানে উচ্চ মানের প্রতিফলন প্রদান করবে কিন্তু সিস্টেমের ওপর বেশি চাপ পড়বে।
mirrorTexture.renderSize = 2048; // উচ্চ মানের রিফ্লেকশন
৩. Cube Map Reflection:
Mirror Texture দ্বারা কিউব ম্যাপ প্রতিফলনও তৈরি করা যায়, যা আরো উন্নত রিফ্লেকশন তৈরি করতে ব্যবহৃত হয়। এটি ত্রিমাত্রিক (3D) দৃশ্যে একটি পূর্ণাঙ্গ প্রতিফলন প্রদান করে।
var mirrorTexture = new BABYLON.MirrorTexture("mirror", 1024, scene, false);
এখানে false মানে একটি সাধারণ প্লেন থেকে রিফ্লেকশন হবে, কিন্তু যদি true হয়, তাহলে এটি কিউবিক রিফ্লেকশন তৈরি করবে।
সারাংশ
BabylonJS-এ Mirror Texture ব্যবহার করে সহজে দৃশ্যের প্রতিফলন তৈরি করা যায়, যা 3D গেম বা ভিজ্যুয়ালাইজেশন প্রজেক্টে বাস্তবসম্মত দৃশ্য তৈরি করতে সাহায্য করে। Mirror Texture তৈরি এবং সেটির সাথে প্রতিফলন যুক্ত করার মাধ্যমে, আপনি গ্লাস, জল, বা অন্য কোনো রিফ্লেকটিভ পৃষ্ঠ তৈরি করতে পারবেন। এতে আপনি রিফ্লেকশন এর গুণমান, ক্ষমতা এবং অন্যান্য বৈশিষ্ট্য কাস্টমাইজ করতে পারেন।
Read more