Three.js এবং Textures
Three.js হল একটি JavaScript লাইব্রেরি যা 3D গ্রাফিক্স তৈরি এবং প্রদর্শনের জন্য ব্যবহৃত হয়। এটি WebGL এর উপর ভিত্তি করে কাজ করে, যা ব্রাউজারে 3D রেন্ডারিং প্রদান করে। Textures হল 2D ইমেজ যা 3D অবজেক্টে প্রয়োগ করা হয়, এর মাধ্যমে অবজেক্টের উপর বিস্তারিত এবং বাস্তবসম্মত ডিজাইন যোগ করা যায়।
Three.js এ Texture Loader ব্যবহার করে আপনি সহজেই 3D অবজেক্টে textures যোগ করতে পারেন। এটি সরাসরি image ফাইল থেকে textures লোড করে এবং আপনার 3D মডেলের উপরে প্রয়োগ করতে সাহায্য করে।
Texture Loader ব্যবহার করে Textures যোগ করার ধাপ
Texture Loader ক্লাসটি Three.js এ ব্যবহৃত হয় যাতে ইমেজ ফাইলগুলিকে লোড করে তারপর সেগুলিকে 3D অবজেক্টে প্রয়োগ করা যায়। এই প্রক্রিয়া সহজভাবে texture তৈরি এবং প্রয়োগ করার সুবিধা দেয়।
১. Three.js ইনস্টলেশন এবং সেটআপ
প্রথমে, আপনার প্রোজেক্টে Three.js অন্তর্ভুক্ত করতে হবে। আপনি npm বা CDN ব্যবহার করে এটি ইন্সটল করতে পারেন।
npm এর মাধ্যমে Three.js ইনস্টল করা:
npm install three
CDN এর মাধ্যমে Three.js অন্তর্ভুক্ত করা:
<script src="https://cdn.jsdelivr.net/npm/three@0.139.2/build/three.min.js"></script>
২. Texture Loader ব্যবহার করে Textures লোড করা
Texture Loader ব্যবহার করতে, প্রথমে আপনাকে Three.js এর TextureLoader ক্লাস ব্যবহার করে ইমেজ লোড করতে হবে। পরে আপনি সেই টেক্সচারকে 3D অবজেক্টের material এর সাথে অ্যাসাইন করবেন।
ধাপ ১: Three.js সেতআপ এবং Scene তৈরি করা
// Three.js লাইব্রেরি লোড
import * as THREE from 'three';
// সীন, ক্যামেরা এবং রেন্ডারার সেটআপ করা
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// একটি কিউব তৈরি করা
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 5;
ধাপ ২: Texture Loader ব্যবহার করা
এখন আমরা TextureLoader ব্যবহার করে একটি টেক্সচার লোড করব এবং সেটি কিউবের material-এ প্রয়োগ করব।
// TextureLoader ক্লাস ব্যবহার করা
const textureLoader = new THREE.TextureLoader();
const texture = textureLoader.load('path_to_your_texture_image.jpg'); // আপনার টেক্সচার ইমেজের পাথ দিন
// টেক্সচারটি মেটিরিয়ালে প্রয়োগ করা
const materialWithTexture = new THREE.MeshBasicMaterial({ map: texture });
const cubeWithTexture = new THREE.Mesh(geometry, materialWithTexture);
scene.add(cubeWithTexture);
// রেন্ডারিং ফাংশন
function animate() {
requestAnimationFrame(animate);
cubeWithTexture.rotation.x += 0.01;
cubeWithTexture.rotation.y += 0.01;
renderer.render(scene, camera);
}
animate();
এখানে, TextureLoader.load() ফাংশনটি একটি ইমেজ লোড করে এবং সেই ইমেজটিকে texture অবজেক্টে পরিণত করে। তারপর সেটি MeshBasicMaterial এর map প্রপার্টিতে অ্যাসাইন করা হয়, যা টেক্সচারকে 3D অবজেক্টের উপর প্রয়োগ করে।
৩. Texture Mapping এবং অন্যান্য টেক্সচার টেকনিক
Three.js আরও উন্নত texture mapping এর জন্য UV mapping, bump mapping, normal mapping, specular mapping ইত্যাদি সমর্থন করে। আপনি TextureLoader এর মাধ্যমে বিভিন্ন ধরনের টেক্সচার ব্যবহার করতে পারেন, যেমন:
- Diffuse Mapping: এটি প্রধান টেক্সচার, যা অবজেক্টের মূল রঙ নির্ধারণ করে।
- Bump Mapping: এটি টেক্সচারকে সিলেট বা ইমেজ হিসেবে প্রয়োগ করে, যাতে উঁচু এবং নিচু অংশের মত 3D অনুভূতি তৈরি হয়।
- Normal Mapping: এটি একটি বাম্প ম্যাপের মতো কাজ করে কিন্তু এর মাধ্যমে আলো এবং ছায়া আরও বাস্তবসম্মত হয়।
Normal Mapping উদাহরণ:
const normalTexture = textureLoader.load('path_to_normal_map_image.jpg');
const materialWithNormalMap = new THREE.MeshStandardMaterial({
map: texture, // Diffuse texture
normalMap: normalTexture // Normal map
});
const cubeWithNormalMap = new THREE.Mesh(geometry, materialWithNormalMap);
scene.add(cubeWithNormalMap);
৪. ডাইনামিক টেক্সচার এবং রিএকটিভ লোডিং
এছাড়া, আপনি ডাইনামিকভাবে টেক্সচার লোড করতে পারেন যেমন ইউজার ইন্টারঅ্যাকশনের মাধ্যমে টেক্সচার পরিবর্তন। উদাহরণস্বরূপ, আপনি একটি বাটন ক্লিক করলে টেক্সচার পরিবর্তন করতে পারেন।
document.getElementById('changeTexture').addEventListener('click', () => {
const newTexture = textureLoader.load('path_to_new_texture.jpg');
cubeWithTexture.material.map = newTexture;
});
এখানে, textureLoader.load() এর মাধ্যমে নতুন টেক্সচার লোড করা হচ্ছে এবং এটি পূর্বের টেক্সচারকে প্রতিস্থাপন করছে।
সারাংশ
Three.js এর TextureLoader ব্যবহার করে আপনি সহজেই 3D অবজেক্টে বাস্তবসম্মত টেক্সচার যোগ করতে পারেন। টেক্সচার লোড করার জন্য TextureLoader.load() ফাংশন ব্যবহার করা হয় এবং এটি 3D অবজেক্টে material এর মাধ্যমে প্রয়োগ করা হয়। আপনি বিভিন্ন ধরনের টেক্সচার যেমন Diffuse, Normal, Bump ইত্যাদি ব্যবহার করে আপনার 3D অবজেক্টকে আরও বাস্তবসম্মত এবং আকর্ষণীয় করতে পারেন। ডাইনামিক টেক্সচার পরিবর্তন এবং রিএকটিভ লোডিংয়ের মাধ্যমে ব্যবহারকারীর ইন্টারঅ্যাকশন অনুযায়ী টেক্সচার পরিবর্তন করা সম্ভব।
Read more