থ্রি.জেএস

**থ্রি.জেএস** (Three.js) হলো একটি ক্রস-ব্রাউজার জাভাস্ক্রিপ্ট লাইব্রেরি এবং অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (এপিআই)। এটি ওয়েবজিএল (WebGL) ব্যবহার করে একটি ওয়েব ব্রাউজারে অ্যানিমেটেড ত্রিমাত্রিক কম্পিউটার গ্রাফিক্স তৈরি এবং প্রদর্শনের জন্য ব্যবহৃত হয়। এর সোর্স কোড গিটহাবে একটি রিপোজিটরিতে হোস্ট করা হয়েছে।
## সারসংক্ষেপ
থ্রি.জেএস গ্রাফিক্যাল প্রসেসিং ইউনিট (GPU)-অ্যাক্সেলারেটেড ৩ডি অ্যানিমেশন তৈরি করতে দেয়, যা জাভাস্ক্রিপ্ট ভাষা ব্যবহার করে একটি ওয়েবসাইট-এর অংশ হিসেবে চালানো যায়, কোনো স্বত্বাধিকারভিত্তিক ব্রাউজার প্লাগইন-এর উপর নির্ভর না করেই। এটি সম্ভব হয়েছে ওয়েবজিএল-এর আবির্ভাবের কারণে, যা ওয়েবের জন্য বিশেষভাবে তৈরি একটি নিম্নস্তরের গ্রাফিক্স এপিআই।

থ্রি.জেএস, ব্যাবিলন.জেএস, ভার্জ৩ডি এবং আরও অনেক উচ্চস্তরের লাইব্রেরি ব্রাউজারে প্রদর্শনের জন্য জটিল ৩ডি কম্পিউটার অ্যানিমেশন তৈরি করা সম্ভব করে তোলে, যেখানে ঐতিহ্যবাহী স্বতন্ত্র অ্যাপ্লিকেশন বা প্লাগইন তৈরির জন্য যে পরিমাণ প্রচেষ্টা প্রয়োজন হয়, তা আর লাগে না।
## ইতিহাস
থ্রি.জেএস প্রথম গিটহাব-এ রিকার্ডো কাবেলো কর্তৃক এপ্রিল ২০১০ সালে প্রকাশিত হয়। লাইব্রেরিটির উৎপত্তি ২০০০-এর দশকের শুরুর দিকে তাঁর ডেমোসিন-এর সঙ্গে সম্পৃক্ততার মাধ্যমে অনুসরণ করা যায়। কোডটি মূলত অ্যাকশনস্ক্রিপ্ট ভাষায় তৈরি করা হয়েছিল, যা অ্যাডোবি ফ্ল্যাশ-এ ব্যবহৃত হতো। পরে ২০০৯ সালে এটি জাভাস্ক্রিপ্টে রূপান্তর করা হয়। কাবেলোর দৃষ্টিতে, অ্যাকশনস্ক্রিপ্ট থেকে সরে আসার পেছনে দুটি প্রধান কারণ ছিল। প্রথমত, জাভাস্ক্রিপ্ট অধিক প্ল্যাটফর্ম স্বাধীনতা প্রদান করত। দ্বিতীয়ত, জাভাস্ক্রিপ্টে লেখা অ্যাপ্লিকেশন ডেভেলপারকে পূর্বে কম্পাইল করতে হতো না, যা ফ্ল্যাশ অ্যাপ্লিকেশনের ক্ষেত্রে প্রয়োজনীয় ছিল।

কাবেলোর অতিরিক্ত অবদানের মধ্যে রয়েছে এপিআই নকশা, CanvasRenderer, SVGRenderer, এবং বিভিন্ন অবদানকারীর কমিট একত্রিত করে প্রকল্পে সংযোজনের দায়িত্ব পালন।

ওয়েবজিএল-এর আবির্ভাবের পর পল ব্রান্ট সহজেই নতুন রেন্ডারিং প্রযুক্তি বাস্তবায়ন করতে সক্ষম হন, কারণ Three.js-এ রেন্ডারিং কোডটি মূল অংশের পরিবর্তে একটি মডিউল হিসেবে নকশা করা হয়েছিল। প্রাথমিক অবদানকারী ব্রানিস্লাভ উলিচনি ২০১০ সালে নিজের ওয়েবসাইটে একাধিক ওয়েবজিএল ডেমো প্রকাশের পর Three.js-এর সঙ্গে কাজ শুরু করেন। তিনি চেয়েছিলেন Three.js-এ ওয়েবজিএল রেন্ডারারের সক্ষমতা যেন CanvasRenderer বা SVGRenderer-এর চেয়ে উন্নত হয়। তাঁর প্রধান অবদান সাধারণত ম্যাটেরিয়াল, শেডার এবং পোস্ট-প্রসেসিং-সংক্রান্ত।

২০১১ সালের মার্চ মাসে Firefox 4-এ WebGL 1.0 প্রবর্তনের পরপরই জোশুয়া কু প্রকল্পে যোগ দেন। তিনি ২০১১ সালের সেপ্টেম্বর মাসে ৩ডি টেক্সটের জন্য তাঁর প্রথম Three.js ডেমো তৈরি করেন। তাঁর অবদান প্রায়ই জ্যামিতি জেনারেশনের সঙ্গে সম্পর্কিত।

সংস্করণ ১১৮ থেকে শুরু করে Three.js ডিফল্টভাবে WebGL 2.0 ব্যবহার করে। পুরোনো মানটি এখনও WebGL1Renderer শ্রেণির মাধ্যমে উপলব্ধ।

গিটহাবে Three.js-এর ২০০০-এরও বেশি অবদানকারী রয়েছে।
## বৈশিষ্ট্য

থ্রি.জেএস নিম্নলিখিত বৈশিষ্ট্যসমূহ অন্তর্ভুক্ত করে:

* ইফেক্ট: অ্যানাগ্লিফ, ক্রস-আইড এবং প্যারাল্যাক্স ব্যারিয়ার।
* দৃশ্য (Scenes): রান-টাইমে অবজেক্ট যোগ ও অপসারণ; কুয়াশা।
* ক্যামেরা: পার্সপেক্টিভ এবং অর্থোগ্রাফিক; নিয়ন্ত্রণ ব্যবস্থা: ট্র্যাকবল, এফপিএস, পাথ ইত্যাদি।
* অ্যানিমেশন: আর্মেচার, ফরওয়ার্ড কাইনেমেটিক্স, ইনভার্স কাইনেমেটিক্স, মরফ, এবং কীফ্রেম।
* আলো: অ্যাম্বিয়েন্ট, ডিরেকশনাল, পয়েন্ট এবং স্পট লাইট; ছায়া: কাস্ট এবং রিসিভ।
* ম্যাটেরিয়াল: ল্যাম্বার্ট, ফং, স্মুথ শেডিং, টেক্সচার ইত্যাদি।
* শেডার: পূর্ণ OpenGL Shading Language (জিএলএসএল) সক্ষমতায় প্রবেশাধিকার: লেন্স ফ্লেয়ার, ডেপথ পাস, এবং বিস্তৃত পোস্ট-প্রসেসিং লাইব্রেরি।
* অবজেক্ট: মেশ, পার্টিকল, স্প্রাইট, লাইন, রিবন, বোন, ইত্যাদি—সবই লেভেল অব ডিটেইল-সহ।
* জ্যামিতি: প্লেন, কিউব, স্ফিয়ার, টোরাস, ৩ডি টেক্সট ইত্যাদি; মডিফায়ার: ল্যাথ, এক্সট্রুড এবং টিউব।
* ইমপোর্ট/এক্সপোর্ট: JSON, glTF, OBJ, USDZ ইত্যাদির মাধ্যমে নেটিভ সিরিয়ালাইজেশন/ডিসিরিয়ালাইজেশন।
* ইউটিলিটি: সময় এবং ৩ডি গণিত ফাংশনের পূর্ণ সেট, যার মধ্যে রয়েছে ভিউয়িং ফ্রাস্টাম, ম্যাট্রিক্স, কোয়াটারনিয়ন, UVs ইত্যাদি।
* সহায়তা: এপিআই ডকুমেন্টেশন নির্মাণাধীন। একটি উন্মুক্ত ফোরাম এবং উইকি সক্রিয় রয়েছে।
* উদাহরণ: ১৫০টিরও বেশি কোডিং উদাহরণ ফাইল, পাশাপাশি ফন্ট, মডেল, টেক্সচার, সাউন্ড এবং অন্যান্য সহায়ক ফাইল।
* ডিবাগিং: Stats.js, WebGL Inspector, Three.js Inspector
* ওয়েবএক্সআর-এর মাধ্যমে ভার্চুয়াল এবং অগমেন্টেড রিয়েলিটি সমর্থন
* ফিজিক্যালি বেসড রেন্ডারিং (PBR): MeshStandardMaterial এবং MeshPhysicalMaterial-এর মতো শারীরিকভাবে সঠিক ম্যাটেরিয়ালের সমর্থন

* ইনস্ট্যান্সিং: হাজারো পুনরাবৃত্ত অবজেক্ট দক্ষতার সঙ্গে রেন্ডার করার জন্য InstancedMesh-এর ব্যবহার

* পোস্ট-প্রসেসিং: বিল্ট-ইন পোস্ট-প্রসেসিং পাইপলাইন, যার মধ্যে রয়েছে ব্লুম, ডেপথ অব ফিল্ড, আউটলাইন, মোশন ব্লার, SSAO, এবং FXAA ইত্যাদি ইফেক্ট

* বিল্ট-ইন এডিটর: ৩ডি দৃশ্য নির্মাণ ও রপ্তানির জন্য অনলাইনে উপলব্ধ গ্রাফিক্যাল সিন এডিটর

* ইন্টারঅ্যাকটিভ নিয়ন্ত্রণ: ব্যবহারকারী ইন্টারঅ্যাকশন ও ন্যাভিগেশনের জন্য OrbitControls, DragControls, TransformControls এবং PointerLockControls-এর মতো বিল্ট-ইন নিয়ন্ত্রণ ব্যবস্থা

* বিকল্প রেন্ডারার: WebGLRenderer-এর পাশাপাশি, Three.js SVGRenderer এবং CSS3DRenderer, প্রদান করে; পাশাপাশি WebGPURenderer-এর জন্য পরীক্ষামূলক সমর্থন রয়েছে।

থ্রি.জেএস WebGL 1.0 বা WebGL 2.0 সমর্থনযুক্ত সকল ব্রাউজারে চলে।

থ্রি.জেএস এমআইটি লাইসেন্স-এর অধীনে উন্মুক্ত করা হয়েছে।
## আরও দেখুন

* গুগল ক্রোম এক্সপেরিমেন্টস
* ওয়েবজিএল ফ্রেমওয়ার্কসমূহের তালিকা
* জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক
* জাভাস্ক্রিপ্ট লাইব্রেরি

## তথ্যসূত্র

## আরও পড়ুন
* 
* 
*  - "Three.js নিম্নস্তরের বিশদ বিষয়গুলি পরিচালনা করে গেম উন্নয়নকে সহজতর করতে পারে"
* 
* 
## বহিঃসংযোগ

* 

বিষয়শ্রেণী:৩ডি সিনগ্রাফ এপিআই
বিষয়শ্রেণী:ক্রস-প্ল্যাটফর্ম সফটওয়্যার
বিষয়শ্রেণী:মুক্ত ৩ডি গ্রাফিক্স সফটওয়্যার
বিষয়শ্রেণী:গ্রাফিক্স লাইব্রেরি
বিষয়শ্রেণী:জাভাস্ক্রিপ্ট লাইব্রেরি
বিষয়শ্রেণী:এমআইটি লাইসেন্স ব্যবহারকারী সফটওয়্যার
বিষয়শ্রেণী:ওয়েবজিএল