فایل GLTF چیست؟
glTF (فرمت انتقال GL) یک فرمت فایل سه بعدی است که اطلاعات مدل سه بعدی را با فرمت JSON ذخیره می کند. استفاده از JSON هم اندازه دارایی های سه بعدی و هم پردازش زمان اجرا مورد نیاز برای باز کردن بسته بندی و استفاده از آن دارایی ها را به حداقل می رساند. این برای انتقال کارآمد و بارگذاری صحنه ها و مدل های سه بعدی توسط برنامه ها به کار گرفته شد. glTF توسط گروه Khronos 3D Formats Working Group توسعه داده شد و همچنین توسط سازندگان آن به عنوان JPEG 3D توصیف شده است.
فرمت فایل GLTF یک قالب انتشار قابل گسترش و متداول را برای ابزارها و خدمات محتوای سه بعدی تعریف میکند که جریان کار تألیف را ساده میکند و استفاده متقابل از محتوا را در سراسر صنعت امکانپذیر میسازد. هدف از ایجاد فرمت فایل glTF، تعریف یک قالب انتشاری قابل گسترش و رایج برای ابزارها و خدمات محتوای سه بعدی بود که باید گردش کار تالیف را ساده کرده و امکان استفاده متقابل از محتوا را در سراسر صنعت فراهم کند. پردازش زمان اجرا توسط برنامه های کاربردی با استفاده از WebGL و سایر API ها را به حداقل می رساند.
تاریخچه مختصر فایل GLTF
The first specifications for glTF file format 1.0 were announced in October 2015. این به عنوان مجموعه ای از تلاش ها بود که در مارس 2012 توسط Khronos آغاز شد. هدف از این تلاش ها ارزیابی فرصت ها در اطراف کشش WebGL بود. در نتیجه، اولین نسخه نمایشی از فرمت glTF، بر اساس فرمت JSON در جلسه WebGl در سال 2012 ارائه شد. این فرمت هر چند وقت یکبار توسط چندین شرکت از جمله Cesium، 3D Tiles، Oculus، Microsoft، Archilogic و دیگران پذیرفته شد.
glTF 2.0 در 5 ژوئن 2017 در کنفرانس Web3D 2017 منتشر شد. لیست بلندبالایی از شرکت هایی وجود دارد که پس از آن فرمت فایل glTF را اتخاذ کردند.
فرمت فایل GLTF
مشخصات فرمت فایل برای glTF 2.0 برای مرجع online در دسترس است و برای پشتیبانی از فرمت فایل glTF باید در هر پیاده سازی مربوط به خواندن/نوشتن رجوع شود.
glTF دارایی ها را به عنوان فایل های JSON با پشتیبانی از داده های خارجی تعریف می کند. این مدل های سه بعدی را با کمک:
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 برای دستیابی به اندازه فایل کوچک، بارگذاری سریع، نمایش کامل صحنه سه بعدی و توسعه پذیری طراحی شده است. این اهداف طراحی منحصر به فرد، دلایل اصلی محبوبیت فرمت فایل glTF در دامنه سه بعدی هستند. در زیر انواع mime پشتیبانی شده توسط فرمت فایل glTF برای انواع مختلف فایل آورده شده است:
فایلهای gltf. از model/gltf+json استفاده میکنند
فایلهای bin. از application/octet-stream استفاده میکنند
فایل های بافت از نوع رسمی تصویر/* بر اساس فرمت تصویر خاص استفاده می کنند. برای سازگاری با مرورگرهای وب مدرن، فرمت های تصویر زیر پشتیبانی می شوند: image/jpeg، image/png.
رمزگذاری JSON
glTF محدودیت های اضافی زیر را بر فرمت فایل JSON اعمال می کند
برای سادهسازی پیادهسازی سمت کلاینت، glTF محدودیتهای بیشتری در قالب JSON و رمزگذاری دارد.
- JSON باید از رمزگذاری UTF-8 بدون BOM استفاده کند.
- همه رشتههای تعریفشده در این مشخصات (نام ویژگیها، فهرستها) فقط از مجموعه نویسههای ASCII استفاده میکنند و باید بهعنوان متن ساده نوشته شوند، بهعنوان مثال، «بافر» بهجای «\u0062\u0075\u0066\u0066\u0065\u0072»`.
- نام ها (کلیدها) در اشیاء JSON باید منحصر به فرد باشند، به عنوان مثال، کلیدهای تکراری مجاز نیستند.
URI ها
بافرها و منابع تصویر از طریق URI ها ارجاع داده می شوند. دو نوع URI زیر باید توسط کلاینت ها پشتیبانی شوند.
URIهای داده: URIهای داده همانطور که توسط RFC 2397 تعریف شده است و توسط glTF برای جاسازی منابع در JSON استفاده می شود.
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.