¿Motores de física 2D de cuerpo blando?


9

Hola, recientemente aprendí la biblioteca de gráficos SFML y me gustaría usar o hacer un sistema de física 2D de cuerpo no rígido para usar con ella. Tengo tres preguntas:

La definición de cuerpo rígido en Box2d es

Una porción de materia que es tan fuerte que la distancia entre dos pedazos de materia en la porción es completamente constante.

Y esto es exactamente lo que no quiero, ya que me gustaría hacer cuerpos elásticos, deformables, rompibles y de reconexión. 1. ¿Hay motores de física 2D simples, pero con este tipo de características? preferiblemente gratis o de código abierto?

2. Si no, ¿podría usar box2d y trabajar para crearlo incluso si está basado en cuerpos rígidos?

3. Finalmente, si hay un motor de física simple como este, ¿debería seguir adelante con el proceso de crear uno nuevo de todos modos, simplemente por experiencia y para mejorar el conocimiento de matemáticas y física?Siento que ayudaría si alguna vez quisiera modificar el código de un motor existente o crear un juego con una física realmente única.

¡Gracias!


1
Había un motor llamado JelloPhysics (C #), pero el sitio parece estar inactivo. Hay un video aquí: youtube.com/watch?v=SvqY_pgA6DU
bummzack

Respuestas:


6

Puede usar sistemas de cuerpo rígido para crear un cuerpo blando y una dinámica de fluidos. ¿Razón física detrás de esto? Bueno, esencialmente, los átomos son pequeños cuerpos rígidos. Esto no es completamente cierto, por supuesto, pero por simplicidad puedes verlos como tales. Y los cuerpos blandos obviamente están hechos de átomos.

Entonces, ¿cómo se crean "cuerpos blandos" utilizando un motor de cuerpo rígido como Box2D?

La técnica esencial es unir puntos en su cuerpo usando articulaciones. Por ejemplo, si conecta los extremos de una lista de líneas usando juntas de distancia (lo que significa que la distancia entre dos juntas debe ser constante), se comportará más o menos como un paño.

Pero esa es solo una descripción aproximada. Ewjordan, uno de los desarrolladores del puerto Java de Box2D, ha realizado una gran cantidad de "trabajo de campo elemental" con Box2D. Aquí hay un buen punto de partida: http://www.box2d.org/forum/viewtopic.php?f=8&t=1978


Se necesita una mezcla de resortes de tensión / compresión para mantener la "forma" del cuerpo blando, así como calcular el volumen para mantenerlo entero.
Jonathan Connell

Sí, pero todo eso se hace a través de las articulaciones, si hablamos de Box2D. Claro que tendrá que modificar manualmente su comportamiento, pero ahí es donde debe comenzar. Para efectos de volumen constante en blobs similares a Gish, por ejemplo, JBox2D tiene ConstantVolumeJoint.
TravisG

Sí, no estoy tan familiarizado con Box2D, solo sé cómo algunos colegas usaron PhysX para simular una burbuja ^^
Jonathan Connell

1

El término que está buscando es física de cuerpo blando.

Wikipedia tiene una buena lista. Todos son 3D AFAICS, pero deberían ser buenos.

También revise esta pregunta SO.

Un gran libro (es un cuerpo rígido, pero todas las matemáticas y la física están ahí; también es 3D, pero es trivial para transferir a 2D) es Game Physics Engine Development . Implementa un sistema basado en partículas antes de pasar a cuerpos rígidos y colisión.


1

Una forma sencilla de simular cuerpos blandos es conectar pequeños cuerpos rígidos con juntas elásticas. Entonces, la parte difícil es ajustar los parámetros de su modelo y asignar la textura al modelo subyacente.

La siguiente publicación de blog proporciona una implementación de una bola deformable con motor cocos2d: http://2sa-studio.blogspot.com/2014/05/soft-bodies-with-cocos2d-v3.html


créditos para cocos2d debug draw ;-)
sdabet
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.