Motori di fisica del corpo molle 2D?


9

Ciao, ho recentemente imparato la libreria grafica SFML e vorrei utilizzare o creare un sistema di fisica 2D del corpo non rigido da utilizzare con esso. Ho tre domande:

La definizione di corpo rigido in Box2d è

Un pezzo di materia così forte che la distanza tra due frammenti di materia sul pezzo è completamente costante.

E questo è esattamente ciò che non voglio in quanto vorrei creare corpi elastici, deformabili, fragili e ricollegabili. 1. Esistono semplici motori fisici 2D, ma con questo tipo di caratteristiche? preferibilmente gratuito o opensource?

2. In caso contrario potrei usare box2d e lavorarci fuori per crearlo anche se si basa su corpi rigidi?

3. Infine, se esiste un semplice motore fisico come questo, dovrei continuare con il processo di crearne uno nuovo, semplicemente per esperienza e per migliorare la conoscenza matematica della fisica? Sento che sarebbe di grande aiuto se avessi mai voluto modificare il codice di un motore esistente o creare un gioco con una fisica davvero unica.

Grazie!


1
C'era questo motore chiamato JelloPhysics (C #), ma il sito sembra essere inattivo. C'è un video qui: youtube.com/watch?v=SvqY_pgA6DU
bummzack,

Risposte:


6

È possibile utilizzare i sistemi del corpo rigido per creare una dinamica del corpo morbida e fluida. Motivo fisico dietro? Bene, essenzialmente, gli atomi sono piccoli corpi rigidi. Questo non è del tutto vero, ovviamente, ma per semplicità puoi vederli come tali. E i corpi molli sono ovviamente fatti di atomi.

Quindi, come si creano "corpi morbidi" utilizzando un motore a corpo rigido come Box2D?

La tecnica essenziale è quella di legare insieme i punti del corpo usando le articolazioni. Ad esempio, se si collegano le estremità di un elenco di linee utilizzando giunti di distanza (il che significa che la distanza tra due giunti deve essere costante), si comporterà approssimativamente come un pezzo di stoffa.

Ma questa è solo una descrizione approssimativa. Un sacco di "lavoro sul campo elementare" con Box2D è stato fatto da ewjordan, uno degli sviluppatori della porta Java di Box2D. Ecco un buon punto di partenza: http://www.box2d.org/forum/viewtopic.php?f=8&t=1978


È necessario un mix di molle di tensione / compressione per mantenere la "forma" del corpo morbido, oltre a calcolare il volume per mantenerlo intero.
Jonathan Connell,

Sì, ma tutto ciò avviene in realtà tramite giunti, se stiamo parlando di Box2D. Sicuro che dovrà modificare manualmente il loro comportamento, ma è lì che deve iniziare. Ad esempio, per effetti di volume costante in BLOB simili a Gish, JBox2D ha ConstantVolumeJoint.
TravisG,

Sì, non ho familiarità con Box2D, so solo come alcuni colleghi hanno usato PhysX per simulare una bolla ^^
Jonathan Connell,

1

Il termine che stai cercando è la fisica del corpo molle.

Wikipedia ha una bella lista. Sono tutti 3D AFAICS, ma dovrebbero essere buoni.

Dai un'occhiata anche a questa domanda SO.

Un grande libro (è un corpo rigido, ma ci sono tutta la matematica e la fisica; è anche 3D, ma è banale da trasferire in 2D) è lo sviluppo del motore di fisica del gioco . Implementa un sistema basato sulle particelle prima di spostarsi su corpi rigidi e collisioni.


1

Un modo semplice per simulare corpi morbidi è quello di collegare insieme piccoli corpi rigidi con giunti elastici. Quindi la parte difficile è ottimizzare i parametri del modello e mappare la trama sul modello sottostante.

Il seguente post sul blog fornisce un'implementazione di una palla deformabile con motore cocos2d: http://2sa-studio.blogspot.com/2014/05/soft-bodies-with-cocos2d-v3.html


crediti per cocos2d debug draw ;-)
sdabet
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.