holodepth

3D Model Formatları · FBX · Runtime Sorunları

Parse Süresi: Bavulu Açma Saati

«Dosya 40 MB ama editör 20 saniye donuyor» kilo şikâyeti değil; okuma + düğüm grafı kurma + sahneye dökme saatlerinin toplamıdır. Büyük Dosya Boyutu bavul kilosunu tarttı; bu sayfa: FBX'in açılış süresini anlatır.

Holodepth'te parse süresi, diskteki bayt sayısının gölgesi değildir. Loader dosyayı okur, Objects/Connections (veya eşdeğer) grafını örer, geometry ve animasyon verisini çalışma zamanı nesnelerine çevirir. Bu zincirdeki her halka kendi saatini çalıştırır. glTF Runtime Performance web kare süresi ve yük profilini; OBJ büyük dosya metin satır vergisini işler. Burada odak: FBX consumer'ının kapıdan içeri alma maliyeti.

Sayfayı bitirdiğinizde şu cümleyi kurabilmelisiniz: «Parse süresi üç saatten oluşur: IO, graf örme, sahneleştirme. Boyut ipucu verir ama tek ölçü değildir. ASCII, bağlantı yoğunluğu ve eğri yükü saati şişirir. Loader ailesi aynı dosyada farklı süre üretir. Ölçüm protokolü olmadan «yavaş FBX» boş etikettir. Dönüşüm hatası ayrı semptomdur.»

Bu sayfanın sınırı · komşu konularla ayrım

Bu sayfa FBX'te açılış / parse süresini anlatır:

  • Üç saat modeli (IO / graf / sahne)
  • Boyuttan bağımsız yavaşlık sürücüleri
  • Loader farkları ve ölçüm disiplini
  • Zaman diyeti ve Holodepth teşhis

Bilinçli olarak dışarıda bırakılan konular:

Kısa ayrım: Parse Süresi «kaç saniye açılır?» · Büyük Dosya «kaç MB?» · Dönüşüm «açıldı ama yanlış mı?»

Kronometre: kilo değil, süre

Kullanıcı «yavaş» dediğinde Holodepth önce kronometre ister: dosya seçildi → ilk iskelet/mesh görünür → scrub hazır. Bu aralık parse + sahneleştirme ailesidir. Ağ indirme süresi (CDN) ayrı tutulur; aksi halde yavaş net «yavaş FBX» sanılır.

Süre ölçülmeden diyet yapılamaz; hissiyat ticket'ı kök bulmaz.

Üç saat modeli

  1. IO saati: baytların disk/belleğe okunması
  2. Graf saati: düğümlerin ve Connections bağlarının çözülmesi, isim/ID haritaları
  3. Sahne saati: runtime mesh/iskelet/materyal/anim nesnelerinin kurulması (bazen GPU upload)

Küçük dosya + yoğun bağlantı grafı: IO kısa, graf uzun. Büyük düz mesh: IO uzun, graf sade. Ticket'ta hangi saatin baskın olduğunu ayırmadan «optimize FBX» boş tavsiyedir.

Boyut ipucu verir, hüküm vermez

Büyük Dosya sayfasındaki beş aile (geo, deform, zaman, medya, gürültü) süreye de sızar; ama ağırlık sırası değişebilir. Gömülü texture IO'yu şişirir; binlerce ufak helper düğümü graf saatini şişirir. Aynı MB, farklı baskın saat. Holodepth: önce süre profili, sonra hangi bavul ailesinin o saati beslediği.

Bağ grafı yoğunluğu

Scene Verisi'ndeki Objects/Connections vatandaşlığı parse'ta fatura keser. Her ek bağlantı çözüm, doğrulama ve harita güncellemesi demektir. Kontrol rig'i bake edilmeden bırakılmış yüzlerce constraint izi, consumer'ın graf saatini şişirir; viewport'ta «görünmez» olsalar bile.

Hijyen (Maya/Blender çıkış sayfaları) burada saniye kazandırır: az düğüm, az bağ, net hiyerarşi.

ASCII tokenize vergisi

ASCII FBX okunabilirlik için iyidir; parser karakter karakter / token token ilerler. Binary aynı anlamı daha az CPU ile taşır. Production'da ASCII unutulursa hem MB (önceki sayfa) hem saniye (bu sayfa) cezası birikir. Debug kopyasını süre benchmark'ına koymayın; yanlış kök bulursunuz.

Eğri yükü: take'i «kurmak»

Bazı loader'lar import'ta tüm AnimationStack eğrilerini belleğe açar ve anahtar tabloları kurar; bazıları tembel yükler. Yoğun MoCap take'i sahne saatini (veya ilk scrub'ı) uzatır. «Parse bitti» ile «scrub akıcı» aynı an değildir; ölçüm noktasını netleştirin.

Seyreltme / take ayırma hem kilo hem süre diyetidir; hangi saati kestiğinizi bilin.

Loader ailesi: aynı dosya, farklı süre

Resmi FBX SDK yolu, oyun motoru importer'ı, DCC native open ve üçüncü parti parser aynı baytları farklı algoritmalarla işler. Biri Connections'ı agresif doğrular; diğeri geometriyi hemen GPU'ya iter. «FBX yavaş» cümlesine consumer adını eklemeden diyet yapmak, yanlış aracı suçlamaktır.

Holodepth ticket şablonu: dosya + consumer + ölçülen aralık + baskın saat tahmini.

Donma hissi: ana iş parçacığı

Editör veya (nadiren) tarayıcıda FBX yükü UI thread'indeyse kullanıcı «çöktü» sanır; aslında parse bitmemiştir. Süre aynı kalsa bile arka plan iş parçacığı + ilerleme çubuğu algıyı değiştirir. Bu sayfa format diyetini anlatır; uygulama mimarisi (worker, async import) tamamlayıcıdır, yerine geçmez: şişman graf yine pahalıdır.

Web ürününde FBX'i son mil yapmak hem boyut hem parse cezasını kullanıcıya keser; Büyük Dosya'daki web kapısı burada süre olarak yinelenir.

Ölçüm protokolü

  1. Soğuk başlangıç (önbelleksiz) ve sıcak ikinci açılış ayrı not
  2. Aynı makine / aynı consumer sürümü
  3. Üç tekrar, medyan süre
  4. Noktalar: IO bitti / graf bitti / ilk kare / scrub hazır (mümkünse)
  5. ASCII/binary ve take sayısı manifesto ile birlikte

«Biraz yavaş» ile «p95 = 18 s» farklı yönetim dilidir. Character Pipeline kapısına süre eşiği konabilir (ör. production kutu < N saniye bu importer'da).

Zaman diyeti (kilo diyetinden farkı)

  • Graf ağır: helper/kontrol düğümü kes; bake sonrası temizle
  • IO ağır: embed kapat, binary kullan, take ayır
  • Sahne ağır: ilk yükte tüm take'i kurmayı ertele; LOD çatalı
  • ASCII: production binary

Kör decimate süre sorununu çözmeyebilir; bağ sayısını düşürmek çözer. Kör take silme yüzü öldürebilir; tembel yükleme veya paket ayrımı daha doğru olabilir.

Sık süre kırılmaları

  • Küçük MB, dev kontrol rig + constraint izi
  • ASCII production + yoğun Connections
  • İlk scrub'da tüm MoCap eğrileri senkron kuruluyor
  • Benchmark yanlış loader'da yapıldı; motor farklı
  • Ağ indirme parse'a dahil sayıldı
  • «Yavaş» aslında dönüşüm sonsuz döngü / retry (sonraki sayfa)

Holodepth perspektifleri

Süre etiketi

Manifesto'ya «parse budget» alanı: hedef consumer + medyan soğuk açılış. Bütçe aşımı kapıda kırmızı.

Saati ayır, sonra kes

Profil yoksa diyet spekülasyondur. Basit ayırım bile (IO vs geri kalan) yanlış aileyi kesmeyi önler.

Teşhis maddeleri

  1. Ölçülen aralık net mi (indirme hariç)?
  2. Üç saatten hangisi baskın?
  3. Consumer / loader adı yazıldı mı?
  4. ASCII mi, düğüm/bağ gürültüsü var mı?
  5. Take kurulumu parse'a mı scrub'a mı yığılıyor?
  6. Süre mi, yoksa dönüşüm/sürüm hatası mı?

Holodepth içgörüsü

«FBX yavaş açılıyor» ticket'ında önce MB'yi değil hangi saatin döndüğünü ve hangi loader'da sorun. Yanlış saati diyetlemek karakteri zayıflatır, süreyi indirmez.

Saat net; sırada yanlış dönüşüm

Açılış süresinin okunması sabitlendi. Sonraki sayfa «açıldı ama içerik yanlış / eksik» ailesini işler: Dönüşüm Problemleri.

Format okuyucusu özeti: Parse süresi IO + graf + sahne saatleridir. Boyut hüküm değildir. ASCII, bağ yoğunluğu ve eğri kuruluşu sık sürücülerdir. Ölçüm ve loader adı teşhisin parçasıdır.