PBR (Physically Based Rendering) Material গাইড ও নোট

Web Development - ব্যাবিলনজেএস (BabylonJS) - Textures এবং Materials
279

PBR (Physically Based Rendering) হল একটি শেডিং এবং রেন্ডারিং প্রযুক্তি যা বাস্তব পৃথিবীর আলো এবং পদার্থবিদ্যার নিয়ম অনুসরণ করে অবজেক্টের গ্রাফিক্স তৈরি করে। এটি একটি বাস্তবসম্মত এবং প্রাকৃতিক চেহারা তৈরির জন্য ব্যবহৃত হয়, বিশেষ করে 3D গেম, সিনেমা এবং ভিজ্যুয়ালাইজেশন প্রজেক্টে। BabylonJS PBR মেটেরিয়ালস ব্যবহার করে 3D দৃশ্যে অধিক বাস্তবসম্মত আলো এবং শ্যাডো প্রতিফলন তৈরি করতে সহায়তা করে।


PBR Material এর বৈশিষ্ট্য

PBR মেটেরিয়ালস ব্যবহার করে আপনি 3D অবজেক্টের আলোর প্রতিফলন, গভীরতা এবং পৃষ্ঠের টেক্সচারসহ একটি অত্যন্ত বাস্তবসম্মত চেহারা তৈরি করতে পারেন। PBR সাধারণত দুইটি গুরুত্বপূর্ণ মেটেরিয়াল বৈশিষ্ট্যকে ফোকাস করে:

  1. Diffuse/Albedo: একটি অবজেক্টের রঙ বা মূল টেক্সচার।
  2. Specular/Metallic: আলোর প্রতিফলন এবং অবজেক্টের মেটালিক কোঅফিসিয়েন্ট। এটি পৃষ্ঠের গুণাবলী যেমন মেটালিক, প্লাস্টিক বা গ্লাসের মতো পদার্থের বিশেষত্ব নির্ধারণ করে।

প্রধান বৈশিষ্ট্য:

  • Base color: অবজেক্টের মৌলিক রঙ
  • Metallic: কি পরিমাণ মেটালিক সমগ্র অবজেক্টের মধ্যে থাকবে
  • Roughness: পৃষ্ঠের মসৃণতা বা খসখসে ভাব
  • Ambient Occlusion: পৃষ্ঠের ছায়া এবং আলো নিয়ে একটি নির্দিষ্ট প্রতিফলন
  • Normal map: অবজেক্টের পৃষ্ঠের অদৃশ্য বক্রতা নির্দেশ করে

PBR Material তৈরি করা

BabylonJS-এ PBR মেটেরিয়াল তৈরি করতে PBRMaterial ক্লাস ব্যবহার করা হয়। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে PBR মেটেরিয়াল ব্যবহার করে একটি বক্স তৈরি করা হয়েছে।

উদাহরণ: PBR Material দিয়ে বক্স তৈরি করা

// 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);

// PBR মেটেরিয়াল তৈরি করা
var pbr = new BABYLON.PBRMaterial("pbr", scene);

// PBR মেটেরিয়ালের রঙ এবং অন্যান্য বৈশিষ্ট্য সেট করা
pbr.albedoColor = new BABYLON.Color3(1, 0, 0); // লাল রঙ
pbr.metallic = 0.5; // মেটালিক বৈশিষ্ট্য
pbr.roughness = 0.4; // খসখসে বৈশিষ্ট্য

// বক্স তৈরি করা
var box = BABYLON.MeshBuilder.CreateBox("box", {size: 2}, scene);
box.material = pbr; // পব্র মেটেরিয়াল বক্সে অ্যাপ্লাই করা

// দৃশ্যে এনিমেশন শুরু করা
engine.runRenderLoop(function () {
    scene.render();
});

// ব্রাউজারের আকার পরিবর্তন হলে আউটপুট রিসাইজ করা
window.addEventListener("resize", function () {
    engine.resize();
});

কোডের ব্যাখ্যা:

  • PBRMaterial: BABYLON.PBRMaterial ক্লাসটি ব্যবহার করে PBR মেটেরিয়াল তৈরি করা হয়েছে।
  • albedoColor: এটি অবজেক্টের বেস কালার বা আলবেডো রঙ সেট করতে ব্যবহৃত হয়।
  • metallic: মেটালিক মান 0 থেকে 1 পর্যন্ত হতে পারে, যেখানে 0 হল নন-মেটালিক এবং 1 হল পুরোপুরি মেটালিক।
  • roughness: এটি অবজেক্টের পৃষ্ঠের খসখসে ভাব নির্দেশ করে। 0 মানে সম্পূর্ণ মসৃণ, 1 মানে খসখসে।

PBR Material এর অন্যান্য বৈশিষ্ট্য

১. Roughness and Metallic

roughness এবং metallic PBR মেটেরিয়ালের মূল উপাদান। এগুলি অবজেক্টের পৃষ্ঠের খসখসে ভাব এবং মেটালিক গুণাবলী নিয়ন্ত্রণ করে।

pbr.roughness = 0.5; // মাঝারি খসখসে
pbr.metallic = 0.9; // অধিক মেটালিক

২. Normal Maps

Normal Maps ব্যবহার করে আপনি পৃষ্ঠের ছোট ছোট বিবরণ বা বক্রতা সৃষ্টি করতে পারেন। এটি অবজেক্টের টেক্সচারকে আরও বাস্তবসম্মত এবং বিস্তারিত করে তোলে।

pbr.bumpTexture = new BABYLON.Texture("path_to_normal_map.jpg", scene);

৩. Ambient Occlusion (AO)

Ambient Occlusion (AO) হল একটি টেক্সচার যা অবজেক্টের ছায়া এবং আলো নিয়ন্ত্রণ করে। এটি দৃশ্যের গভীরতা এবং রিয়েলিজম বাড়ায়।

pbr.ambientTexture = new BABYLON.Texture("path_to_ao_map.jpg", scene);

৪. Emissive Texture

Emissive Texture অবজেক্টের আলোকিত অংশ তৈরি করতে ব্যবহৃত হয়। এটি আপনার 3D অবজেক্টকে আলো প্রদান করতে সহায়তা করে।

pbr.emissiveColor = new BABYLON.Color3(1, 1, 1); // সাদা আলো

PBR Material এর সাথে সম্পূর্ণ উদাহরণ

// 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);

// PBR মেটেরিয়াল তৈরি করা
var pbr = new BABYLON.PBRMaterial("pbr", scene);

// PBR মেটেরিয়ালের বৈশিষ্ট্য সেট করা
pbr.albedoColor = new BABYLON.Color3(0.2, 0.6, 1); // নীল রঙ
pbr.metallic = 0.7; // কিছুটা মেটালিক
pbr.roughness = 0.3; // মসৃণ পৃষ্ঠ
pbr.bumpTexture = new BABYLON.Texture("path_to_normal_map.jpg", scene); // নরমাল ম্যাপ
pbr.ambientTexture = new BABYLON.Texture("path_to_ao_map.jpg", scene); // AO টেক্সচার

// বক্স তৈরি করা
var box = BABYLON.MeshBuilder.CreateBox("box", {size: 2}, scene);
box.material = pbr; // পব্র মেটেরিয়াল বক্সে অ্যাপ্লাই করা

// দৃশ্যে এনিমেশন শুরু করা
engine.runRenderLoop(function () {
    scene.render();
});

// ব্রাউজারের আকার পরিবর্তন হলে আউটপুট রিসাইজ করা
window.addEventListener("resize", function () {
    engine.resize();
});

কোডের ব্যাখ্যা:

  • এখানে আমরা একটি PBR মেটেরিয়াল তৈরি করেছি যেখানে আলবেডো রঙ, মেটালিক বৈশিষ্ট্য, রoughness, নরমাল ম্যাপ এবং AO টেক্সচার অ্যাপ্লাই করা হয়েছে।
  • পৃষ্ঠের বিস্তারিত এবং বাস্তবসম্মতভাবে আলোর প্রতিফলন তৈরি করা হয়েছে।

সারাংশ

PBR (Physically Based Rendering) হল একটি অত্যাধুনিক প্রযুক্তি যা 3D গ্রাফিক্সের জন্য অত্যন্ত বাস্তবসম্মত আলো, শ্যাডো এবং পৃষ্ঠের টেক্সচার তৈরি করতে ব্যবহৃত হয়। BabylonJS PBR মেটেরিয়াল ব্যবহার করে আপনি 3D অবজেক্টের আলো, প্রতিফলন, গভীরতা এবং গুণমান উন্নত করতে পারেন। এটি গ্রাফিক্স এবং গেম ডেভেলপমেন্টের জন্য একটি শক্তিশালী টুল, যা বাস্তবসম্মত অভিজ্ঞতা প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...