Fizik simülasyonları hakkında bazı bilgiler okudum ve olası bir çözüm buldum. Her fizik adımını üç aşamaya bölerek çalışır:
1. Adım Öncesi:
Her fizik adımı, bir pencere, bağlantının her iki tarafı için iki tane olmak üzere dört dönüşüm oluşturur:
- bir nesnenin konumunu, hızını (ve muhtemelen boyutu ve ağırlığını) hedef koordinat sistemine dönüştüren bir girdi dönüşümü ve
- kuvvetleri nesnenin orijinal sistemine geri dönüştüren bir çıktı dönüşümü.
(Statik pencerelerin bunu yalnızca bir kez yapması gerekir.)
Ayrıca, her bir koordinat sistemindeki nesneler üç gruba ayrılır:
Fizik Gruplaması http://content.wuala.com/contents/Tamschi/Stack%20Exchange/WindowGrouping.png
Pencerenin önündeki nesneler (yeşil).
Bir nesne, pencere düzlemini kesişiyorsa veya pencerenin arkasından geçmesi muhtemel ise (gösterilmiyor) bu gruba doğru sayılır.
Pencereyle kesişen veya bu fizik adımında (turuncu) kesişmesi muhtemel nesneler.
Pencerenin arkasındaki nesneler (mavi). Bir nesne pencerenin arka tarafına doğru uçarsa, yine de üçüncü grubun üyesi olarak işaretlenir.
Pencere simülasyonun sınırındaysa gruplandırma basitleştirilebilir.
2. Ana Adım:
Fizik çoğunlukla birkaç istisna dışında çoğunlukla her zamanki gibi hesaplanır:
İkinci gruptaki nesneler asla üçüncü gruptaki nesnelerle çarpışmaz, bunun tersi de geçerlidir.
Pencerenin giriş dönüşümü ikinci gruptaki nesnelerde kullanılır ve sonuçlar hedef sistemden gelen ön ve kesişen nesnelere göre değerlendirilir. Elde edilen kuvvet çıktı dönüşümü kullanılarak dönüştürülür ve orijinal nesneye uygulanır.
(Hesaplama sırasında bir nesneye vurulursa, yeniden gruplandırılmalıdır!)
3. Adım Sonrası:
İkinci gruptaki bir nesne pencereyi geçtiyse, giriş dönüşümü kullanılarak hedef sisteme taşınır.
Ek Düşünceler:
Dönüşümler fizik hesaplandıktan sonra korunursa, oluşturmayı hızlandırmak ve daha kolay AI hesaplamaları için kullanılabilir. Gruplama, klip düzlemlerini oluşturma işleminden kaldırmak için kullanılabilir.
Bu çözümün dezavantajı, pencerelerin doğrudan fizik motoruna eklenmesi gerektiğidir.