GLB Sıkıştırma Aslında Ne Yapar?
Bir GLB'yi sıkıştırmak, aynı modelin daha az bayt kaplaması için dokularını ve geometrisini yeniden kodlamak demektir. Kazancın büyük kısmı dokulardan gelir: ölçtüğümüz sekiz Khronos örnek modelinde, dokusu olan her dosyanın büyük bölümünü görseller oluşturuyordu. Bu GLB sıkıştırıcı söz konusu görselleri küçültür, geometriyi temizler ve yeni bir .glb yazar; hepsi tarayıcınızda.
Daha küçük bir GLB ürün sayfasında daha hızlı yüklenir, 3D platformlarının ve pazar yerlerinin yükleme sınırlarının altında kalır ve telefonlarda daha az bellek kullanır. Bunun için modelin şeklinde, malzemelerinde ya da animasyonlarında hiçbir şeyin değişmesi gerekmez.
Bir GLB'de baytlar nereye gidiyor?
Bir GLB üç tür veri içerir: dokular (modelin üzerine sarılan görseller), geometri (köşe konumları, normaller ve üçgen listeleri) ve animasyon. Dokular GLB'nin içinde eksiksiz görsel dosyaları olarak saklanır; bunlar çoğu zaman 2048×2048 boyutunda PNG'lerdir. Yalnızca birkaç yüz üçgenli bir modelin bile 8 MB gelebilmesinin nedeni budur. Sıkıştırmadan önce kendi dosyanızın dağılımını görmek için onu GLB görüntüleyicide açın.
Kayıpsız temizlik ve kayıplı sıkıştırma
Bazı adımlar gözle görülen hiçbir şeyi değiştirmez: yinelenen verileri kaldırmak, hiçbir yerde kullanılmayan malzeme ve dokuları atmak ve birebir aynı köşe noktalarını birleştirmek. Asıl büyük kazanç kayıplı adımlardan gelir: daha küçük dokular, WebP ya da JPEG olarak yeniden kodlanan dokular ve daha az bitle saklanan köşe konumları. Kayıplı, gözle görülür biçimde daha kötü demek değildir; ama kontrol etmeye değer kısım budur ve “Önce / Sonra” anahtarı tam da bunun için var.
3 Adımda GLB Dosyası Sıkıştırma
.glb veya .gltf dosyanızı bırakın
“3D dosya seç” düğmesine tıklayın ya da bir .glb dosyasını görüntüleme alanına bırakın. .gltf dosyasını .bin ve doku dosyalarıyla birlikte seçin ya da klasörün tamamını bırakın; sonuç her zaman tek bir .glb dosyasıdır. Panel her dokuyu boyutu, formatı ve bayt miktarıyla listeler.
“Web”, “Uyumlu” ya da “Özel” hazır ayarını seçin
“Web” tarayıcılar için en küçük dosyayı oluşturur, “Uyumlu” dosyaya yeni uzantı eklemez, “Özel” ise doku boyutunu, formatını ve kalitesini kendiniz seçmenize olanak tanır. Doku tablosu, daha hiçbir düğmeye basmadan her dokunun neye dönüşeceğini gösterir.
Karşılaştırın, ardından indirin
“GLB'yi Sıkıştır” düğmesine basın. İşlem bittiğinde görünüm, kamera bıraktığınız yerde kalarak “Sonra” durumuna geçer; karşılaştırmak için B tuşuna basın ya da “Önce / Sonra” anahtarını kullanın, ardından “Sıkıştırılmış .glb dosyasını indir” düğmesine basın.
Bir .glb ya da dosyalarıyla birlikte bir .gltf seçin.
Modelin gideceği yere uygun hazır ayarı seçin.
“Önce” ve “Sonra” görünümlerini karşılaştırın, ardından indirin.
Dokular: Baytların Çoğu Buraya Gider
Bir GLB'deki her doku eksiksiz bir görsel dosyasıdır ve model ekranda gösterildiğinde GPU onu ham piksellere açar: 2048×2048 boyutunda bir doku, PNG dosyası ne kadar küçük olursa olsun, mipmap hesaba katılmadan yaklaşık 16 MB grafik belleği kaplar. Bu yüzden bir GLB'yi sıkıştırırken doku ayarları hem indirilecek dosyanın ne kadar büyük olacağını hem de modeli görüntülemenin ne kadar ağır olacağını belirler.
Dokuları yeniden boyutlandırma: 4096, 2048, 1024 mü, 512 mi?
Bir dokunun genişliğini ve yüksekliğini yarıya indirmek piksellerin dörtte birini bırakır. Modelin genellikle ekranın bir bölümünü kapladığı bir web sayfasında çoğu ürün için 1024 px yeterlidir; kapak çekimleri ve yakın çekimler için 2048 px korunmaya değer, 512 px ise küçük dekor nesnelerine uyar. Bu GLB sıkıştırıcı dokuları yalnızca küçültür, asla büyütmez ve oranlarını korur. Tek bir dokuyu elle yeniden boyutlandırmak için resim boyutlandırma aracını kullanın.
GLB içinde WebP mi, PNG mi, JPEG mi?
PNG ve JPEG, glTF'nin kendi parçasıdır; bu yüzden GLB dosyalarını açan her uygulama bunları okur. WebP genellikle en küçük dosyaları verir, ancak onu kullanan bir GLB EXT_texture_webp uzantısını bildirir ve dosyayı açan uygulamanın bu uzantıyı desteklemesi gerekir. JPEG şeffaflık saklayamaz; bu yüzden bu araç, pikselleri tamamen opak olmayan her dokuyu PNG olarak tutar. Formatlar arasındaki genel farklar için PNG WebP Dönüştürücü sayfasına bakın.
Normal haritaları daha nazik sıkıştırma ister
Normal haritası yüzey yönlerini renklerinde saklar; kayıplı sıkıştırmanın bıraktığı blok şeklindeki bozulmalar burada renk gürültüsü olarak değil, aydınlatma hataları olarak görünür. Hem “Web” hem de “Uyumlu” hazır ayarı normal haritalarına daha yüksek bir alt kalite sınırı (0,9) uygular. WebP ve JPEG ayrıca rengi düşük çözünürlükte saklar (renk alt örnekleme); bu da normal haritalarında ve pürüzlülük, metaliklik ve ortam kapatma bilgisini ayrı kanallara paketleyen dokularda bir miktar hassasiyet kaybına yol açar. Bu hassasiyet önemliyse “Özel” seçeneğini seçin ve orijinal formatı koruyun.
Şeffaflık içeren dokular
Yapraklar, çıkartmalar ve cam çoğu zaman bir alfa kanalına dayanır. WebP bu kanalı korur; JPEG koruyamaz, bu yüzden JPEG'e gidecek şeffaf bir doku bunun yerine PNG olarak kaydedilir. Ölçümlerimizde Lantern ve ToyCar bu nedenle birer ya da ikişer dokuyu PNG olarak tuttu.
Geometri Sıkıştırma: meshopt, Nicemleme ve Draco
Geometri genellikle bir GLB'nin küçük kısmıdır; ancak yoğun mesh'lerde, taramalarda ve animasyonlu karakterlerde dosyanın büyük bölümünü oluşturabilir. “Web” hazır ayarı geometriyi meshopt ile sıkıştırır; diğer hazır ayarlar kodlamayı olduğu gibi bırakır ve yalnızca temizler.
meshopt sıkıştırması ne yapar?
meshopt önce köşe noktalarını ve üçgenleri komşu veriler yan yana duracak şekilde yeniden sıralar, ardından konumları, normalleri ve doku koordinatlarını 32 bit kayan noktalı sayılar yerine küçük tam sayılar olarak saklar (nicemleme; KHR_mesh_quantization olarak bildirilir) ve son olarak sonucu EXT_meshopt_compression ile paketler. Tarayıcıda çok hızlı çözülür; three.js, model-viewer ve Babylon.js bu formatı okuyabilir.
Köşe birleştirme ve yinelenen verileri kaldırma
Dışa aktarıcılar çoğu zaman aynı köşe noktasını birkaç kez yazar, erişimcilerin (accessor) tamamını çoğaltır ya da hiçbir şeyin kullanmadığı malzeme ve dokuları geride bırakır. Özdeş köşe noktalarını birleştirmek ve kullanılmayan verileri ayıklamak kayıpsızdır ve her hazır ayarda çalışır; küçük Fox modelinde bu adım tek başına %32 kazanç sağladı.
Draco modelleri geometrisini neden korur?
Draco, çoğu zaman meshopt'tan daha sıkı sıkıştıran başka bir geometri sıkıştırma uzantısıdır. Draco'yu geri yazmak onun kodlayıcısını gerektirir; Draco'yu çözüp geometriyi Draco olmadan saklamak ise bir test mesh'ini 4 ila 13 kat büyüttü. Bu yüzden bir GLB zaten Draco kullanıyorsa bu araç yalnızca dokularını yeniden kodlar ve Draco geometrisi dahil diğer tüm baytları olduğu gibi bırakır. Böyle bir durumda sonuç kartı bunu belirtir.
Hangi Hazır Ayarı Seçmelisiniz?
GLB'nizi sıkıştırmadan önce modelin bundan sonra nereye gideceğini düşünün: doğru hazır ayar buna bağlıdır, çünkü en küçük dosyayı veren ayarlar her uygulamanın okuyamadığı glTF uzantılarına dayanır. Hazır ayarların altındaki not, mevcut ayarların ekleyeceği uzantıları listeler.
Web görüntüleyiciler için: three.js, model-viewer, Babylon.js
Web hazır ayarını seçin. Dokuları en fazla 1024 piksele ölçekler, WebP olarak kaydeder ve geometriyi meshopt ile sıkıştırır. Tarayıcı tabanlı görüntüleyiciler ve three.js ya da Babylon.js üzerine kurulu motorlar, bu hazır ayarın kullandığı üç uzantının hepsini okur; bu aracın ürettiği en küçük dosyalar da bunlardır: Khronos örneklerinde %48 ile %98,8 arasında daha küçük.
Blender, Unity ve masaüstü görüntüleyiciler için
Uyumlu hazır ayarını seçin. Dokuları 2048 piksele kadar korur, opak olanları JPEG, şeffaf olanları PNG olarak yazar ve hiçbir uzantı eklemez. Masaüstü araçları ve oyun motorlarının içe aktarıcıları WebP ve meshopt'u farklı ölçülerde destekler; bu yüzden karşı taraftaki yazılımı siz kontrol etmiyorsanız bunları içermeyen bir dosya güvenli seçimdir.
“Özel” seçeneği ne zaman kullanılır?
Dokuları orijinal boyutlarında tutmak, hassas veri haritalarında orijinal formatı korumak, kaliteyi yükseltmek ya da düşürmek veya meshopt'u kapatmak için “Özel” seçeneğini kullanın. Her ayarı değiştirdikçe doku tablosu güncellenir; böylece sıkıştırmadan önce ne olacağını görebilirsiniz.
Khronos Örnek Modellerinde Gerçek Sonuçlar
Ne kadar kazanç bekleyebileceğinizi görmek için bu sayfayla Khronos glTF Sample Assets koleksiyonundaki GLB dosyalarını sıkıştırdık: sekiz orijinal dosya, masaüstü bir bilgisayarda Chrome ile. “Web” hazır ayarıyla sekiz dosya ortalama %86, medyan değerde ise %96 küçüldü. En büyük kazanç Avocado'daydı: 7,73 MB'tan 0,09 MB'a; çünkü 2048×2048 boyutundaki üç PNG dokusu dosyanın neredeyse tamamını oluşturuyordu. Her model yaklaşık bir saniye sürdü.
“Uyumlu” dokuları 2048 pikselde tuttuğu ve WebP kullanmadığı için daha az kazanç sağlar; yine de sekiz modelin dördünü %83 ile %93 arasında küçülttü. En az küçülen modeller ya en çok geometriye sahip olanlar (ToyCar yaklaşık 109.000 üçgen içerir) ya da PNG olarak kalan şeffaf dokular içerenlerdir.
Ölçüm: Orijinal, Web ve Uyumlu
| Örnek model | Orijinal | Web hazır ayarı | Uyumlu hazır ayarı |
|---|---|---|---|
| Avocado | 7,73 MB | 0,09 MB (−%98,8) | 0,57 MB (−%92,6) |
| WaterBottle | 8,55 MB | 0,12 MB (−%98,6) | 0,88 MB (−%89,7) |
| BoomBox | 10,12 MB | 0,22 MB (−%97,8) | 1,12 MB (−%89,0) |
| Corset | 12,87 MB | 0,51 MB (−%96,0) | 2,15 MB (−%83,3) |
| Lantern | 9,12 MB | 0,36 MB (−%96,0) | 5,49 MB (−%39,8) |
| SheenChair | 3,93 MB | 0,97 MB (−%75,3) | 1,72 MB (−%56,3) |
| ToyCar | 5,17 MB | 1,30 MB (−%74,9) | 3,92 MB (−%24,2) |
| Fox | 0,16 MB | 0,08 MB (−%48,0) | 0,11 MB (−%31,9) |
Sıkıştırma Modelimi Bozar mı?
Bir GLB'yi sıkıştırmak, modelin ne olduğunu değil, verinin nasıl saklandığını değiştirir. Mesh'ler, malzemeler, düğüm adları, animasyonlar ve diğer glTF özellikleri aynen aktarılır; kontrol edilmesi gerekenler, yeni dosyanın gerektirdiği uzantılar ve dokuların yakından nasıl göründüğüdür.
Çıktının gerektirebileceği uzantılar
“Web” hazır ayarı EXT_texture_webp, EXT_meshopt_compression ve KHR_mesh_quantization uzantılarını ekleyebilir ve bunları zorunlu olarak işaretler; böylece bunları okuyamayan bir uygulama bozuk bir model göstermek yerine durumu bildirir. “Uyumlu” hiçbirini eklemez. Zaten başka uzantılar kullanan bir GLB bunları korur; bu araç bir uzantıyı tanımazsa yalnızca dokuları yeniden kodlamaya geçer, böylece anlamadığı hiçbir şeyi yeniden yazmaz.
Animasyonlar, iskeletler ve morph hedefleri
Animasyonlar, iskeletli (skinned) karakterler ve morph hedefleri sıkıştırmadan sağlam çıkar. meshopt animasyon anahtar karelerini de sıkıştırır ve nicemleme normal boyutlu modeller için yeterli hassasiyeti korur; çok büyük sahnelerde ya da milimetre cinsinden ölçülen mühendislik modellerinde sonucu tel kafes açıkken karşılaştırın veya “Özel” seçeneğinde meshopt'u kapatın.
KTX2 dokular olduğu gibi bırakılır
Zaten KTX2 (KHR_texture_basisu) olarak saklanan dokular GPU için sıkıştırılmıştır ve bellekte küçük kalır. Bu araç onları sıradan görsellere geri dönüştürmek yerine değiştirmeden korur.
GLB Dosyanız Sıkıştırmadan Sonra Neden Hâlâ Büyük?
Bir GLB'yi sıkıştırdığınızda kazanç küçük kalırsa panel genellikle nedenini gösterir. Dosya zaten sıkıştırılmış olabilir: zaten küçük WebP ya da JPEG görsellerinden oluşan dokular nadiren daha fazla küçülür ve araç, yeniden kodlama bir dokuyu küçültmediğinde orijinalini korur. Sonuç hiç küçülmeyecekse indirilecek bir şey olmaz; bu bilinçli bir tercihtir.
Yoğun taramalar ve fotogrametri
Taranmış nesneler ve fotogrametri modelleri çoğu zaman yüz binlerce, hatta milyonlarca üçgen içerir; bu durumda dosyayı dokular değil geometri doldurur. meshopt yardımcı olur, ama asıl çözüm daha az üçgendir: mesh'i bir 3D düzenleyicide, örneğin Blender'ın Decimate değiştiricisiyle seyreltin, ardından sonucu burada sıkıştırın.
Harici dosyalı .gltf sıkıştırma
Bir .gltf, geometrisini ve dokularını ayrı dosyalarda tutar. Hepsini seçin ya da klasörü bırakın; araç her şeyi tek bir sıkıştırılmış .glb dosyasında paketler. Draco kullanan bir .gltf önce .glb olarak dışa aktarılmalıdır, çünkü Draco verileri yalnızca bir GLB içinde değişmeden korunur.
Komut satırındaki karşılığı
Bu sayfa, açık kaynaklı glTF Transform kütüphanesini tarayıcınızda çalıştırır. Bir derleme hattında çok sayıda dosyayı sıkıştırmak istiyorsanız kütüphanenin komut satırı aracı benzer bir iş görür; örneğin gltf-transform optimize input.glb output.glb --compress meshopt --texture-compress webp --texture-size 1024.
Modeliniz Cihazınızdan Çıkmaz
Pek çok online GLB sıkıştırıcı dosyayı bir sunucuya yükler, bazıları da haftada kaç dosya sıkıştırabileceğinizi sınırlar. Burada ise işin tamamı tarayıcı sekmenizin içinde, arka planda çalışan bir iş parçacığında yürür: model diskinizden okunur, bellekte sıkıştırılır ve doğrudan indirme olarak geri kaydedilir. Bu; yayımlanmamış ürünler, müşteri işleri ve gizlilik sözleşmesi (NDA) kapsamındaki her şey için önemlidir. Sekmeyi kapattığınızda geride hiçbir şey kalmaz. Aynı şekilde çalışan diğer araçlar için tüm ücretsiz araçlarımıza göz atın.