holodepth

Babylon.js · Fizik

Havok ve Cannon: motor içinde fizik eklentileri

Holodepth Three.js tarafında fizik çoğu zaman ayrı bir kütüphane seçimi ve sahneye elle köprü kurma olarak anlatılır; doğru bir üretim gerçeğidir. Babylon.js tarafında ise aynı ihtiyaç, çoğu projede motorun fizik soyutlaması üzerinden gelir: ağır üretim için Havok ( WASM), hafif ve taşınabilir senaryolar için Cannon tabanlı seçenek — ikisi de «aynı sahne grafiği ile konuşan» bir fizik dünyası kurmayı hedefler.

Bu sayfa tek bir komut satırı kılavuzu değildir; hangi eklentinin ne zaman mantıklı olduğu, özel başlatma yapıları (WASM yükleme, zaman adımı, sahne senkronu) ve Three.js alışkanlıklarından nasıl ayrıştığını sabitler.

Özet: iki güç merkezi

Özellik Havok (WASM) Cannon tarafı (JS)
Kim için? Yoğun gövde sayısı, karmaşık sahne, üretim kalitesi öncelikli. Hızlı prototip, düşük yükleme maliyeti, basit etkileşim.
Başlatma Binary yükleme ve başlatma çoğu zaman asenkron bir yol izler. Genelde daha hafif kurulum; yine de dünya oluşturma sırası önemlidir.
Ölçek Daha agresif fizik bütçesi; donanıma göre kazanır. Karmaşık sahneye yapışınca maliyet görünür.

Motor soyutlaması: görsel sahne ve fizik dünyası

Render tarafında gördüğünüz mesh konumu ile fizik motorunun iç tutumu aynı bellek değildir; motor aralarında köprü kurar. Bu yüzden «mesh'i taşıdım ama çarpışma yanlış» sorununun kökü sıklıkla senkron eksikliğidir — özellikle fizik adımı ile render adımı arasında tutarsız zaman bütçesi olduğunda ( delta zaman ile ilişkili düşünün).

Özel yapı: Babylon.js fizik eklentileri, sahne nesnelerine bağlı fizik gövdeleri / bağlantılar üzerinden düşünülür; görünüm ile çarpışma şekli bilinçli eşlenmezse kullanıcı «hayalet kolizyon» veya «iç içe geçme» görür. Köprü kuralları bir sonraki fizik başlıklarında (kolizyon, impostor) derinleşir.

Havok: WASM ve başlatma gerçekliği

Havok motoru tarayıcıda WebAssembly olarak çalışır; bu da iki sonuç doğurur: birincisi, çekirdek hesap yoğun işleri native yakın performansla yapabilir; ikincisi, modülün indirilmesi ve ömrünün klasik JS dosyasından farklı yönetilmesi gerekir. Üretimde görülen tipik sürtünme: kullanıcı sahneyi açmadan önce fizik ikilisinin hazır olmaması — bu yüzden başlatma kodu genelde bekleme ve hata yüzeyi ile yazılır.

İkinci özel yapı: Havok tarafında özellik kapsamı geniş olduğundan, sahneyi taşıyan kod ile fizik parametrelerinin aynı takım dilinde tutulması bakım maliyetini düşürür; motor düzeyinde seçilmiş varsayılanlar yanlış varsayılsa bile tutarlı kalır.

Üretim checklist

WASM yolu barındırma politikası ( CDN, hash isimli dosya, önbellek başlıkları), yükleme başarısızlığında düşeceğiniz yedek davranış (ör. hafif fizik devre dışı sahne) ve kullanıcıya gösterilecek durum metni — üçünü birlikte planlayın.

Cannon tabanı: JavaScript dünyasında kalma

Cannon tabanlı yol, çoğu zaman daha küçük paket ve daha az başlatma karmaşıklığı sunar; basit zemin + küre senaryolarında üretkenlik yüksektir. Sınırlılık: karmaşık çarpışma ağları ve yüksek nesne sayısında CPU maliyeti hızla artar — «aynı kod Havok'ta akıyordu» sonucu tek başına seçim gerekçesi olmamalıdır; sahne ölçeği ve hedef platform net olmalıdır.

Özel yapı: iki motorun sayısal davranışı (sürtünme, uyku eşikleri, dünya ölçeği) birebir değildir. Migrasyon yapıyorsanız parametreleri otomatik taşımak yerine küçük bir doğrulama sahnesi ile yeniden kalibre etmek gerekir.

Seçim: ne zaman hangisi?

  • Havok eğilimi: çok parçalı mekanizmalar, araç benzeri kütleler, güvenilir temas zinciri, kalabalık sahne.
  • Cannon eğilimi: düşük yükleme süresi öncelikli landing / tanıtım sayfası, birkaç kütle ve zemin yeterli.
  • Bilinçli red: iki motoru aynı anda «aynı dünyayı sürmeye» çalışmak — tek fizik dünyası seçin.

Üçüncü madde sık atlanır: iki motoru karıştırmak, iki paralel gerçeklik üretir ve çarpışma garantisi kaybolur. Üretimde tek seçilmiş fizik eklentisi ve tek zaman çizelgesi «anayasadır».

Senkron ve zaman adımı

Fizik dünyası sürekli zamanı küçük adımlarla ilerletir; görüntü ise kare hızına bağlıdır. Bu ikilik, üretimde iki ayrı soru üretir: ne sıklıkta simülasyon ve görsel transformu kime güveneceksiniz? Kare süresi dalgalanıyorsa ham delta ile fizik adımını doğrudan eşlemek, nesnelerin iç içe geçmesi veya titreyerek kayması gibi «motor bozuk» sanılan belirtilere yol açar — kök çoğu zaman zaman sözleşmesidir, çarpışma şekli değildir.

Özel yapı: bazı projede fizik adımı başına birden fazla alt adım ( sub-step) kullanılır — daha stabil temas, daha yüksek CPU maliyeti. Alt adım, özellikle hızlı hareket eden küçük collider'larda «tünelleme» riskini azaltır; fakat her alt adımda sahne grafiğini güncellemek zorunda değilsiniz: çoğu mimaride fizik önce, görüntü sonra ve ara karelerde interpolasyon veya en azından tutarlı kopya kuralı uygulanır.

Render ile fizik arasında köprü kopukluğu yaşanıyorsa önce sabit veya üst sınırlı zaman adımı + alt adım politikası gözden geçirilir, sonra motor özeline inilir. Kare zamanı ve güncelleme disiplini Holodepth Render loop · kare zamanı ve iş bölümü maddeleriyle birlikte okunmalıdır — bu sayfa döngü kodu yazdırmaz, yalnız fizik tarafının aynı saat diliminde konuşması gerektiğini sabitler.

  • Tanı: yalnız hızlı hareket ederken iç içe geçme — adım çok büyük veya alt adım yetersiz olabilir.
  • Tanı: sürekli titreme — görsel pozisyon ile fizik gövdesi aynı karede farklı kaynaklardan besleniyor olabilir.
  • Ölçüm: fizik süresini ve kare süresini ayrı loglayın; tek log satırında birleştirmek teşhisi hızlandırır.

Bu sayfanın sınırı

Kolizyon şekli seçimi ve impostor ayrıntıları Physics impostor hattında; geniş çarpışma mimarisi Kolizyon mantığı içindedir. Burada yalnız zaman çizelgesi ve motor köprüsünün neden koptuğunu işaretleriz.

Three.js ile üst üste okuma

«Üst üste okuma» burada hangi dosyayı import edeceğiniz listesi değildir. Three.js tarafında fizik motoru çoğu zaman npm paketi ve kendi başlatma düzeniniz olarak gelir; sahne grafiği ile dünyanın adımı arasındaki sözleşmeyi siz kurarsınız. Babylon.js tarafında ise aynı matematik, motorun yaşam döngüsü ve eklenti sınırı içinde paketlenmiş kabul edilir — bu, tünelleme denklemini değiştirmez; hata ayıklama ve dağıtım yolunu değiştirir.

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

Three.js ekosisteminde Rapier, Cannon veya Ammo gibi seçenekler sıklıkla doğrudan sahneye bağlanır; köprü kodu sizin tasarımınızdır. Babylon.js tarafında ise «motor + fizik eklentisi» birlikte düşünülür — bu, matematiksel doğayı değiştirmez; ürünleştirme ve yaşam döngüsünü değiştirir. İki Holodepth hattı biri çekirdek öğretir, diğeri motor rahatlığını gösterir.

Aynı haritada Material pipeline · Three kutusu boru hattı düzlemini, Node materyal · Three kutusu gölgelendirme yüzeyini anlatır; bu sayfa ise fizik dünyası entegrasyonu düzlemini sabitler — üçünü tek «Three adaptasyonu» sanmayın.

  • Sahip kim? Dünya adımını kim çağırıyor, transformu kim yazıyor — sürüm notlarında bu sınır net olmalıdır.
  • WASM yolu: Havok tarafında yükleme ve bellek üst sınırı üretim checklist'idir ( Havok · WASM yolu); Three köprüsünde aynı risk farklı paketleme ile gelir.
  • Parametre taşıma: sürtünme ve yay sabitleri motorlar arası bire bir gitmez; taşıma tablosu yazmadan «aynı rakamlar» beklemeyin.

Sıradaki başlıklar

Köprü seçildikten sonra gövde kaydı ve parametre taşıma için Physics impostor sayfasına geçebilirsiniz. Önceki adım: Debug visualization.