holodepth

Babylon.js · GUI & UI

UI texture logic: arayüzün bitmap gerçekliği

Babylon.js GUI'yi düzenleyen kontrol ağacı soyuttur; sahneye giden gerçek çıktı ise çoğu zaman dinamik olarak güncellenen bir dokudır — pikseller çizilir, şeffaf bölgeler karıştırılır, sahneye bir materyal üzerinden bağlanır. Bu sayfa «hangi düğmeyi eklerim?» değil; doku nasıl yaşar, ne zaman pahalıdır, nerede bulanır sorularını yanıtlar.

Holodepth Three.js tarafında benzer rol çoğu zaman CanvasTexture veya harici canvas'i materyale bağlamakla anlatılır; burada motorun gelişmiş dinamik doku ( Advanced Dynamic Texture) çizgisinde düşünmeyi sabitliyoruz — kopyala-yapıştır API değil, aynı fiziksel gerçeklik ( bitmap üzerinden okuma).

Özet: dört mühendislik sorusu

Soru Kararın etkisi Belirti
Kaç piksel? Bellek ve netlik. Teksür bulanık veya bellek şişmesi.
Ne sıklıkla yenilenir? Kare bütçesi. Düşük FPS, gecikmeli düğme tepkisi.
Şeffaflık nasıl karışır? Sahne ile birleşim. Kenarda parlak halo, soluk metin.
Örnekleme ve UV Kenar keskinliği ve tıklama eşlemesi. Yumuşak kenarlı yazı; kayık hit test.

Çözünürlük ve bellek ölçümü

Özel yapı: dokunun iç boyutu ( width × height) doğrudan piksel sayısı ve dolayısıyla bellek ile doğrusal ilişkilidir; iki kat genişlik yaklaşık dört kat alan demektir. Yüksek iç çözünürlük metni keskin gösterir fakat mobil ve düşük güçlü cihazlarda maliyet artar. Tam ekran ve sahne içi panel için «aynı rakamı kullanmak» şart değildir — küçük yüzey taşıyıcıda daha küçük dokunun yetebilir ( 3D GUI · ölçek ile birlikte okuyun).

Tam ekranda «ideal tuval» seçimi yazı netliğini tasarım biriminde tutar; ayrıntılı ölçek sözleşmesi Fullscreen UI · ideal genişlik konusunda. Bu sayfada yalnızca bitmap boyutu ile bellek ilişkisi sabittir — aynı mantık, ekrana yayılmış veya örgü üzerinde küçük bir yüzeye sarılmış olsun, piksel sayısıyla hesaplanır. İki ayrı GUI dokusu aynı anda yaşıyorsa bellek maliyeti toplanır; tek dokuda birleştirmek mümkünse cihaz başına tavanı düşürür.

  • Alan: çözünürlük karesel büyür; «biraz daha geniş» çoğu zaman ucuz değildir.
  • Hedef: tam ekran HUD ile dünya paneli için ayrı iç boyut hedefleri seçin; tek rakam zorunluluğu yoktur.
  • Ölçüm: şüphede cihaz profili açıp doku bellek tahminini gerçek ölçümle doğrulayın.

Güncelleme: her kare mi, yalnız değişim mi?

Özel yapı: kontrol ağacı her düzenlendiğinde doku tarafında iş kuyruğu oluşur; animasyonlu bir öğe sürekli titriyorsa «sabit bir panel» ile aynı maliyette değildir. Pratikte statik yerleşimi sık değiştirmemek, dinamik içeriği mümkün olduğunca sınırlı alt ağaçta tutmak ve gereksiz yeniden çizmeyi önlemek kare stabilitesine yardım eder. Tam ekran ölçek ve yeniden boyut konuları ( Fullscreen UI · performans, Responsive UI · resize) bu yükü tetikleyebilir — pencere oynayınca doku da yeniden örneklenir.

Kare bütçesini yalnızca «kaç üçgen» ile değil, güncelleme aşamasında GUI raster maliyetiyle birlikte okuyun; güncelleme ve çizim iş bölümü Render döngüsü · güncelleme ve çizim sayfasında ayrıntılanır — burada doku kuyruğunun varlığı yeter. Yüksek frekanslı metin/sayaç için tam tuval yerine sınırlı bölge veya seyrek yenileme stratejisi tam ekran performans özetinde paralel düşünülür; tekrar etmek yerine aynı ilkeyi mesh bağlamına uygulayın.

Kısa teşhis

FPS düşüşünde önce sahne mi yoksa GUI mi suçlu ayırın: arayüzü geçici kapatıp ölçüm yapmak sık kullanılan yöntemdir. Düşüş yalnızca pencere sürüklerken görünüyorsa resize → doku yeniden örneklemesi zincirini ( Responsive UI) şüphelenin; sürekli düşüşte animasyonlu kontrol veya her karede tam yeniden çizim adaydır.

  • Statik: yerleşim ve stil mümkün olduğunca seyrek değişsin.
  • Dinamik: canlı alanı küçük alt ağaçta veya düşük frekansta güncelleyin.
  • Resize: motor senkronu doku boyutunu tetikleyebilir; maliyeti profil ile doğrulayın.

Şeffaflık ve sahne ile karışım

Özel yapı: GUI dokusu şeffaf bölgeler içerdiğinde pikseller sahne rengiyle karıştırılır ( alpha blending). Kenarlarda gözlenen hafif parlak çember veya «kirli» metin genelde örnekleme ( filtering) ile birlikte ortaya çıkar; tam opak arka plan kullanmak sorunu maskeleyebilir fakat cam efekt isteyen tasarımda materyal ve doku tarafını birlikte düşünmek gerekir. Bu sayfa shader kodu vermez; üretimde tek tip karışım kuralı ( öncarpılmış şeffaflık vs doğrusal) seçip sahne geri kalanıyla uyumlu tutmak en az iş çıkarır.

Aynı pikselde hem sahne hem GUI katkısı varken çizim sırası ve materyal opaklığı beklenmedik ton üretir; bu, PBR veya gecikmeli geçiş kanalı ayrıntısı değil, katmanlama disiplini meselesidir — renk uzayı tutarsızlığı yaşamamak için ekipte tek sözlük seçin. Kenar halesi hem görsel hem tıklama belirsizliği ( hit test) üretebilir; cam görünümü şart değilse panelde opak zemin en az riskli yoldur.

Tek sözlük

«Öncarpılmış şeffaflık mı, doğrusal mı?» sorusunu sahne genelinde cevaplayın; yarı yarıya karışık projelerde GUI kenarında parlayan soluk lekeler sık görülür. Shader içeriği için Holodepth'te Material pipeline sayfasına yönelin — burada yalnızca doku–sahne birleşiminin maliyet ve tutarlılık yüzü özetlenir.

  • Görsel: şeffaf metin + ince çizgi → halo ve solukluk riski.
  • Etkileşim: yarı saydam kenarda hangi kontrolün seçildiği belirsizleşebilir.
  • Ürün: tek karışım kuralı; gerekiyorsa cam için materyal + doku birlikte planlanır.

Örnekleme, UV ve tıklama isabeti

Özel yapı: doku örneklenirken kenar yumuşatma ( filtering) devreye girer; vektör yazı kenarı bir miktar «taşar» ve komşu pikseller karışır — görsel olarak hoş olabilir, fakat sınır pikselinde hangi kontrolün seçildiği belirsizleşebilir. Sahne içi panelde UV ile dünya koordinatı arasındaki zincir ( 3D GUI · UV zinciri) zaten kritik; doku çözünürlüğü düşükse ve örnekleme agresifse hata payı büyür. Keskin arayüz istiyorsanız iç çözünürlük ve kontrol kenar boşluklarını birlikte ayarlayın.

Tam ekranda isabet ekran pikselleriyle hizalıdır; mesh üzerinde ise önce ışın taşıyıcıya değer, sonra UV altında kontrol seçilir — «görünen düğme» ile «tıklanan düğme» ayrımı burada sık kopar. Teşhis akışı 3D GUI · UV teşhis ipucu kutusundaki gibi iki adımlıdır: önce örgü isabeti, sonra UV aralığı.

  • Görsel: yumuşak kenar; ince çizgilerde özellikle belirgin.
  • Etkileşim: birkaç piksel kayma yanlış düğmeye veya «tıklanmıyor» hissine yol açar.
  • Çözüm: net tasarım birimi + yeterli iç çözünürlük + makul dolgu; gerekirse kenar etkileşim alanını tasarımda genişletin.

Aynı çizim, iki projeksiyon

Özel yapı: tam ekran ( Fullscreen UI · ekran katmanı) ile örgüye sarılmış doku aynı «bitmap üretimi» mantığını paylaşabilir; fark sahneye nasıl yansıdığıdır — biri doğrudan görüntü düzlemine oturur, diğeri üçgende bir yüzey üzerinden projeksiyona girer. Bellek ve güncelleme maliyeti hesabını tek başına «fullscreen mi» diye ayırmayın; iç çözünürlük ve animasyon yoğunluğu belirleyicidir.

Aynı anda iki büyük dinamik doku (tam ekran HUD + sahne içi panel) çoğu projede mümkündür; maliyet toplamı her iki iç boyut ve yenileme sıklığıyla büyür. Taşıyıcı örgü tarafı 3D GUI · taşıyıcı örgü konusunda sabitlenir — burada yalnızca aynı bitmap motorunun iki projeksiyonu vurgulanır. Birini kapatmak yerine iç çözünürlüğü veya animasyonu düşürmek çoğu zaman daha az ürün riski taşır.

  • Ortak: kontrol ağacı → raster; fark kamera/projeksiyon yolu.
  • Bellek: iki doku = iki piksel yığını; birleştirme mümkünse değerlendirin.
  • Girdi: tam ekran önceliği mesh panelini etkileyebilir ( 3D GUI · katman önceliği).

Three.js ile üst üste okuma

Three.js tarafında aynı rol genelde 2B canvas üzerinde çizim + CanvasTexture veya harici bitmap akışı ile modellenir; «ne zaman needsUpdate» ve «hangi çözünürlükte tutayım» soruları sizin kodunuzdadır. Babylon.js'te bu sayfadaki maliyet eksenleri (iç boyut, yenileme, şeffaflık, örnekleme) aynen geçerli; fark, raster işinin çoğunun motor GUI hattına bağlanmasıdır.

Çakışmayı önleyen çerçeve

Three.js öğretilerinde bir canvas'i her kare güncelleyip CanvasTexture olarak bağlamak klasiktir; Babylon.js'te GUI çizimi çoğu zaman motor içi dinamik doku yolundan beslenir — ham kavram «bit eşlemesi üzerinden arayüz» olduğu için öğrenme taşınır, satır satır kod taşınmaz. Bellek ve yeniden çizim soruları her iki tarafta da geçerlidir.

Taşınan şey API değil, bütçe alışkanlığıdır: piksel alanı karesel büyür, sürekli animasyon pahalıdır, şeffaf kenar hem görüntü hem isabeti zorlaştırır. Tam ekran / mesh ayrımını Three dünyasında DOM üst katmanı ile materyal dokusu olarak düşünmek Fullscreen UI · Three okuması ile eşlenir; sahne içi panel için ise 3D GUI · Three okuması tamamlayıcıdır.

  • Ortak: bitmap gerçekliği; fark rasterı kimin ürettiği.
  • Three: canvas döngüsü ve doku güncelleme bayrakları sizde.
  • Babylon: kontrol ağacı ile doku kuyruğu birlikte düşünülür; bu sayfanın ilk beş bölümünde özetlenir.

GUI dizisinden sonra: mesh & materyal

Arayüz dokusu netleştikten sonra yüzey ve boru hattı sırası için Material pipeline sayfasına geçebilirsiniz. Önceki adım: Responsive UI.