فایل glTF JSON (.gltf)
ISO/IEC استانداردفرمت انتقال گرافیکی (glTF) یک مشخصه JSON استاندارد باز و بدون حق امتیاز برای انتقال و بارگذاری کارآمد صحنهها و مدلهای سهبعدی توسط WebGL، WebGPU، موتورهای بازی و برنامههای بومی است.
تبدیل GLTF به GLB
مبدل رایگان GLTF به GLB درون مرورگر. فایلها را فورا روی دستگاه خود تبدیل کنید.
بررسی و فراداده
سیستمعاملها و تحلیلگرهای فایل، فایلهای glTF را با بررسی توالی بایتهای دودویی ابتدایی شناسایی میکنند:
امضای هدر در سطح بایت (Magic Bytes)
سیستمعاملها و تحلیلگرهای فایل، فایلهای glTF را با بررسی توالی بایتهای دودویی ابتدایی شناسایی میکنند:
امضای HEX (آفست 0):
7B 0A 20 20 22 61 73 73 65 74 22نمایش ASCII: {\n "asset"
استانداردسازی: ISO/IEC 12113:2022 / Khronos Open Standard
مشخصات فنی
| معماری کانتینر | Human-readable JSON document describing scene graph, nodes, meshes, accessors, materials, and animations, referencing external buffers |
| فشردهسازی | External textures (PNG, JPEG, WebP) and optional Draco geometry compression |
| ترتیب بایتها (Endianness) | UTF-8 JSON text (referencing Little-Endian .bin buffers) |
| فضاهای رنگی | sRGB base color, Linear roughness/metallic |
| کانالها و ساختار | Scene hierarchy, nodes, cameras, PBR materials, skinning skeletons, and morph targets |
| حداکثر ابعاد | Unbounded coordinate space and triangle count |
| شفافیت مشخصات | Alpha mode BLEND, MASK with cutoff threshold, or volumetric transmission |
| استریمینگ و پیشرونده | Asynchronous loading: scene JSON loads instantly while heavy binary buffers stream in background |
ماتریس مقایسه فنی: glTF در برابر رقبا
| ویژگی فنی | glTF (فعلی) | GLB | OBJ | FBX |
|---|---|---|---|---|
| معماری فایل | متن صحنه JSON + فایل .bin / بافتهای همراه | فایل باینری تک و مستقل | رؤس و وجوه متنی ساده + .mtl | کنتینر باینری/ASCII اختصاصی |
| استانداردهای متریال PBR | Metallic-Roughness PBR استانداردسازی شده | Metallic-Roughness PBR استانداردسازی شده | متریالهای قدیمی Phong/Lambert | متریالهای اختصاصی سفارشی |
| پشتیبانی از انیمیشن | اسکینینگ اسکلتی و اهداف مورف (Morph targets) | اسکینینگ اسکلتی و اهداف مورف (Morph targets) | هیچکدام (فقط هندسه استاتیک) | انیمیشن و استخوانهای پیچیده |
| عملکرد در زمان اجرا | بهینهشده برای WebGL و موتورهای بلادرنگ | بهینهشده برای WebGL و موتورهای بلادرنگ | نیازمند تجزیه و بازسازی کند | نیازمند تجزیه پیچیده SDK دسکتاپ |
حالتهای رایج خرابی و راهنمای بازیابی هگز
خطای موتور سهبعدی: «شکست در بارگذاری بافر: URI یافت نشد».
علت ریشهای: فایل باینری همراه .bin یا تصاویر بافت در کنار فایل .gltf آپلود نشدهاند.
بازیابی: تمام فایلهای همراه را با هم بستهبندی کنید یا مستقیماً با File2File به یک فایل GLB واحد تبدیل کنید.
تحلیل امنیتی و بردارهای حمله تجزیهکننده (Parser)
فایلهای JSON فرمت glTF به URIهای خارجی (URIهای داده یا آدرسهای اینترنتی ریموت) ارجاع میدهند که میتوانند باعث جعل درخواست سمت سرور (SSRF) یا پیمایش مسیر (Path Traversal) شوند.
بردارهای حمله شناختهشده
- پیمایش مسیر از طریق URIهای نسبی بافر (به عنوان مثال 'uri: ../../../etc/passwd').
- حمله SSRF از طریق واکشی بافر شبکه ریموت در تولیدکنندههای تصویر کوچک سهبعدی سمت سرور.
- انکار سرویس از طریق چرخههای نامعتبر و بازگشتی در هماهنگی گرهها.
بهترین روشهای پدافندی:
تاریخچه و نقاط عطف
مزایا و نقاط قوت کلیدی
- ساختار JSON قابل خواندن توسط انسان امکان ویرایش برنامهنویسی، اسکریپتنویسی پایپلاین و بازرسی بصری را فراهم میکند.
- طراحی ماولار: متادیتای سبک صحنه را از هندسه باینری سنگین (.bin) و بافتها جدا میکند.
- تعریف متریال رندر مبتنی بر فیزیک (PBR) تضمین میکند که داراییهای سهبعدی در تمام موتورهای رندر یکسان به نظر برسند.
محدودیتها و معایب فنی
- پیچیدگی چندفایلی: اشتراکگذاری یک مدل نیازمند زیپ کردن یا بستهبندی همزمان فایلهای .gltf، .bin و بافتهای تصویری است.
- به دلیل درخواستهای متعدد HTTP، راهاندازی اولیه شبکه کمی کندتر از فرمت تکفایلی GLB است.
- در صورت تغییر نام یا جابجایی فایلهای بافت همراه، وابستگیهای مسیر نسبی ممکن است قطع شوند.
نکات فنی جالب
- glTF به طور رسمی ملقب به «JPEG سهبعدی» است زیرا به جای طراحی، به طور دقیق روی انتقال و نمایش در زمان اجرا تمرکز دارد.
- این فرمت به طور مشترک توسط تونی پاریسی پایهگذاری شد که در سال ۱۹۹۴ VRML (زبان مدلسازی واقعیت مجازی) را به طور مشترک ایجاد کرده بود.
- ناسا مدلهای سهبعدی مریخنوردها، ماهوارهها و فضانوردان را برای دانلود عموم با فرمت glTF ارائه میکند.
سوالات فنی متداول
چرا فایل glTF من فاقد رنگ یا اشکال است؟
یک فایل .gltf فقط حاوی دستورالعملهای صحنه JSON است. این فرمت برای اشکال سهبعدی به فایلهای .bin همراه و برای رنگها به فایلهای .png/.jpg وابسته است. مطمئن شوید که تمام فایلهای همراه در یک پوشه قرار دارند.
چگونه یک فایل glTF را به یک فایل واحد GLB تبدیل کنم؟
فایل .gltf خود به همراه فایلهای .bin و بافتهای همراه آن را در File2File.app آپلود کنید تا فوراً در یک فایل .glb واحد و خودکفا ادغام شوند.
چه برنامههایی از glTF پشتیبانی میکنند؟
برنامههای Blender، Three.js، Babylon.js، Unity، Unreal Engine، Godot و Windows 3D Viewer به طور پیشفرض از glTF پشتیبانی میکنند.
جفتهای تبدیل مرتبط با glTF
تبدیل داراییهای glTF JSON به کانتینرهای باینری glTF، مانیفستهای متنی جداگانه، بافرهای باینری و بافتها را برای تحویل سریعتر وب در یک فایل واحد بستهبندی میکند.
تبدیل GLB به GLTF یک کانتینر باینری واحد را به فایلهای متن و دارایی مجزا تجزیه میکند تا برنامهنویسان بتوانند به راحتی بافتها و کد هندسه سه بعدی را ویرایش کنند.
تبدیل فایلهای هندسه Wavefront OBJ به مانیفستهای glTF JSON مدلهای سه بعدی ثابت را به داراییهای آماده وب مدرن تبدیل میکند که به طور آنی در مرورگرهای استاندارد وب بارگذاری میشوند.