Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 02 Apr 2008
Offline Last Active Today, 06:13 AM

Posts I've Made

In Topic: Sequential Impulse Solver and Sliding Contacts

04 June 2014 - 12:38 PM

Your videos look very impressive! Nice calm stacks of boxes. Would you perhaps list a few of the ressources ( websites, books, articles ) you found the most helpful in getting these results? I'm building a physics engine in c++ and am at the moment finishing the heavily optimized spring part and Keplerian orbit part, and my next big task will be implementing collision detection and resolution. Cheers Mike.

In Topic: Simple SPH questions. Kernel interpolation - *(its starting to flow)

06 April 2014 - 05:28 AM

oh sry maybe i misunderstood you. right now the particles move only based on the pressure gradient that is calculated using the spiky kernel. there is no extra kernel for repulsive forces when the particles are close because - as you can see - it works well if the spiky kernel is used on both (density/pressure and pressure forces). i just wonder why it works pretty well that way, as in many papers people tell you to use the poly 6 kernel for the density as it should result in more physically realistic behavior.


so i cant figure out why particles that get too close to each other do not repulse each other as the spiky kernel should provide repulsive forces. the question is why they even start to get so close in the first place. must have something todo with the kernel i do not understand. as if the particles have to get really close to reach the desired density.


edit: what about the ideal gas btw biggrin.png?


Ah okay, slight misunderstanding. I compute a local density for each interacting particle pair and use that value for a repulsive-only "local" pressure force. Then I sum up all local densities to a "global" density value, which is used in an attractive-repulsive pressure kernel. This is a fail-safe way to 100% avoid clumping. There are many, many different kernels for computing density, pressure, and viscosity, and you are completely free to invent your own. My kernels are self-invented for working without knowing the distance between particles. This way I don't need to normalize vectors and hence not use square-root, which makes the simulation much faster.


In my experience, clumping happens when two particles are pushed very close together, and the kernels aren't capable to separate them; they make each others density kernels reach a value higher than rest-density, resulting in a high pressure. Then the pressure kernel pushes all other particles away from the two, but it doesn't manage to separate the particles causing the high density.

In Topic: Separating axis Theorem rotation issue

04 April 2014 - 03:30 PM

Hi Aardvajk. I don't actually calculate the distance, since it is not needed. If you want the distance, you need to solve the Pythagorean theorem, which means calling square root. It's getting late here in Europe so I won't go into a lengthy explanation on SAT, but here are some links you might find useful:




In Topic: Simple SPH questions. Kernel interpolation - *(its starting to flow)

04 April 2014 - 02:45 PM

Well okay, might just be a matter of fine-tuning then. What happens if you turn off pressure kernel, so the only forces influencing the particles are from the repulsive-only kernel?

In Topic: Simple SPH questions. Kernel interpolation - *(its starting to flow)

04 April 2014 - 11:18 AM

Hi there Peacekeeper. To avoid clumping, it might be a good idea to apply a repulsive-only kernel between each interacting particle pair, where force is proportional to either distance or a local pressure value ony dependent on those two particles. As far as I know (I'm no expert but have some experience with sph) it's the only way to avoid clumping. In my experience it works best if the particle pair kernel is spikier than the pressure kernel, which means that repulsive force is usually weaker than pressure force, except when particles are very near each other.


Cheers Mike