Mengapa Ukuran Model 3D Begitu Berat?

File GLB Anda hanya 10MB, tetapi di ponsel pintar memakan 200MB VRAM dan menyebabkan crash. Mari kita bedah tuntas apa yang sebenarnya terjadi di balik layar.

Kris
Kompresi 3DglTFWebGLPerforma

Model Anda Menyimpan Beban Tersembunyi

Anda mengekspor file GLB berukuran 10MB. Tampak ringkas dan wajar. Namun saat dibuka di browser ponsel pintar, yang terjadi adalah layar putih, lag parah, bahkan browser mendadak tertutup (crash).

Model berjalan mulus di laptop desktop, tetapi bermasalah di perangkat mobile. Ini bukan kesalahan kode Anda; file 3D memiliki karakteristik yang tidak biasa: ukuran file di disk sangat berbeda dengan konsumsi memori saat berada di VRAM GPU.

File gambar JPEG di disk mungkin hanya 200KB. Namun GPU tidak mengenali kompresi JPEG; GPU hanya dapat memproses larik piksel mentah. Sebelum masuk ke VRAM, gambar tersebut harus diekstrak sepenuhnya. Satu tekstur 2048×2048 setelah diekstrak membutuhkan sekitar 22MB VRAM. Jika satu material PBR menggunakan 6 peta tekstur (albedo, normal, roughness, metallic, AO, emissive), satu material saja menghabiskan 132MB VRAM.

Jika ponsel hanya memiliki kapasitas VRAM bersama sebesar 2-4GB, tekstur dari satu model saja sudah menyita 3-6% total memori. Bagaimana jika ada 10 model dalam satu adegan?

Ke Mana Ukuran File 3D Sebenarnya Mengalir?

Model GLB standar tersusun atas tiga komponen utama: data vertex, peta tekstur gambar, serta metadata dan animasi.

Proporsi ukuran pada model PBR nyata:

KomponenIsi DataProporsi TipikalKeterangan
Peta Teksturalbedo, normal, roughness, metallic, AO, dll.70-85%Komponen paling berat
Data Vertexkoordinat posisi, normal, UV, tangen, warna10-20%Bergantung kepadatan geometri
Data Animasitulang (bones), skinning, keyframe0-15%Hanya ada pada model beranimasi
Lainnyadefinisi material, struktur hierarki, kamera< 2%Sangat kecil

Peta tekstur menyumbang sekitar 80% dari total ukuran. Sering kali praktisi mengira perlu mengoptimasi vertex terlebih dahulu, padahal beban terbesar berada pada tekstur.

Komposisi peta tekstur PBR pada model 3D

"Ringan di Disk" Bukan Berarti "Ringan di VRAM"

Ini adalah konsep paling penting untuk memahami performa grafis 3D web.

Format PNG dan JPEG dirancang untuk efisiensi jaringan internet: kecil di disk dan cepat diunduh. Namun GPU tidak bisa membaca format tersebut secara langsung dan harus mengekstraknya menjadi piksel mentah berdasarkan rumus:

Konsumsi VRAM = Lebar × Tinggi × 4 byte (RGBA) × 1.333 (dengan mipmaps)

Tekstur RGBA 4096×4096:

ParameterNilai
Ukuran file PNG di disk~8MB
Ukuran file JPEG di disk~1.5MB
Konsumsi VRAM (dengan mipmaps)~87MB

File JPEG 1.5MB membengkak menjadi 87MB di VRAM GPU.

Apa itu mipmaps? GPU membuat rangkaian versi tekstur yang ukurannya diperkecil secara bertahap dari ukuran penuh hingga 1×1 piksel. Ini membuat objek yang jauh tampak lebih halus dan cepat dirender, dengan tambahan biaya sekitar 33% VRAM. Hampir seluruh engine 3D mengaktifkan mipmaps secara standar.

PNG dan JPEG ibarat kantong pakaian vakum saat bepergian: sangat ringkas saat dibawa, namun harus dibuka dan mengembang penuh setibanya di tujuan. Unduhan cepat, namun tidak menghemat ruang memori grafis sama sekali.

Perbandingan ukuran penyimpanan disk dan ekspansi memori VRAM GPU

Dampak Kehabisan Memori VRAM

Perangkat tidak akan menampilkan dialog ramah saat VRAM habis:

  • Di ponsel pintar: layar menjadi putih seketika atau sistem operasi menutup tab browser secara paksa.
  • Di headset VR: penurunan frame rate drastis yang menyebabkan disorientasi dan rasa mual (motion sickness).
  • Di desktop: tekstur berkedip, resolusi turun otomatis, dan animasi melambat.

Dua Jalur Utama Kompresi 3D

Kompresi model 3D terbagi menjadi dua pendekatan:

Kompresi Vertex: menyimpan koordinat posisi, normal, dan UV secara lebih ringkas (misalnya kuantisasi dari float 32-bit ke integer 16-bit). Solusi utama: Draco, MeshOpt, dan KHR_mesh_quantization.

Kompresi Tekstur: mempertahankan tekstur tetap terkompresi di dalam memori VRAM dan mendekode piksel secara instan saat render berlangsung. Solusi utama: KTX2 + Basis Universal.

AspekKompresi VertexKompresi Tekstur
Yang dikurangiData geometri meshPeta tekstur gambar
Hasil tipikalPangkas ukuran file 50-90%Pangkas disk 50-70%, VRAM 75%
Penurunan kualitas?Ya (presisi desimal)Ya (detail visual)
Penggunaan idealModel padat geometriHampir semua model PBR

Kerap kali terjadi kekeliruan di mana pengguna hanya mengompresi vertex dengan Draco lalu menganggap pekerjaan selesai, padahal tekstur masih menyumbang 80% ukuran model. Optimasi maksimal membutuhkan penanganan kedua aspek tersebut secara seimbang.

Tidak Ada Solusi Tunggal untuk Semua Kasus

Strategi kompresi harus disesuaikan dengan platform sasaran:

SkenarioBottleneck UtamaFokus Optimasi
Web DesktopKecepatan unduhUkuran file di disk
Browser MobileKapasitas VRAMKompresi tekstur KTX2
Headset VRVRAM + kestabilan FPSKompresi tekstur + reduksi poligon
Mini ProgramBatas ukuran paketSolusi ringan (MeshOpt)
Adegan KompleksVRAM + Draw CallsKompresi menyeluruh + LOD

Langkah Selanjutnya

Setelah memahami akar masalahnya, artikel berikutnya akan membahas praktik langsung menggunakan tiga teknik kompresi vertex: Kuantisasi, MeshOpt, dan Draco.

Alat Terkait

6
Lihat Semua

Kompresi Model 3D

Model 3D ke Gambar

Penampil Model 3D

Kompresi Verteks Model 3D

STL ke Gambar

Penampil GLB