Jump to content

Nice research paper (Wavelet Turbulence For Fluid Simulation)


digitallysane

Recommended Posts

http://www.cs.cornell.edu/~tedkim/WTURB/

We present a novel wavelet method for the simulation of fluids at high spatial resolution. The algorithm enables large- and small-scale detail to be edited separately, allowing high-resolution detail to be added as a post-processing step. Instead of solving the Navier-Stokes equations over a highly refined mesh, we use the wavelet decomposition of a low-resolution simulation to determine the location and energy characteristics of missing high-frequency components. We then synthesize these missing components using a novel incompressible turbulence function, and provide a method to maintain the temporal coherence of the resulting structures. There is no linear system to solve, so the method parallelizes trivially and requires only a few auxiliary arrays. The method guarantees that the new frequencies will not interfere with existing frequencies, allowing animators to set up a low resolution simulation quickly and later add details without changing the overall fluid motion.
Link to comment
Share on other sites

Very nice.

Wavelets and multi-resolution methods are exploding everywhere you look, it seems: simulations, shading...

Thanks for the link.

It looks like taking Mario's examples with turbulence noise texture uv advected by low-res fluid sim combined with Ivan's Divergence-Free Noise ;),

(and it does look great indeed )

Edited by SYmek
Link to comment
Share on other sites

  • 2 weeks later...
I hope so; very exciting to have more tools like this. I love having these microsolvers expose these functions...such a grand idea.

Oh, I do hope that SESI is cooking up an implementation of this. It would fit perfectly into the current DOPS workflow, as all it needs as input is a velocity field and obstacle SDF, and it parallelizes very well.

The authors have released source code as promised:

Source code for Wavelet turbulence

I haven't waded through it all yet, but I did add quick I3D export for the density and velocity fields (which produces massive files), cranked up the upsampling, amplification, to 10 and let Mantra rip through the files using the Image3d Volume Procedural and a stock "Basic Smoke" shader. (I can post this if anybody is interested)

Attached are some frames.

post-2001-1219031793_thumb.png

post-2001-1219031802_thumb.png

Animation here.

The upsampled smoke with wavelet noise looks pretty darn good, IMHO, no noticeable smearing or "stalling" that you can get with render-time noise. Each frame took about 12 min to simulate, but I don't have gcc4.2 on my machine so I couldn't use OpenMP to get the parallelization working. That should scale down fairly linearly with number of cores according to the paper.

Numbers to upsample to 480x640x480, render at 480x960:

12min / frame post-process (single processor)

~4GB mem used

290MB i3d file for density only (velocity files are huge, didn't try at this res)

80 sec/frame render

~250MB mem used for render :thumbsup:

4 cores of AMD-64 2200

Link to comment
Share on other sites

... but I don't have gcc4.2 on my machine so I couldn't use OpenMP to get the parallelization working. That should scale down fairly linearly with number of cores according to the paper.

I have compiled it with gcc 4.2 (OpenMP) in a Ubuntu 7.10 x86_64 using Intel Quad Core.

I can send you the exe file if you want it.

Link to comment
Share on other sites

Guest xionmark
Using a few simplifying assumptions:

Perlin Noise instead of Wavelet Noise

Curl Magnitude instead of Wavelet Energy

you can build this in 9.5.

Details will be at the end of the Houdini 9.5 Master Class, which should show up on our website some day soon.

(Apologies for my poor art direction)

Splendid Jeff!

Thanks!

Link to comment
Share on other sites

EVERYBODY is interested.

What are you waiting for. :)

Well, now what I really want is Jeff's MasterClass files (knew I shoulda gone to SIGGRAPH this year :) )

In the meantime, attached is the source code. There's a short README in there about code changes and building. The Makefile.Linux should work under Linux-64, but there's also a short file with the command for building with hcustom, which should hopefully work on some other platforms.

wavelet_turbulence.tar.gz

I have compiled it with gcc 4.2 (OpenMP) in a Ubuntu 7.10 x86_64 using Intel Quad Core.

I can send you the exe file if you want it.

Many thanks, but I don't have any of the 4.2 or OpenMP dynamic libraries either, so I think it would end up being a mess. One thing I am curious about, however. Did you happen to compare run time with and without the OpenMP parallelization? Does it scale as well as the authors suggest?

Thanks

Link to comment
Share on other sites

One thing I am curious about, however. Did you happen to compare run time with and without the OpenMP parallelization? Does it scale as well as the authors suggest?

Thanks

Without OpenMP, only 25% of QUAD used ... obviously.

With OpenMP, the cpu use range is between 25% and 65%, but more time near to 25.

... As an image says more than words, see the attachment.

Conclusion, only few stages of the simulation are multithreaded.

.

post-1182-1219097866_thumb.png

Edited by vmuriel
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...