Birden fazla çekiciyi işleyebilen fizik motoru?


9

Çoğunlukla üç boyutlu gravite ile oynanacak bir oyun oluşturuyorum.

Bununla, gerçekçi davranan çoklu gezegenler / yıldızlar / aylar ve yerçekimi alanında yol çizme ve yol tahmini demek istiyorum.

Bullet , tokamak veya Newton gibi çeşitli fizik motorlarına baktım , ancak hiçbiri uygun görünmüyor, çünkü yerçekimi motorunu kendi çerçevelerinde yeniden yazmak zorunda kalıyordum.

Birbirine ilgi duyan birden fazla bedenle başa çıkabilen bir fizik motoru biliyor musunuz?

Sahne yönetimi veya renderleme ihtiyacım yok, sadece temel fizik. (çarpışma tespiti, katı vücut dinamikleri gibi bir bonus olacaktır).


Arka planım fizikte, bu yüzden Verlet entegrasyonu veya RK4 (hatta Euler entegrasyonu, gerekirse) kullanan bir motor yazabilirdim, ancak raf çözümünü uyarlamayı tercih ederim.

[değiştir]: Bazı büyük kaynaklar için fizik simülasyonu n-vücut sorunlarına çevrimiçi ve üzerinde stackoverflow


7
Bullet'i kullanıp standart yerçekimi kuvvetinden bir şekilde vazgeçemez misiniz? (örneğin, ApplyGravity'yi çağırmaktan kaçının, setGravity'i sıfır vektörü ile arayın, BT_DISABLE_WORLD_GRAVITY kullanın ...) İstediğiniz etkinin bir yerçekimi biçimi olması nedeniyle, bunun "yerçekimi" API'leri aracılığıyla başarmanız gerektiği anlamına gelmez. temel fizik motoru.
Neverender

Bir çeşit ters yay kullanabilirsiniz
Roy T.

1
@RoyT. Bir yay kendi başına d ile orantılı bir kuvvete sahipken, yerçekimi d ^ (- 2) (hatta d ^ (- 1) değil). Her ikisinden de yörüngeler alabilirsiniz , ancak çok farklı özelliklere sahiptir. Sadece “motor tarafından sağlanan mesafeye dayalı bir kısıtlama kullanın” demek istiyorsanız, evet - ters kare bir kısıtlama varsa.
Kevin Reid

@KevinReid muhtemelen haklısın, ama açıklamanı aldığımdan emin değilim. Yani yay kuvvetleri mesafeye doğrusal, yerçekimi ters kareye bağımlı mıdır?
Roy T.

1
Osmos harika bir oyun. bulabildiğim en iyi şey bu röportajdı
brice

Yanıtlar:


2

Üç vücut probleminin sabit yörüngelere izin vermemesi nedeniyle geleneksel bir zaman dilimi fizik motoru kullanabileceğinizi düşünmüyorum.

Fizik motorunu Stellarium veya başka bir astronomi paketinden çıkarabilirsiniz.

Ancak, en iyi hareket yolunun sadece gezegeninizin yollarını pişirmek ve onları bir tablodan çıkarmaktır. Oyuncunuz eylemleriyle gezegenlerin yörüngesini gerçekten etkilemediği sürece, tam bir simülasyon yapmanın bir anlamı yoktur.


Aslında, N-vücut problemi olmadan , sabit yörüngeler alabilirsiniz. Entegrasyon yönteminize bağlıdır. Hem verlet hem de RK4 ile sabit yörüngeleri yönettim.
brice

Yolları önceden hesaplamak için adil bir öneri, ancak sistemleri anında dinamik olarak oluşturmak istiyorum ve ayrıca, gezegenler gerçekten endişelendiğim şey değil. Aslında gemilerin yerçekiminden etkilenmesini istiyorum ve bunlar oyuncu kontrolü altında olacağından yolları önceden hesaplayamıyorlar.
brice

Kayıt için sabit yörüngeler elde etmenin yolu simetrik sistemler yapmaktır. Ayrıca, istikrarsızlık için zaman çizelgeleri ortalama bir oyunun uzunluğundan çok daha uzundur. (100'den 1000'e kadar gezegensel yörüngede kararsızken, oyun 4/
5'den

Kararlı yörüngelerin örnekler için, bir göz , bu (Verlet kullanır)
Brice

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.