একটি GLTF ফাইল কি?
glTF (GL ট্রান্সমিশন ফরম্যাট) হল একটি 3D ফাইল ফরম্যাট যা JSON ফর্ম্যাটে 3D মডেলের তথ্য সঞ্চয় করে। JSON-এর ব্যবহার 3D সম্পদের আকার এবং সেই সম্পদগুলিকে আনপ্যাক ও ব্যবহার করার জন্য প্রয়োজনীয় রানটাইম প্রক্রিয়াকরণ উভয়কেই ছোট করে। এটি অ্যাপ্লিকেশন দ্বারা 3D দৃশ্য এবং মডেলগুলির দক্ষ সংক্রমণ এবং লোড করার জন্য গৃহীত হয়েছিল। glTF খ্রোনোস গ্রুপ 3D ফরম্যাট ওয়ার্কিং গ্রুপ দ্বারা তৈরি করা হয়েছে এবং এটির নির্মাতাদের দ্বারা 3D-এর JPEG হিসাবেও বর্ণনা করা হয়েছে।
GLTF ফাইল ফরম্যাট 3D সামগ্রী সরঞ্জাম এবং পরিষেবাগুলির জন্য একটি এক্সটেনসিবল, সাধারণ প্রকাশনার বিন্যাসকে সংজ্ঞায়িত করে যা রচনার ওয়ার্কফ্লোগুলিকে স্ট্রীমলাইন করে এবং সমগ্র শিল্প জুড়ে সামগ্রীর আন্তঃব্যবহারযোগ্য ব্যবহার সক্ষম করে। glTF ফাইল বিন্যাস তৈরির পিছনে উদ্দেশ্য ছিল 3D সামগ্রী সরঞ্জাম এবং পরিষেবাগুলির জন্য একটি এক্সটেনসিবল, সাধারণ প্রকাশনার বিন্যাস সংজ্ঞায়িত করা যা লেখকের কর্মপ্রবাহকে স্ট্রীমলাইন করবে এবং সমগ্র শিল্প জুড়ে সামগ্রীর আন্তঃব্যবহারযোগ্য ব্যবহার সক্ষম করবে। এটি WebGL এবং অন্যান্য API ব্যবহার করে অ্যাপ্লিকেশন দ্বারা রানটাইম প্রক্রিয়াকরণ কমিয়ে দেয়।
GLTF ফাইলের সংক্ষিপ্ত ইতিহাস
The first specifications for glTF file format 1.0 were announced in October 2015. এটি একটি ধারাবাহিক প্রচেষ্টা হিসাবে এসেছিল যা মার্চ 2012 সালে খরোনোস দ্বারা শুরু হয়েছিল। এই প্রচেষ্টার লক্ষ্য ছিল WebGL ট্র্যাকশনের চারপাশের সুযোগগুলি মূল্যায়ন করা। ফলস্বরূপ, JSON ফরম্যাটের উপর ভিত্তি করে glTF ফরম্যাটের প্রথম ডেমোটি 2012 সালে WebGl মিটআপে উপস্থাপিত হয়েছিল। সিসিয়াম, 3D টাইলস, ওকুলাস, মাইক্রোসফ্ট, আর্কিলজিক এবং অন্যান্য সহ সময়ে সময়ে বিভিন্ন কোম্পানি এই ফর্ম্যাটটি গ্রহণ করেছে।
glTF 2.0 প্রকাশিত হয়েছিল 5 জুন, 2017-এ Web3D 2017 সম্মেলনে। এর পরে glTF ফাইল বিন্যাস গ্রহণকারী সংস্থাগুলির একটি দীর্ঘ তালিকা রয়েছে।
GLTF ফাইল ফরম্যাট
glTF 2.0-এর জন্য ফাইল ফর্ম্যাট স্পেসিফিকেশন রেফারেন্সের জন্য online উপলব্ধ এবং glTF ফাইল ফরম্যাটের সমর্থনের জন্য পড়া/লেখার সাথে সম্পর্কিত যেকোনো বাস্তবায়নে পরামর্শ করা উচিত।
glTF সমর্থিত বহিরাগত ডেটা সহ JSON ফাইল হিসাবে সম্পদকে সংজ্ঞায়িত করে। এটি সাহায্যে 3D মডেল উপস্থাপন করে:
Full scene description contained in a JSON-formatted .glTF file that includes information about node hierarchy, materials, cameras, as well as descriptor information for meshes, animations and other constructs
জ্যামিতি এবং অ্যানিমেশন ডেটা এবং অন্যান্য বাফার-ভিত্তিক ডেটা ধারণকারী বাইনারি ফাইল (.bin)
যেকোন বাহ্যিক সম্পদ যেমন চিত্রগুলি বহিরাগত ফাইলগুলিতে সংরক্ষণ করা হয় যা URI এর মাধ্যমে উল্লেখ করা হয়। এই URIগুলিকে GLB কন্টেইনারের পাশাপাশি সংরক্ষণ করা হয় বা ডেটা URI ব্যবহার করে সরাসরি JSON-এ এমবেড করা হয়। প্রতিটি বৈধ glTF এর সংস্করণ নির্দিষ্ট করতে হবে।
glTF ছোট ফাইলের আকার, দ্রুত লোডিং, সম্পূর্ণ 3D দৃশ্য উপস্থাপনা এবং এক্সটেনসিবিলিটি অর্জনের জন্য ডিজাইন করা হয়েছে। এই অনন্য ডিজাইন লক্ষ্যগুলি হল 3D ডোমেনে glTF ফাইল ফরম্যাটের জনপ্রিয়তার প্রধান কারণ। বিভিন্ন ধরনের ফাইলের জন্য glTF ফাইল ফরম্যাট দ্বারা সমর্থিত mime প্রকারগুলি নিম্নরূপ:
.gltf ফাইল মডেল/gltf+json ব্যবহার করে
.bin ফাইল অ্যাপ্লিকেশন/অক্টেট-স্ট্রিম ব্যবহার করে
টেক্সচার ফাইলগুলি নির্দিষ্ট চিত্র বিন্যাসের উপর ভিত্তি করে অফিসিয়াল ইমেজ/* টাইপ ব্যবহার করে। আধুনিক ওয়েব ব্রাউজারগুলির সাথে সামঞ্জস্যের জন্য, নিম্নলিখিত চিত্র বিন্যাসগুলি সমর্থিত: image/jpeg, image/png।
JSON এনকোডিং
glTF JSON ফাইল বিন্যাসে নিম্নলিখিত অতিরিক্ত বিধিনিষেধ আরোপ করে
ক্লায়েন্ট-সাইড বাস্তবায়ন সহজ করতে, glTF-এর JSON ফর্ম্যাট এবং এনকোডিংয়ের উপর অতিরিক্ত সীমাবদ্ধতা রয়েছে।
- JSON অবশ্যই BOM ছাড়া UTF-8 এনকোডিং ব্যবহার করবে।
- এই বৈশিষ্ট্যে সংজ্ঞায়িত সমস্ত স্ট্রিং (সম্পত্তির নাম, enums) শুধুমাত্র ASCII অক্ষর সেট ব্যবহার করে এবং অবশ্যই প্লেইন টেক্সট হিসাবে লিখতে হবে, যেমন,
\u0062\u0075\u0066\u0066\u0065\u0072
এর পরিবর্তে বাফার। - JSON অবজেক্টের মধ্যে নাম (কী) অবশ্যই অনন্য হতে হবে, যেমন, ডুপ্লিকেট কী অনুমোদিত নয়।
ইউআরআই
বাফার এবং ইমেজ সংস্থানগুলি URI-এর মাধ্যমে উল্লেখ করা হয়। নিম্নলিখিত দুটি URI প্রকার ক্লায়েন্টদের দ্বারা সমর্থিত হতে হবে।
ডেটা ইউআরআই: ডেটা ইউআরআইগুলি RFC 2397 দ্বারা সংজ্ঞায়িত করা হয়েছে এবং JSON-এ সংস্থানগুলি এম্বেড করতে glTF দ্বারা ব্যবহৃত হয়।
Relative URI Paths: or path-noscheme as defined by RFC 3986, Section 4.2 — without scheme, authority, or parameters. Reserved characters must be percent-encoded, per RFC 3986, Section 2.2.