Babylon.js · Fizik
Physics impostor: mesh ile fizik gövdesinin köprüsü
Kolizyon mantığı hangi geometrinin «doğru» olduğunu seçmenizi sağlar; pratikte bu geometrinin sahne grafiğindeki bir nesneye bağlanması gerekir. Babylon.js ekosisteminde bu bağlantı çoğu öğreticide Physics Impostor adıyla anılır: görünür mesh ( veya soyut düğüm) ile fizik motorunun içinde üretilen gövde arasında sözleşmeli bir köprü.
Bu sayfa sürüm bazlı her parametreyi listelemez; «köprü düşüncesi», şekil türleri, kütle–sürtünme anlamı ve senkron/dispose özel yapılarını açık bırakmadan işler — Three.js tarafında sık yapılan «gövdeyi dünyaya elle kaydet» akışına karşılık gelir.
Özet: impostor satırında verilen kararlar
| Alan | Ne seçilir? | Tipik hata belirtisi |
|---|---|---|
| Hedef düğüm | Hangi mesh / transform kökü fizikle taşınacak? | Çocuk mesh hareket eder, kök sabit kalır. |
| Şekil sınıfı | Kutu, küre, düzlem, üçgen örgü vb. | Hayalet çarpışma veya iç içe çözülme. |
| Dinamik parametreler | Kütle, sürtünme, sekme ( restitution). | Uçan nesne veya yapışkan zemin. |
| Ömür | Nesne silindiğinde gövde de kalkıyor mu? | Sahnesiz «hayalet» çarpışma. |
Impostor nedir, ne değildir?
Impostor, görsel sahne ile fizik dünyası arasında tek bir kayıt satırıdır: «Bu düğüm için şu şekil sınıfıyla bir gövde oluştur ve şu parametrelerle çöz.» Görsel materyal veya doku ile doğrudan ilişkili değildir; yanlışlıkla materyal slotu sanılırsa bakım karmaşası çıkar. Görünüş PBR kanalları ile çözülür; çarpışma ise şekil sınıfı + dünya dönüşümü + fizik parametreleri ile — ikisini aynı dosyada aramak üretimde sık karışıklık üretir.
Kavramsal olarak impostor, Kolizyon mantığı · gövdeyi bağlama bölümünde sözü edilen köprünün pratik yüzüdür; bu sayfa o bölümün API ve ömür tarafını açar, geometri ailesini tekrar etmez.
Özel yapı: aynı düğüme birden fazla «tam güç» fizik gövdesi bağlamak çoğu senaryoda anlamlı değildir; gerekiyorsa bileşik kolizyon düşüncesini bir üst tasarım katmanında çözün ( birden fazla düğüm veya motorun desteklediği bileşik yapı).
- Değil: doku sarması, UV, gölgelendirme — bunlar mesh / materyal boru hattıdır.
- Değil: tek başına oyun mantığı — «çarptı mı?» sorusunun cevabı olay ve filtre katmanında biter.
- Evet: hangi düğümün fizik dünyasında hangi soyut şekille temsil edildiğinin kaydıdır.
Takım dilinde ayrım
Tasarım toplantısında «şu materyale sürtünme ekleyelim» dediğiniz şey, çoğu zaman aslında gövde parametresi veya fizik materyali konusudur — görünen PBR roughness ile karıştırmayın. İsim çakışması, hata raporlarını yanlış dosyaya yönlendirir.
Şekil türleri: sabit listeden seçim
Impostor oluştururken şekil genelde sabit bir listeden seçilir — kutu, küre, düzlem, silindir veya üçgen örgüye bağlı gövde gibi. Bu, primitif vs örgü kolizyon tartışmasının kod tarafıdır: örgü kolizyonu doğru ama pahalıdır; düşük poligon mesh ile seçilirse beklenmedik boşluklar oluşur.
Özel yapı: ölçek ( scale) ile fizik şekli büyütülürken hem görsel hem çarpışma birlikte büyür — üretimde bazen çarpışmayı «biraz daha geniş» tutmak için görünmez bir çarpışma kabuğu kullanılır; bu, materyal değil impostor parametreleri veya ikinci bir düşük detay kabuğu ile çözülür.
Kütle, sürtünme ve sekme ( restitution)
Kütle sıfırsa gövde çoğu yapılandırmada «statik» davranışa yaklaşır; sıfır olmayan kütle dinamik olarak dünya ile etkileşir. Birimi sahne ölçeğinizle tutarlı tutun — karakter 1 birimken kütle 1000 ise beklenmedik savrulma görülür.
Sürtünme temas yüzeylerinin kayganlığını modellemeye çalışır; restitution çarpışma sonrası enerji iadesini (sekme) kontrol eder. Özel yapı: her iki parametre de motor–birim dünyasında «doğru tek sayı» evrensel değildir; iki fizik eklentisi arasında ( Havok / Cannon) aynı sayı farklı hissiyat verebilir — kalibrasyon sahnesi şarttır.
- Uçan nesne: kütle çok düşük veya çarpışma penetrasyonu sonra düzeltici iterasyon yetişmiyor.
- Yapışkan zemin: sürtünme uçları veya yanlış normal yönü ile kombinasyon.
- Sonsuz sekme: restitution ve sürtünme birlikte fiziksel olarak tutarsız.
Senkron: kim taşınır, kim izler?
Fizik gövdesi hareket ettikçe mesh'in dönüşümü güncellenir; ters yönde animasyonla mesh'i her kare zorlarsanız fizik ile çekişme oluşur. Özel yapı: kinematik veya motor tarafından «hareket kaynağı kullanıcı animasyonu» olarak işaretlenmiş gövdeler farklı kurallıdır — hangi tarafın hareketi belirlediği tasarım kararıdır ( AI itti mi, oyuncu mu, kesici sahne animasyonu mu).
Üst düğüm ( parent) ile çocuk düğüm ilişkisi, impostor'un hangi düğüme bağlandığına bağlı olarak beklenmedik sonuç üretir; kök seçimi önce kolizyon hedefi ile hizalanmalıdır.
Ömür: dispose ve yeniden oluşturma
Mesh sahneye çıkarıldığında impostor oluşturulduysa, mesh kaldırılırken fizik gövdesinin de düşmesi gerekir; aksi halde görünmez çarpışma kalır. Hayalet gövde, özellikle seviye yüklemeleri veya dinamik spawn döngülerinde «boş sahnede takılı kalan» oyuncu şikayetine döner — grafik tarafı temiz olsa da fizik dünyası kirlenmiştir.
Özel yapı: rota değişimi veya nesne havuzu kullanıyorsanız yeniden kullanım öncesi impostor durumunu sıfırlama ritmini takım içinde sabitleyin: gövdeyi ayır, sıfırla, yeniden bağla veya havuz öğesini «beklemede» durumunda tutarken dünyadan çıkar. Görünür mesh ömrü ile aynı disiplin Mesh · ömür ve dispose ile paralel okunur — bu sayfa tampon matematiğini anlatmaz.
Tam sahne kapanışı ve motor sırası Dispose sırası ve Kapanış ve dispose ile birlikte düşünülmelidir; impostor yalnızca o zincirin fizik gövdesi halkasıdır.
- Havuz: öğe geri dönünce gövde hâlâ dünyada mı? — ilk kontrol sorusu bu olmalı.
- Klon: aynı mesh’ten üretilen kopyaların her birinin ayrı kayıt mı yoksa paylaşım mı istediğini önceden seçin.
- Şüphede: fizik hata ayıklayıcıda «görünmeyen» gövde kaldı mı diye dünya içi listeyi izole edin.
Kod iskelesi (kavramsal)
Aşağıdaki blok taşınmış Cannon-tabanlı öğretim kalıbını çağrıştırır; güncel fizik eklentinize ( Havok veya Cannon) göre sınıf ve seçenek adları değişebilir — ama «mesh + şekil + seçenek» üçlüsü kalır.
// Kavramsal örnek: fizik dünyası kurulduktan sonra bir küreye gövde bağlama
// PhysicsEngine / eklenti kurulumu sahnenize göre önce tamamlanmış olmalı.
mesh.physicsImpostor = new BABYLON.PhysicsImpostor(
mesh,
BABYLON.PhysicsImpostor.SphereImpostor,
{ mass: 1, friction: 0.5, restitution: 0.2 },
scene
);
Resmi belgede Havok yolu için farklı oluşturucular kullanılıyor olabilir; köprü fikri değişmez: görünür nesneye gövde bağla, parametreleri kalibre et, ömrü sahne ile birlikte kapat.
Three.js ile üst üste okuma
«Üst üste okuma» burada hangi sınıfı new'layacağınız rehberi değildir. Three.js tarafında RigidBody benzeri soyutlamaları hangi nesneye, hangi dünya örneğine ve hangi adımda ekleyeceğinizi çoğu zaman siz yazarsınız. Babylon.js tarafında ise aynı sorumluluk vardır ama mesh merkezli impostor kalıbı, sahne düğümü ile gövde kaydını aynı cümlede taşımayı kolaylaştırır — özellikle ömür ve dispose sözleşmesinde fark hissedilir.
Çakışmayı önleyen çerçeve
Three.js dünyasında gövdeyi oluşturup dünyaya eklemek çoğu zaman sizin kodunuzdur. Babylon.js tarafında ise mesh merkezli impostor düşüncesi, sahne grafiği ile fizik kaydını yakın tutmayı kolaylaştırır. Matematiksel sonuç yine fizik motorundan gelir; fark üretim ritmidir.
Kolizyon kavramları için Kolizyon mantığı · Three kutusu (ışın vs sürekli dünya); entegrasyon zaman çizelgesi için Havok / Cannon · Three kutusu ayrı düzlemlerdir — impostor sayfası yalnız gövde kaydı ve ömrü düzlemini sabitler.
- Manuel Three: gövde yaşam döngüsü kodunuzda görünür; her projede farklı isimlendirme normaldir.
- Babylon impostor: aynı yaşam döngüsü motor kalıbına yakın; sürüm notlarına bağlı API farkları yine vardır.
- Ortak soru: mesh gittiğinde gövde de gitti mi? — motor fark etmeksizin aynı üretim riskidir.
Sıradaki başlık
Gövde bağlandıktan sonra seçim ve temas sorguları pratikte ışın ve çarpışma sorgularına döner: Raycast & collision. Önceki adım: Havok / Cannon entegrasyonu.