holodepth

Babylon.js · Fizik

Debug visualization: fizik dünyasını görmek

Sorun çoğu zaman «matematik yanlış» değil yanlış geometriyi düzelttiğinizi sandığınız haldir: görünür mesh doğrudur; çarpışma başka şekildedir ( Kolizyon mantığı). Debug görselleştirme, fizik motorunun içinde tuttuğu gövdeleri sahneye şeffaf bir katman olarak yansıtmanızı veya vektörleri çizmenizi sağlar — üretim sahnesinde sürekli açık bırakılacak süs değildir.

Bu sayfa, belirli bir araç menüsünün tıklama listesi değildir; Babylon ekosisteminde sık rastlanan özel yapıları (kabuk örtüşmesi, ışın doğrulama, adım adım simülasyon, üretimden çıkarma) netleştirir — Three.js ArrowHelper / BoxHelper öğretimine çakışmadan tamamlayıcı okunur.

Özet: dört görsel teşhis yolu

Yol Ne doğrular? Dikkat
Çarpışma kabuğu Impostor şekli görsel ile örtüşüyor mu? Çok sayıda gövdede ek çizim maliyeti.
Işın / vektör çizimi Sorgu doğrultusu ve mesafe. Her kare çizmek pahalıdır — süreli göster.
Adım modu Tek fizik adımında ne oldu? Duraklatılmış sahne kullanıcı akışını keser.
Üretim dışı bayrak Yayımda debug kapalı mı? Yanlışlıkla bırakılırsa performans ve güven.

Çarpışma kabuğu ve görünür örgü

Tel kafes (wireframe) kabuk veya yarı saydam örgü, fizik gövdesinin sınırlarını doğrudan gösterir. Özel yapı: kabuk görünür mesh ile örtüşmüyorsa sorun çoğu zaman ölçek veya kök düğüm uyumsuzluğudur — materyal değil ( impostor · senkron). Aynı ayrım Kolizyon mantığı · görsel örgü ile çarpışma bölümünde kavramsal olarak anlatılır; burada yalnız göz ile doğrulama pratiğini sabitleriz.

Kabuk rengini gövde türüne göre kodlamak (zemin, düşman, tetikleyici) teşhisi hızlandırır; üretimde aynı renk şemasını dokümante edin. İki ekip üyesi aynı turuncu kabuğa farklı anlam yüklüyorsa, hata ayıklama toplantısı uzar — renk şeması küçük bir README maddesi olarak bile yazılı kalsın.

  • Örtüşme: kabuk tamamen dışarıdaysa ölçek veya yanlış parent önce şüphelidir.
  • Kısmi örtüşme: animasyonlu alt düğüm hareket ediyor, gövde sabit kaldıysa otorite hangi tarafta sorusuna dönün.
  • Hayalet: mesh gitti kabuk kaldıysa ömür — Impostor · dispose zincirini kontrol edin.

Işın ve vektör çizimi: sorguyu görünür kılma

Raycast mantığı soyuttur; çizilen kısa çizgi veya ok, başlangıç–bitiş ve uzunluk tutarsızlığını anında gösterir. Özel yapı: imleç veya kamera merkezinden çıkan ışın ile dünya uzayından çıkan ışın karıştırılırsa «hiç vurmuyor» sanılır — hangi uzayda tanımlandığını tekilleştirin. Ekran düzlemi (NDC) ile dünya vektörü arasında dönüşüm sırası yanlışsa çizgi «doğru görünür» ama kesişim bulunmaz; temas kaydı alanları Raycast · temas kaydı ile birlikte okunmalıdır — bu sayfa kesişim matematiğini tekrar etmez.

Aynı karede birden fazla ışın (pick + fizik + AI görüşü) varsa, her birini farklı renkle çizmek «görsel gürültü» gibi dursa da hangi sorgunun hangi hatayı ürettiğini ayırmanın en ucuz yoludur.

  • Başlangıç: kamera mı, nesne merkezi mi, silah ucu mu — tek cümleyle kodda adlandırın.
  • Uzunluk: sonsuz ışın sanısı; çoğu API'de üst sınır veya «max distance» zorunludur.
  • Filtre: çizgi doğru, isabet yoksa önce maske; sonra geometri ( Raycast · filtre).

Kısa kural

Debug çizgisini yalnızca sorgunun yapıldığı karede veya geçiş süresince gösterin; sürekli ekran çizgisi hem kare bütçesini hem okunabilirliği düşürür. Gerekirse «son N sorgu» kuyruğu tutun; film şeridi gibi kısa bir iz yeterlidir.

Adım modu ve duraklatma

Sürekli simülasyonda hata «bir sis içinde» kalır; fizik dünyasını tek adım ilerletip sahneyi gözlemlemek, penetrasyon ve sıçrama anlarını yakalamayı kolaylaştırır. Özel yapı: duraklatılmış sahne kullanıcıya ürün sunarken kabul edilebilir değildir — yalnız geliştirici oturumunda veya gizli kısayolla kullanın. Adım modu, zaman sözleşmesini değiştirmez; yalnız gözlem ritmini yavaşlatır — gerçek dünya zamanı ile kare süresi ilişkisi Senkron ve zaman adımı ile uyumlu düşünülmelidir.

«Duraklat + adım» kombinasyonu bazen ağ veya girdi işleyicisini de durdurur; tek adımda beklediğiniz olayın gelmemesi, olay kuyruğunun da donmuş olmasından kaynaklanabilir — motor belgesinde hangi alt sistemlerin durduğunu kontrol edin.

  • Geliştirici: tam duraklatma + adım + kabuk/ışın — ideal üçlü.
  • QA: kayıtlı tekrar üretimi; kullanıcı girdisi yoksa deterministik adım daha anlamlıdır.
  • Canlı: kapalı veya yalnız sunucu tarafı bayrak; istemcide gizli jest yasal / politika gereksinimlerine tabidir.

Üretim derlemesinden çıkarma

Debug çizimleri ve kabuklar ek geometri ve materyal işler; üretim ortamında yanlışlıkla açık kalmaları hem GPU hem güven açısından risk doğurur (iç sahne yapısını gösterme riski). Özel yapı: yapı bayrakları ( feature flag), ortam değişkeni veya derleme zamanı şartlı çıkarma ile debug kodunu ana paketten ayırın — tek bir «global true» ile kontrol etmek sonradan unutulur. İdeal olarak üretim paketinde debug ağacı hiç oluşmaz; beta kanalında ayrı derleme hedefi veya ayrı giriş noktası daha güvenlidir.

Sürekli entegrasyon, üretim yapılandırmasında yanlışlıkla açık kalan bayrakları yakalayabilir — örneğin sahne ağacında debug önekli düğüm sayısı sıfır olmalıdır gibi basit bir assert. Bu sayfa CI reçetesi vermez; yalnız unutulmayan kapatma disiplinini sabitler.

  • Geliştirme: kabuk + ışın + isteğe bağlı metin etiketi.
  • Uygulama içi beta: kısıtlı kullanıcı için kısayol; oturum ve yetki ile sınırlı.
  • Yayın: varsayılan kapalı; telemetride isteğe bağlı açma — açma olayı loglanmalıdır.

Güven yüzeyi

Kabuk çizimi iç düzenmanızı (tetikleyici hacimleri, gizli platformlar) ifşa edebilir. Çok oyunculu veya turnuva modunda «sadece bir kez açık kaldı» bile yeterince kötüdür; bayrak tek başına değil, dağıtım kanalı da kontrol edilmelidir.

Render teşhisi ile fizik teşhisini ayırın

Normaller ters, gölgeler kırık, materyal yanlış — bunlar render boru hattı sorunlarıdır. Çarpışma hayalet, gövde iç içe — bunlar fizik sorunlarıdır. İkisini aynı debug oturumunda çözmeye çalışmak dikkati dağıtır; önce hangi katmanda kırıldığını netleştirin ( Material pipeline ile fizik sayfalarını karıştırmayın). Işık ve ortam şüphesi PBR · ortam ile; doku / UV şüphesi Texture sistemi ile — bu sayfa o maddeleri tekrar etmez.

Pratik sıra: önce tüm fizik kabuklarını kapatıp yalnız renderı doğrulayın; sonra tam tersi. İkisini aynı anda açık bırakmak, ekran görüntüsünde «hangi hatayı arıyorduk?» sorusunu geri getirir.

  • Render: tek ışık, düz materyal, post kapalı — minimal sahne.
  • Fizik: tek gövde, sabit zemin, animasyon kapalı — minimal dünya.
  • Birleşik: her iki minimal set aynı anda doğruysa, sonra karmaşıklığı geri ekleyin.

Three.js ile üst üste okuma

«Üst üste okuma» burada aynı yardımcı sınıf adını aramak değildir. Three.js tarafında Helper ve oklar grafik sahnesinin parçasıdır; fizik kabuğu için çoğu zaman ayrı bir çizim yolu veya editör eklentisi eklersiniz. Babylon.js tarafında debug çizimi de yine kodla gelir; fakat sahne–fizik köprüsü aynı ürün düşüncesinde toplanmaya çalışılır — bu sayfa motor içi hata ayıklayıcı sözlüğü vermez.

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

Three.js'te yardımcı nesneler ( BoxHelper, oklar) sık öğretilir; fizik motoru ayrı kurulduğunda çarpışma kabuğu için ikinci bir görselleştirme katmanı siz üretirsiniz. Babylon.js tarafında motor ve araç zinciri, bu ihtiyacı sıklıkla tek çatı altında düşünmeyi kolaylaştırır — matematik değişmez, iş akışı değişir.

Işın ve temas kaydı düzlemi Raycast · Three kutusu içindedir; sürekli çarpışma düzlemi Kolizyon mantığı · Three kutusu içindedir — bu sayfa görsel teşhis disiplinini sabitler.

  • Three: grafik helper ile fizik debug aynı renkte olursa ayırt edilemez; renk sözleşmesi burada da geçerli.
  • Babylon: tek ürün düşüncesi cazip; yine de üretimde kapatma disiplini ( Üretimden çıkarma) aynıdır.
  • Ortak: debug çizimi gerçek performansı ölçmez — profil ayrı araçtır.

Sıradaki: motor köprüsü

Teşhis disiplini netleştikten sonra fizik dünyasını motora bağlamak için Havok / Cannon entegrasyonu sayfasına geçebilirsiniz. Önceki adım: Kolizyon mantığı.