Three.js: একটি পরিচিতি
Three.js হল একটি শক্তিশালী JavaScript লাইব্রেরি যা 3D গ্রাফিক্স তৈরি এবং প্রদর্শন করার জন্য ব্যবহৃত হয়, বিশেষ করে ওয়েব ব্রাউজারে WebGL (Web Graphics Library) এর মাধ্যমে। এটি 3D গ্রাফিক্স তৈরির প্রক্রিয়া সহজ করে তোলে এবং ডেভেলপারদের কম্পিউটার গ্রাফিক্স, এনিমেশন, এবং ভিজ্যুয়ালাইজেশনের জন্য আরও সরল উপায় প্রদান করে। Three.js ব্যবহার করে আপনি ওয়েব অ্যাপ্লিকেশনে 3D মডেল, গ্রাফিক্স, এনিমেশন এবং সিমুলেশন তৈরি করতে পারেন।
Three.js এর অন্যান্য Extensions এবং Utilities
Three.js তার স্ট্যান্ডার্ড লাইব্রেরি ছাড়াও বিভিন্ন extensions এবং utilities সরবরাহ করে যা গ্রাফিক্স ডেভেলপমেন্ট আরও দ্রুত এবং কার্যকরী করতে সহায়তা করে। এই এক্সটেনশনগুলির মধ্যে বিভিন্ন গ্রাফিক্স ইফেক্ট, 3D মডেল লোডিং, শেডার এবং আরও অনেক কিছু অন্তর্ভুক্ত রয়েছে।
১. Three.js Extras
Three.js Extras একটি অ্যাডিশনাল প্যাকেজ যা Three.js এর জন্য কিছু অতিরিক্ত ইউটিলিটি এবং ফাংশনালিটি প্রদান করে। এতে কিছু নতুন জ্যামেট্রি, মেটিরিয়াল, লাইট এবং ক্যামেরা সহ বিভিন্ন ফিচার অন্তর্ভুক্ত থাকে।
উদাহরণ:
import * as THREE from 'three';
import { OrbitControls } from 'three/examples/js/controls/OrbitControls';
let scene = new THREE.Scene();
let camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
let renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// Add OrbitControls
let controls = new OrbitControls(camera, renderer.domElement);
// Render Loop
function animate() {
requestAnimationFrame(animate);
controls.update();
renderer.render(scene, camera);
}
animate();
এই উদাহরণে, OrbitControls ব্যবহার করা হয়েছে যা একটি ইউটিলিটি ক্লাস হিসেবে কাজ করে এবং 3D দৃশ্যের মাধ্যমে ক্যামেরা মোভমেন্ট কন্ট্রোল করতে সাহায্য করে।
২. Three.js Shaders
Shaders হল প্রোগ্রাম যা গ্রাফিক্স হার্ডওয়্যারের মাধ্যমে চিত্র তৈরি বা পরিবর্তন করে। Three.js এর সাথে শেডার ব্যবহারের জন্য বিভিন্ন ধরনের custom shaders তৈরি করা যেতে পারে। এই শেডারগুলি GLSL (OpenGL Shading Language) তে লেখা হয় এবং গতি ও গ্রাফিক্সের কমপ্লেক্সিটি বাড়াতে ব্যবহৃত হয়।
Three.js-এ সাধারণত দুটি ধরনের শেডার ব্যবহার করা হয়:
- Vertex Shader: পয়েন্টগুলি বা পলিগনগুলির অবস্থান গণনা করে।
- Fragment Shader: পিক্সেলের রঙ, উজ্জ্বলতা বা অন্য গ্রাফিক্যাল অ্যাট্রিবিউট গুলি নির্ধারণ করে।
উদাহরণ:
const vertexShader = `
void main() {
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
`;
const fragmentShader = `
void main() {
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); // Red color
}
`;
const material = new THREE.ShaderMaterial({
vertexShader,
fragmentShader
});
এই কোডে, Vertex Shader এবং Fragment Shader তৈরি করা হয়েছে যা একটি Red মেটিরিয়াল তৈরি করবে।
৩. Three.js Loaders
Three.js এ বিভিন্ন 3D ফাইল ফরম্যাট যেমন .obj, .glTF, .fbx ইত্যাদি লোড করতে Loaders ব্যবহার করা হয়। বিভিন্ন ধরনের 3D ফাইল লোড করার জন্য Three.js এ লোডার ক্লাস রয়েছে।
উদাহরণ:
const loader = new THREE.GLTFLoader();
loader.load(
'model.glb', // model path
(gltf) => {
scene.add(gltf.scene);
},
(xhr) => {
console.log((xhr.loaded / xhr.total) * 100 + '% loaded');
},
(error) => {
console.error('Error loading model', error);
}
);
এখানে, GLTFLoader ব্যবহার করা হয়েছে যা .glb ফাইল ফরম্যাটের 3D মডেল লোড করবে এবং সেগুলি থ্রি.জেএস দৃশ্য (scene) এ যুক্ত করবে।
৪. Three.js Post-processing Effects
Three.js-এ Post-processing ইফেক্টগুলো ব্যবহার করা হয় যাতে আপনার 3D দৃশ্যে ফিল্টার এবং ইফেক্ট যোগ করা যায়। এই ফিচারটি জটিল গ্রাফিক্যাল ইফেক্ট যেমন ব্লার, ভিনেটিং, ডিপথ অফ ফিল্ড ইত্যাদি প্রয়োগ করার জন্য ব্যবহার হয়।
Three.js-এর EffectComposer এবং ShaderPass ব্যবহার করে পোস্ট-প্রসেসিং ইফেক্ট যোগ করা সম্ভব।
উদাহরণ:
const composer = new THREE.EffectComposer(renderer);
composer.addPass(new THREE.RenderPass(scene, camera));
const bloomPass = new THREE.BloomPass(1.25, 25, 4.0, 256);
composer.addPass(bloomPass);
function animate() {
requestAnimationFrame(animate);
composer.render();
}
animate();
এখানে, BloomPass পোস্ট-প্রসেসিং ইফেক্ট যোগ করা হয়েছে যা স্লাইটলি ঝকঝকে বা ব্লুমিং ইফেক্ট তৈরি করবে।
৫. Three.js Examples
Three.js একটি Examples ফোল্ডারও সরবরাহ করে, যেখানে নানা ধরনের প্রস্তুত তৈরিকৃত মডেল, শেডার এবং লোডার ডেমো পাওয়া যায়। এগুলি খুবই কার্যকরী হতে পারে যখন আপনি নতুন নতুন ইফেক্ট বা অপটিমাইজেশন শিখতে চান।
এখানে কিছু সাধারণ Three.js Examples রয়েছে:
- Particle Systems
- Lighting Models
- 3D Text Rendering
- Physics Simulations
এগুলি ব্যবহার করে আপনি দ্রুত নতুন ধারণা শিখতে পারেন এবং আপনার প্রোজেক্টে প্রয়োগ করতে পারেন।
সারাংশ
Three.js Extensions এবং Utilities এর মাধ্যমে আপনি সহজেই গ্রাফিক্স তৈরি, কাস্টম শেডার ব্যবহার, মডেল লোডিং এবং পোষ্ট-প্রসেসিং ইফেক্ট বাস্তবায়ন করতে পারেন। Three.js-এ প্রস্তুত করা কাস্টম শেডার, লোডার এবং ইফেক্টের সাহায্যে ডেভেলপাররা জটিল 3D সিস্টেম এবং ইন্টারেক্টিভ অ্যাপ্লিকেশন দ্রুত এবং দক্ষতার সাথে তৈরি করতে পারেন। এর পাশাপাশি, Three.js এর উদাহরণ এবং কমিউনিটি-ভিত্তিক এক্সটেনশনের মাধ্যমে আপনার ডেভেলপমেন্ট এক্সপিরিয়েন্স আরও উন্নত হবে।
Read more