Jump to content

  • Log In with Google      Sign In   
  • Create Account

- - - - -

New Game Prototype - Soft Body Physics

Posted by Aardvajk, 13 August 2014 · 1,162 views

My article on varadic template implementation of signals and slots is now up waiting approval, for those who asked last time so nicely.

Started working in a new game project now. I decided what the world needs is a soft-body swinging physics game, much like my old Squishy project, but rendered in 3D.

Attached Image

I ported ewjordan's excellent Box2D constant area joint over from the Java Box2D library to C++ and it works a treat for simulating a soft body in Box2D. You build a body out of a circle of small circles and it maintains the area in a lovely squishy sort of way. Here I have encased another body inside this ring which is used as the pivot point and to drive the character and works well. In motion in a poor quality video:

Taking a 2D list of points and rendering it as a 3D blob was an interesting problem that I've invented a completely new (to me) solution to that I thought I'd run through quickly.

To begin with, I create a list of the line segments connecting the outer bodies, including the normals:

Attached Image

I then find the min and max x co-ordinates, and a y co-ordinate somewhere below the blob, then use a segment intersection test to step across the shape, casting a ray up across the shape looking for intersections, first with it set to find a segment with a normal opposite to the ray direction, then one with a normal in the same direction. Thus we end up tracing out the shape as a series of vertical segments:

Attached Image

From here, we now have a top and bottom co-ordinate so we find the centre point of each and use those to define a circle of vertices that moves around the centre along the Z axis with its size based on the size of the segment. It is then just a case of stitching these vertices together into faces, and getting the vertex normals by working out the direction of the vertex from the centre (average) position of the shape.

Means creating the mesh on the fly every frame, but seems to be fast enough. Seems to produce a nice effect. Just need to start pondering how to render the squishy arms that you fire out to swing around the world next.

Looks great, I look forward to more updates!

The approach you took is very interesting in that it seems easy to replicate.

I've actually dumped what I outlined here and trying a different way to extrude the blob. I'll write it up when it's finished.

Okay, I would be interested in the differences between the two methods.

Trackbacks for this entry [ Trackback URL ]

There are no Trackbacks for this entry

July 2016 »

2425262728 29 30

Recent Entries

Recent Comments

Recent Entries

Recent Comments