Friday, July 27, 2012

The new SPH simulator

Recently I've been working on re-writing my SPH simulator.

There're lots of problems in the previous version that drastically slow done the simulator. For simulating 125K particles, it takes around 3 mins to get a single frame with drawing triangle meshes.

The surface reconstruction part was not done by myself so I did not know the detail. However recently I found out why the previous version is so slow and rewrite the surface reconstruction part, including marching cube and openGL utilities. The result is a 6 time's improvement in performance.

Because of the glut library is pretty old, so I choose glfw library for this new version. I also modified the neighbor searching method to support multi-thread execution. For the surface reconstruction, anisotropic kernel is calculated for each particle to better describe the density distribution.

Here're some comparing images of a water-crown scene.
1. drawing elliptic particles only.
2. drawing triangle meshes with isotropic kernel. i.e. drawing spheres to present particles.

3. drawing triangle meshes with anisotropic kernel. i.e. drawing ellipsoids to present particles.

I've tried to implement WCSPH but I found out my initialization is problematic. Based on the fact that there's few paper or blog talking about initialization of SPH, I decide to implement the Bridson's Ghost SPH paper first. After finishing that paper, WCSPH could be finished with slight changes and so is the PCISPH.

These papers have been on my "to-do list" for a few weeks, but I was too tired after work everyday so the progress is slow. I'll keep updated.

Also, considering that I'm getting more and more familiar with openGL, I'm considering re-write my path tracer and try to add something new.

3 comments:

  1. Very nice work Xing. Will I see you at SIGGRAPH?

    ReplyDelete
    Replies
    1. Haha. Thanks!
      Of course you'll see me at SIGGRAPH. I'm so excited about that!

      Delete
  2. Looking forward to your updates

    ReplyDelete