2D yumuşak gövdeli fizik motorları?


9

Merhaba, ben son zamanlarda SFML grafik kütüphanesini öğrendim ve kullanmak veya onunla kullanmak için sert olmayan bir vücut 2D fizik sistemi yapmak istiyorum. Üç sorum var:

Box2d'de rijit cismin tanımı

Öylesine güçlü bir madde parçası ki yığın üzerindeki herhangi iki madde biti arasındaki mesafe tamamen sabittir.

Ve bu tam olarak istediğim şey, elastik, deforme olabilir, kırılabilir ve yeniden bağlantı gövdeleri yapmak istiyorum. 1. Basit 2D fizik motorları var mı, ancak bu tür özelliklere sahip mi? tercihen serbest veya açık kaynak kodlu?

2. Değilse, box2d'yi kullanabilir ve katı cisimlere dayalı olsa bile oluşturmak için çalışabilir miyim?

3. Son olarak, eğer böyle basit bir fizik motoru varsa, sadece deneyim için ve fizik matematik bilgisini geliştirmek için yine de yeni bir tane oluşturma sürecinden geçmeli miyim? Mevcut bir motorun kodunu değiştirmek veya gerçekten benzersiz fizik ile bir oyun oluşturmak istersem yardımcı olacağını düşünüyorum.

Teşekkürler!


1
JelloPhysics (C #) adlı bir motor vardı, ancak site çalışmıyor gibi görünüyor. Burada bir video var: youtube.com/watch?v=SvqY_pgA6DU
bummzack

Yanıtlar:


6

Yumuşak gövde ve sıvı dinamikleri oluşturmak için katı gövde sistemlerini kullanabilirsiniz. Arkasındaki fiziksel neden? Aslında, atomlar küçük katı cisimlerdir. Bu elbette tamamen doğru değil, ama basitlik için onları böyle görebilirsiniz. Ve yumuşak bedenler açıkça atomlardan yapılır.

Peki, Box2D gibi sert bir gövde motoru kullanarak nasıl "yumuşak gövdeler" yaratırsınız?

Temel teknik, eklemleri kullanarak vücudunuzdaki noktaları birbirine bağlamaktır. Örneğin, bir çizgi listesinin uçlarını mesafe eklemleri kullanarak birbirine bağlarsanız (yani iki eklem arasındaki mesafe sabit olmalıdır), kabaca bir bez parçası gibi davranacaktır.

Ama bu sadece kabaca bir açıklama. Box2D ile bir çok "temel saha çalışması", Box2D'nin Java-portunun geliştiricilerinden ewjordan tarafından yapılmıştır. İşte iyi bir başlangıç ​​noktası: http://www.box2d.org/forum/viewtopic.php?f=8&t=1978


Yumuşak gövdenin "şeklini" korumak ve bütün tutmak için hacmi hesaplamak için bir gerilim / sıkıştırma yayları karışımı gereklidir.
Jonathan Connell

Evet, ama Box2D'den bahsediyorsak, bunların hepsi aslında eklemler yoluyla yapılır. Elbette davranışlarını manuel olarak değiştirmek zorunda kalacak, ancak orası başlamak zorunda. Örneğin Gish benzeri bloblarda sabit hacim efektleri için JBox2D'de ConstantVolumeJoint bulunur.
TravisG

Evet, Box2D'ye aşina değilim, sadece bazı meslektaşların bir balonu simüle etmek için PhysX'i nasıl kullandıklarını biliyorum ^^
Jonathan Connell

1

Aradığınız terim yumuşak beden fiziğidir.

Wikipedia'nın güzel bir listesi var. Hepsi 3D AFAICS, ama iyi olmalı.

Ayrıca bu SO sorusuna göz atın.

Harika bir kitap (katı bir beden, ancak tüm matematik ve fizik orada; aynı zamanda 3D, ancak 2D'ye aktarmak önemsiz) Oyun Fiziği Motor Geliştirme . Rijit cisimlere ve çarpışmaya geçmeden önce parçacık bazlı bir sistem uygular.


1

Yumuşak gövdeleri simüle etmenin basit bir yolu, küçük rijit gövdeleri elastik eklemlerle birleştirmektir. O zaman zor kısım, modelinizin parametrelerini ince ayar yapmak ve dokuyu altta yatan modele eşlemektir.

Aşağıdaki blog yazısı, cocos2d motorlu deforme olabilen bir topun uygulanmasını sağlar: http://2sa-studio.blogspot.com/2014/05/soft-bodies-with-cocos2d-v3.html


cocos2d hata ayıklama kredisine kredi ;-)
sdabet
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.