ATLAS / Ahmet Salih Haroğlu
Web · Teknik rehber

GLB Dosyası Nedir ve Web'de Neden Kullanılır?

GLB'nin ne olduğunu, içinde neler taşıdığını, web'de neden tercih edildiğini ve tek başına optimizasyon anlamına gelmediğini kendi açımdan anlatıyorum.

Ahmet Salih Haroğlu9 dk okuma
Gemi çalışmasından görsel
İçindekilerFormatlar neden önemli?GLB nedir?Neden web'de tercih ediliyor?GLB'nin içinde neler olur?GLB, optimizasyon demek değilSüreçteki yeriEksen, ölçek ve birim: sessiz sorunlarGLB ne zaman uygun değil?Bir GLB dosyasını nasıl kontrol edersiniz?Sık yapılan hatalarSık sorulan sorularSonuç

Formatlar neden önemli?

3D modellerle çalışmaya başladığımda dosya formatlarının neden bu kadar önemli olduğunu zamanla daha iyi anladım.

GLB benim özellikle web tarafında karşıma çıkan formatlardan biri.

Bir 3D model sadece bir şekil değildir. İçinde yüzeylerin şeklini tanımlayan geometri, o yüzeylerin nasıl göründüğünü belirleyen malzemeler, üzerlerine kaplanan dokular ve bazen animasyonlar ya da sahne yapısı bulunur. Dosya formatı, bu bilgilerin hangisinin, hangi biçimde, ne kadar eksiksiz taşınacağını belirler. Yanlış format seçildiğinde model bir ortamdan diğerine geçerken malzemeler kaybolabilir, ölçek bozulabilir ya da dokular eksik kalabilir. Bu yüzden format, sonradan düşünülen bir ayrıntı değil, işin başında verilen bir karardır.

GLB nedir?

En basit haliyle GLB, glTF ekosisteminin binary paketlenmiş biçimlerinden biri. Benim açımdan avantajı, bir web projesinde 3D modelin geometri ve materyal tarafını daha düzenli şekilde taşıyabilmesi.

Bir modeli Blender'da açıp çok iyi görünmesini sağlamak tek başına yeterli değil. Modeli başka bir ortama götürdüğümüzde materyallerin, texture'ların ve geometrinin de doğru şekilde taşınması gerekiyor. GLB burada pratik bir çözüm haline geliyor.

Biraz daha teknik bakalım. glTF (GL Transmission Format), Khronos Group tarafından geliştirilen açık bir standarttır; amacı, 3D içeriğin uygulamalar arasında ve özellikle web'de verimli iletilmesi ve yüklenmesidir. Standardın sade bir fikri var: sahnenin yapısını bir JSON açıklamasında tutmak, ağır verileri (köşe noktaları, dokular) ise ayrı ikili bloklarda saklamak.

glTF'in iki yaygın paketleme biçimi var:

  • `.gltf`: JSON dosyası ve ayrı dosyalar. Geometri verisi bir `.bin` dosyasında, dokular ise PNG ya da JPEG gibi ayrı görsel dosyalarında durur. Okunabilir ve düzenlenebilir olması avantajdır, ama birden fazla dosyayı birlikte yönetmek gerekir.
  • `.glb`: Aynı bilgilerin tek bir ikili dosyada paketlenmiş hali. Dosyanın içinde JSON bölümü ile ikili veri bölümü bir arada bulunur; dokular da içeri gömülür.

GLB'nin web için pratik yanı, tek dosyanın tek istekle yüklenmesi ve dosya yollarını kaybetme riskinin olmamasıdır. Bir klasördeki dört beş dosyayı doğru isimlerle birlikte taşımak gerekmiyor; tek bir `urun.glb` yeterli.

Neden web'de tercih ediliyor?

GLB'nin web'de yaygın olmasının birkaç somut nedeni var:

  • Tarayıcı odaklı tasarım: glTF, gerçek zamanlı çizim (WebGL ve ardılları) için tasarlandı; Three.js, Babylon.js ve `model-viewer` gibi araçlar bu formatı doğrudan okur.
  • Tek dosya: yükleme, önbellekleme ve dağıtım basittir.
  • PBR malzeme desteği: glTF 2.0, fiziksel tabanlı malzeme tanımını (metallic-roughness) standart olarak taşır. Yüzeyin ne kadar pürüzlü ya da metalik olduğu dosyanın içinde tanımlıdır. Bu mantığı PBR malzeme nedir yazısında anlattım.
  • Açık standart: tek bir şirkete bağlı değildir; geniş bir araç ve kütüphane ekosistemi vardır.
  • Sıkıştırma uzantıları: geometri ve doku boyutunu küçültmek için standart uzantılar bulunur.

Bu özellikler, GLB'yi web'deki 3D ürün modelleri için doğal bir seçim yapar. Başka formatlarla (FBX, OBJ, USDZ) karşılaştırmak isterseniz GLB, glTF, FBX, OBJ, USDZ farkları yazısı tam olarak bunu yapıyor.

GLB'nin içinde neler olur?

Bir GLB dosyası tipik olarak şunları taşır:

  • Geometri: köşe noktaları, yüzeyler, normaller (yüzey yönleri) ve UV koordinatları.
  • Malzemeler: temel renk, metaliklik, pürüzlülük, saydamlık gibi PBR parametreleri.
  • Dokular: temel renk, normal, pürüzlülük/metaliklik, oklüzyon ve emisyon gibi haritalar.
  • Sahne yapısı: nesnelerin hiyerarşisi, konumları, dönüşleri ve ölçekleri.
  • İsteğe bağlı: animasyonlar, kemik yapıları (skin), kameralar ve ışıklar.

Bir ürün modeli için çoğu zaman en önemli parçalar geometri, malzeme ve dokulardır. Işıklar ve kameralar ürün web'e taşındığında genellikle görüntüleyici tarafında kurulduğundan dosyaya dahil edilmez. Neyin dosyada olup neyin olmadığını bilmek, "Blender'da böyle görünüyordu ama web'de farklı" sürprizlerinin çoğunu açıklar: ışık ve ortam, çoğu durumda dosyanın değil, görüntüleyicinin işidir.

UV koordinatları da burada kritik bir kavram: dokuların modelin yüzeyine nasıl oturduğunu belirler. UV'nin ne olduğunu ve neden önemli olduğunu ürün modellerinde UV açma yazısında açıkladım.

GLB, optimizasyon demek değil

Ama önemli bir detay var: GLB kullanmak model otomatik olarak optimize oldu demek değil.

Dosyanın boyutu hâlâ önem taşıyor. Texture çözünürlüğü, polygon sayısı, materyal sayısı ve kullanılan görseller dosyanın toplam yükünü etkiliyor. Bu konuyu 3D modeli web için optimize etme yazısında ayrıca ele alıyorum.

Bu yanlış anlaşılma sık görülüyor: "GLB web formatıdır, öyleyse hafiftir." Gerçek şu ki GLB bir kapsayıcıdır; içine ne koyarsanız onu taşır. Dört bin pikselik beş dokuyu ve milyonlarca poligonu bir GLB'ye koymak, onu "web formatında" ağır bir dosya yapar. Format taşımayı kolaylaştırır, hafifletmeyi sağlamaz. Hafifletme ayrı bir iştir ve şu başlıklarda yapılır:

  • Geometri: gereksiz poligonları azaltmak, görünmeyen yüzeyleri temizlemek. Sayısal bir çerçeve için web'de 3D model için kaç polygon kullanılmalı yazısına bakabilirsiniz.
  • Dokular: çözünürlüğü ürünün ekrandaki boyutuna göre seçmek, modern sıkıştırmalı formatlar kullanmak, kullanılmayanları atmak. Kullanılmayan dokuların dosyaya sızması sık görülür; bunun için Blender'da texture temizliği yazısı yararlıdır.
  • Materyaller: aynı karakterdeki yüzeylerin aynı materyali paylaşması.
  • Sıkıştırma: Draco ya da Meshopt gibi geometri sıkıştırması, KTX2 (Basis Universal) gibi doku sıkıştırması.

Burada sıkıştırma uzantıları hakkında kısa bir not: Draco ve Meshopt, glTF için kullanılan iki yaygın geometri sıkıştırma yöntemidir; ikisi de dosyayı küçültür, ancak görüntüleyicinin ilgili çözücüyü desteklemesi gerekir. Doku tarafında ise KTX2 formatı hem dosya boyutunu hem de ekran kartı belleği kullanımını azaltabilir. Hangi yöntemin kullanılacağı, hedef görüntüleyici ve proje ihtiyaçlarına göre belirlenir.

Süreçteki yeri

Bu yüzden ben GLB'yi bir “son aşama” gibi görüyorum. Önce modeli doğru hazırlamak gerekiyor, sonra doğru biçimde dışa aktarmak. Blender tarafındaki ayrıntılar için Blender'dan GLB export notlarıma bakabilirsin.

Web için 3D üretmeye devam ettikçe benim için dosya formatı artık küçük bir teknik detay olmaktan çıktı. Tasarımın bir parçası haline geldi.

Süreci sıraya dizersek şöyle görünür: ürünün formu ve oranları kurulur, gereksiz geometri temizlenir, materyal ve dokular sadeleştirilir, sonra model GLB olarak dışa aktarılır, sıkıştırılır ve gerçek bir görüntüleyicide test edilir. GLB, bu zincirin en sonundaki halka gibi görünür; ama aslında zincirin baştan nasıl kurulacağını belirler. Çünkü hedef format biliniyorsa, malzemeler baştan glTF'in PBR mantığına uygun kurulur, ölçek ve eksen yönü baştan doğru ayarlanır ve dışa aktarımda sürpriz yaşanmaz. Genel hazırlık akışı için web sitesi için 3D ürün modeli nasıl hazırlanır yazısına bakabilirsiniz.

Eksen, ölçek ve birim: sessiz sorunlar

Formatlar arasında taşınan modellerde en sinsi sorunlar, bozulmuş bir doku değil, "aynı" olduğu varsayılan ama farklı tanımlanmış kavramlardır. glTF standardı, metre birimini ve yukarı yönü Y ekseni olarak kabul eder. Blender ise yukarı yönü Z ekseni olarak kullanır. Blender'ın glTF dışa aktarıcısı bu dönüşümü varsayılan olarak yapar (dışa aktarma penceresindeki "+Y Up" seçeneği), bu yüzden çoğu durumda model web'de dik açılır; ama sahnede nesneleri elle döndürülmüş, ölçeği uygulanmamış ya da çok büyük/küçük birimlerle kurulmuş modellerde sonuç beklenmedik olabilir.

Ölçek de benzer bir konu. Bir ürünü santimetre ölçüleriyle kurduysanız ve sahne birimi metre ise, modelin web'de bir yüzük kadar küçük ya da bir bina kadar büyük açılması mümkündür. Bu hem görüntüleyicinin kamera mesafesini hem de artırılmış gerçeklikte modelin gerçek boyutta görünmesini etkiler. AR'da model, odanızda gerçek boyutuyla belirdiği için ölçeğin doğru olması kritik hale gelir. Bu nedenle ürünü gerçek ölçülerine göre kurmak ve dışa aktarmadan önce nesne ölçeğini uygulamak (Blender'da nesnenin ölçek değerlerini uygulama işlemi) iyi bir alışkanlıktır. Bu ayrıntıları dışa aktarma notlarımda ele alıyorum: Blender'dan GLB export.

Pratik bir kontrol yöntemi var: dışa aktarılan GLB'yi bir web görüntüleyicide açıp, ürünün orijinal boyutuyla uyumlu göründüğüne ve zemine oturduğuna bakın. Eksen ya da ölçek hatası genellikle ilk bakışta ortaya çıkar. Bunu dışa aktarımın ardından değil, teslim ya da yayından önce yapmak, geri dönüş maliyetini düşürür.

GLB ne zaman uygun değil?

GLB her işin formatı değildir. Birkaç durumda başka bir format daha doğru olur:

  • Üretim hattında düzenleme: modeli başka bir 3D yazılımda yoğun şekilde düzenleyecekseniz, kaynak dosyayı (örneğin Blender dosyası) saklamak gerekir; GLB bir teslim/yayın formatıdır, kaynak değil.
  • iOS'ta artırılmış gerçeklik: Apple'ın AR Quick Look özelliği USDZ formatını kullanır. Bu yüzden AR kullanımında genellikle hem GLB (Android ve web) hem USDZ (iOS) hazırlanır. Ayrıntıları AR ile ürün gösterme yazısında bulabilirsiniz.
  • Mühendislik ve üretim: tolerans ve parça bilgisi gereken işlerde CAD formatları (STEP gibi) kullanılır; GLB bunun yerine geçmez.
  • Baskı için 3D: 3D yazıcıya gidecek modeller için STL ya da benzeri formatlar kullanılır.

Yani GLB, "web'de ve etkileşimli kullanımda ürünü göstermek" için çok iyi bir seçimdir; ama her amaç için tek format değildir. Bir projede çoğu zaman kaynak dosya, GLB ve gerekiyorsa USDZ birlikte bulunur.

Bir GLB dosyasını nasıl kontrol edersiniz?

Elinize bir GLB geldiğinde (kendi ürettiğiniz ya da size teslim edilen) onu körlemesine kullanmak yerine birkaç şeyi kontrol edebilirsiniz:

  • Dosya boyutu: hedefinize uygun mu? Büyükse hangi bileşen (dokular mı, geometri mi) sorumlu?
  • Görünüm: bir web görüntüleyicide açın; malzemeler, renkler ve yüzeyler beklediğiniz gibi mi?
  • Ölçek ve duruş: model doğru boyutta ve doğru yönde açılıyor mu?
  • Eksik doku/yüzey: arkada ya da altta delik, ters dönmüş yüzey ya da eksik doku var mı?
  • Malzeme adları: renk seçici gibi etkileşim planlıyorsanız malzemeler anlamlı adlarla ayrılmış mı?

Bu kontrolleri yapmak için ayrıca özel yazılım gerekmez; bir `model-viewer` sayfası, Three.js'in editörü ya da basit bir çevrimiçi glTF görüntüleyici yeterlidir. Önemli olan, dosyayı ürettiğiniz ortamın dışında, bir web görüntüleyicide görmektir.

Sık yapılan hatalar

  • "GLB = optimize" varsaymak. Format hafiflik garantisi vermez.
  • Kaynak dosyayı saklamamak. GLB'den geriye dönük düzenleme yapmak zordur.
  • Dışa aktarma ayarlarını varsayılana bırakıp test etmemek. Ölçek, eksen ve modifier uygulaması beklenmedik sonuçlar verebilir.
  • Dosya adlarında ve malzeme adlarında düzensizlik. Sonradan kodla erişmek ve sorun gidermek zorlaşır.
  • Tek bir görüntüleyiciye bakıp "tamam" demek. Farklı görüntüleyicilerde ışık farklıdır; en azından hedef platformda kontrol edin.

Daha geniş bir hata listesi için 3D ürünü web'e taşırken en çok yapılan hatalar yazısına bakabilirsiniz. GLB'nin sitede nasıl kullanıldığını görmek için web sitesinde döndürülebilir 3D ürün modeli rehberi ve model-viewer ile 3D model ekleme yazısı uygulama tarafını anlatıyor.

Kendi ürününüzün web için GLB olarak hazırlanması gerekiyorsa web için 3D ürün modeli hizmeti sayfasında kapsamı görebilir, teklif sayfasından brief'inizi iletebilirsiniz. Gerçek bir uygulama örneği için Aura Reformer çalışması, altı ürünün web'de döndürülüp yakınlaştırılabildiği bir projedir.

Sık sorulan sorular

GLB ile glTF aynı şey mi?

Aynı standardın iki paketleme biçimidir. glTF, JSON ve ayrı dosyalardan oluşur; GLB ise aynı bilgileri tek bir ikili dosyada toplar. İçerik olarak benzerdir, kullanım kolaylığı açısından web'de GLB daha pratiktir.

GLB dosyasını nasıl açarım?

Bir web tarayıcısında `model-viewer` gibi bir bileşenle, Three.js ile ya da Blender gibi bir 3D yazılımda içe aktararak açabilirsiniz. Ayrıca birçok işletim sistemi ve çevrimiçi görüntüleyici GLB önizlemesi sunar.

GLB dosyası neden bu kadar büyük çıktı?

Çoğunlukla büyük dokular, yüksek poligon sayısı ya da kullanılmayan haritalar sorumludur. GLB bir kapsayıcıdır; içine ne konursa taşır. Dokuları küçültmek, geometriyi sadeleştirmek ve sıkıştırma uygulamak boyutu belirgin biçimde düşürür.

iPhone'da AR için GLB yeterli mi?

Genellikle hayır. iOS'taki AR Quick Look özelliği USDZ ister. Pratikte AR için hem GLB hem USDZ hazırlanır; bazı araçlar bu dönüşümü otomatik yapabilir.

GLB'den tekrar düzenlenebilir bir modele dönebilir miyim?

Blender gibi yazılımlar GLB dosyasını içe aktarabilir, ama modelleme geçmişi (modifier'lar, ayrıntılı yapı) kaybolmuştur. Bu yüzden kaynak dosyayı saklamak önemlidir.

Sonuç

GLB, web'de 3D ürün göstermek için sağlam bir kapsayıcı; ama hafiflik ve kalite, içine ne koyduğunuza bağlı. Format kararını işin başında vermek, malzemeyi, ölçeği ve dosya yapısını ona göre kurmak ve sonucu gerçek bir görüntüleyicide test etmek, GLB'yi küçük bir teknik ayrıntı olmaktan çıkarıp tasarımın parçası yapıyor.

Aura Reformer Cadillac: dört direkli çerçeve, yaylar, trapez ve pofuduk askı, şeffaf zeminde
İlgili çalışmaAura ReformerÜrün Modelleme · Müşteri Çalışması · Blender · EEVEE · 6 ürün
Geminin tam boy 3D ürün görseli: siyah yelkenler açık, güvertede fener ışıkları, şeffaf zemin üzerinde izole render.
İlgili çalışmaGemiSinematik kamera yolu · Blender · EEVEE · 1.500 kare · 24 fps
Ahmet Salih Haroğlu3D sanatçı · dijital üretici · İstanbul

Aklınızda bir proje mi var?

Proje talebi gönder →

Bülten

Notlar, teknik rehberler ve yeni çalışmalar.