glTF JSON (.gltf)
ISO/IEC มาตรฐานGL Transmission Format (glTF) คือข้อกำหนด JSON แบบมาตรฐานเปิดและไม่มีค่าลิขสิทธิ์ สำหรับการส่งผ่านและการโหลดฉากและโมเดล 3D ที่มีประสิทธิภาพโดย WebGL, WebGPU, เอนจินเกม และแอปพลิเคชันเนทีฟ
แปลง GLTF เป็น GLB
ตัวแปลงจาก GLTF เป็น GLB ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ
ตรวจสอบไฟล์และข้อมูลเมตา
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ glTF โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวระดับไบต์
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ glTF โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
7B 0A 20 20 22 61 73 73 65 74 22การแสดงผลรูปแบบ ASCII: {\n "asset"
มาตรฐาน: ISO/IEC 12113:2022 / Khronos Open Standard
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | เอกสาร JSON ที่อ่านเข้าใจง่าย อธิบายกราฟฉาก, โหนด, เมช, accessors, วัสดุ และแอนิเมชัน พร้อมอ้างอิงบัฟเฟอร์ภายนอก |
| การบีบอัด | เท็กซ์เจอร์ภายนอก (PNG, JPEG, WebP) และการบีบอัดเรขาคณิต Draco ที่เลือกใช้ได้ |
| การจัดลำดับไบต์ | ข้อความ JSON แบบ UTF-8 (อ้างอิงบัฟเฟอร์ .bin แบบ Little-Endian) |
| พื้นที่สี | สีพื้นฐาน sRGB, ความหยาบ/ความเป็นโลหะแบบเชิงเส้น |
| ช่องสัญญาณและโครงสร้าง | ลำดับชั้นฉาก, โหนด, กล้อง, วัสดุ PBR, โครงกระดูกสำหรับ skinning และเป้าหมายมอร์ฟ |
| ขนาดสูงสุด | พื้นที่พิกัดและจำนวนสามเหลี่ยมไม่จำกัด |
| ความโปร่งใส | โหมดอัลฟา BLEND, MASK พร้อมค่าเกณฑ์ตัด หรือการส่งผ่านเชิงปริมาตร |
| การสตรีมและแบบโปรเกรสซีฟ | glTF แยกคำอธิบายฉากออกจากข้อมูลเรขาคณิตและพื้นผิวแบบไบนารี ทำให้โปรแกรมดูโหลดแต่ละส่วนตามต้องการได้ แทนที่จะต้องรอไฟล์ก้อนเดียว |
ตารางเปรียบเทียบทางเทคนิค: glTF กับคู่แข่ง
| คุณลักษณะทางเทคนิค | glTF (ปัจจุบัน) | GLB | OBJ | FBX |
|---|---|---|---|---|
| สถาปัตยกรรมไฟล์ | ข้อความฉาก JSON + ไฟล์ .bin / พื้นผิวที่เกี่ยวข้อง | ไฟล์ไบนารีเดี่ยวในตัว | จุดยอดและหน้าโพลิกอนแบบข้อความล้วน + .mtl | คอนเทนเนอร์ไบนารี/ASCII แบบกรรมสิทธิ์ |
| มาตรฐานวัสดุ PBR | มาตรฐาน Metallic-Roughness PBR | มาตรฐาน Metallic-Roughness PBR | วัสดุ Phong/Lambert แบบเดิม | วัสดุแบบกรรมสิทธิ์เฉพาะ |
| การรองรับแอนิเมชัน | การทำสกินนิ่งโครงกระดูกและมอร์ฟทาร์เก็ต (morph targets) | การทำสกินนิ่งโครงกระดูกและมอร์ฟทาร์เก็ต | ไม่มี (เรขาคณิตคงที่เท่านั้น) | แอนิเมชันและกระดูกที่ซับซ้อน |
| ประสิทธิภาพขณะรันไทม์ | ปรับแต่งสำหรับ WebGL และเอนจินแบบเรียลไทม์ | ปรับแต่งสำหรับ WebGL และเอนจินแบบเรียลไทม์ | ต้องใช้เวลาแยกวิเคราะห์และสร้างใหม่ที่ช้า | ต้องมีการแยกวิเคราะห์ผ่าน SDK เดสก์ท็อปที่ซับซ้อน |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
ข้อผิดพลาดของเอนจิน 3D: 'Failed to load buffer: URI not found'
สาเหตุหลัก: ไฟล์ไบนารี .bin หรือภาพพื้นผิวที่เกี่ยวข้องไม่ได้ถูกอัปโหลดควบคู่ไปกับไฟล์ .gltf
การกู้คืน: รวมไฟล์ที่เกี่ยวข้องทั้งหมดเข้าด้วยกันหรือแปลงเป็นไฟล์ GLB เดี่ยวโดยตรงด้วย File2File.app
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
ไฟล์ JSON ของ glTF อ้างอิง URI ภายนอก (data URI หรือ URL ระยะไกล) ซึ่งอาจทำให้เกิดช่องโหว่ Server-Side Request Forgery (SSRF) หรือ Path Traversal
เวกเตอร์การโจมตีที่ทราบ
- Path Traversal ผ่าน URI บัฟเฟอร์แบบสัมพัทธ์ (เช่น 'uri: ../../../etc/passwd')
- SSRF ผ่านการดึงบัฟเฟอร์เครือข่ายระยะไกลในตัวสร้างภาพย่อ 3D ฝั่งเซิร์ฟเวอร์
- การปฏิเสธการให้บริการ (Denial of service) ผ่านวัฏจักรลำดับชั้นโหนดเรียกซ้ำที่ผิดรูป
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: ห้ามใช้ URL ระยะไกล และปรับรูปแบบเส้นทาง URI ของบัฟเฟอร์ภายในทั้งหมดให้เป็นมาตรฐานก่อนโหลด
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- โครงสร้าง JSON ที่มนุษย์อ่านได้ช่วยให้สามารถแก้ไขด้วยโปรแกรม, เขียนสคริปต์ไปป์ไลน์ และตรวจสอบด้วยภาพได้
- การออกแบบแบบโมดูลาร์: แยกข้อมูลเมตาของฉากที่มีน้ำหนักเบาออกจากเรขาคณิตไบนารีขนาดใหญ่ (.bin) และพื้นผิว
- วัสดุ PBR ช่วยให้ภาพสอดคล้องกันขึ้นได้ แต่ผลลัพธ์ขึ้นอยู่กับเรนเดอร์ แสง และการตั้งค่า
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- ความซับซ้อนของหลายไฟล์: การแชร์โมเดลจำเป็นต้องบีบอัดเป็น ZIP หรือรวมไฟล์ .gltf, .bin และภาพพื้นผิวเข้าด้วยกัน
- การเริ่มต้นเชื่อมต่อเครือข่ายครั้งแรกช้ากว่าไฟล์ GLB แบบไฟล์เดียวเล็กน้อย เนื่องจากการร้องขอ HTTP หลายครั้ง
- การอ้างอิงเส้นทางสัมพัทธ์อาจเสียหายได้หากไฟล์พื้นผิวที่เกี่ยวข้องถูกเปลี่ยนชื่อหรือย้ายตำแหน่ง
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- glTF มีชื่อเล่นอย่างเป็นทางการว่า 'The JPEG of 3D' เนื่องจากเน้นที่การส่งและการแสดงผลขณะรันไทม์เป็นหลัก มากกว่าการสร้างสรรค์ชิ้นงาน
- Khronos Group พัฒนา glTF เพื่อให้ส่งต่อแอสเซ็ต 3D สำหรับแอปเว็บและมือถือได้สะดวกขึ้น
- NASA จัดเตรียมโมเดล 3D ของยานสำรวจ ดาวเทียม และนักบินอวกาศเพื่อให้สาธารณชนดาวน์โหลดในรูปแบบ glTF
คำถามทางเทคนิคที่พบบ่อย
เหตุใดไฟล์ glTF ของฉันจึงไม่มีสีหรือรูปทรง
ไฟล์ .gltf มีเพียงคำสั่งฉากที่เป็น JSON เท่านั้น โดยต้องอาศัยไฟล์ .bin ที่ใช้ร่วมกันสำหรับรูปทรง 3 มิติ และไฟล์ .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 Binary จะรวมไฟล์รายการข้อความ บัฟเฟอร์ไบนารี และพื้นผิวที่แยกกันไว้เป็นไฟล์เดียว เพื่อให้ส่งผ่านเว็บได้รวดเร็วยิ่งขึ้น
การแปลงไฟล์ GLB เป็น GLTF จะแยกคอนเทนเนอร์ไบนารีเดี่ยวออกเป็นไฟล์ข้อความและไฟล์โมเดล 3 มิติแยกกัน เพื่อให้นักพัฒนาสามารถแก้ไขโค้ดพื้นผิวและเรขาคณิตสามมิติได้อย่างง่ายดาย
การแปลงไฟล์เรขาคณิต Wavefront OBJ เป็นรายการข้อมูล glTF JSON จะทำให้โมเดล 3 มิติแบบคงที่พร้อมใช้งานบนเว็บ และโหลดได้รวดเร็วในเว็บเบราว์เซอร์ทั่วไป