particlesTag Archive -

New lip spray

Finally, I’ve gotten around to building my new lip spray particle system. Here’s a quick single frame render, more info will follow when I post a full animation render sometime tomorrow…

LipSpray

Cheers,

Erik

Post to Twitter

Refitting particles

Ok, I’ve reworked the particle system to fit into the new geo. In the process I also further optimized the entire solution by saving out prerendered geo-sequences of the wave surface. The source-surface for the particles is now carved into a narrow strip at the lip of the wave which further optimizes processing.
I’m now easily rendering around 400k particles with the pasted wave surface at 1024×576 in on average 2 minutes a frame. This particle count can go up a lot more before I get into any rendering progress as the particle render part of this isn’t the biggest chunk of the time. I must admit I’m not rendering deep shadows on the particles yet and the surface shader is very basic currently (no subsurface scattering and such).
But still its looking promising in terms of render times so far.
I encountered one little challenge during these changes (which were already visible in previous renders). The wave lip was moving so much between frames that the particles where coming up in strips with an empty space in between. This can be solved by increasing the oversampling on the particle system. However, this causes problems with the prerendered particle source geometry as that only contained geo per frame. I quickly found that by taking the increment on the geo render down to .25 I could actually render 4 steps per frame (I did have to use $FF to generate the ‘frame’ number in the file name in stead of $F, as this generated the fractional ‘frame’ numbers). The file sop that loads the geo again also set to $FF for the ‘frame’ numbers then reads the ‘sub’ frames when requested by the particle system and Bob was my uncle. So, this way I combined the performance advantage of pre-rendering the geo while still having higher oversampling to get the proper generation of particles.
You might note that the particles seem to be a lot more short lived than in previous renders… this is a preperation for the next step in the lip-spray system. I’m going to be instancing finer mist particles from the lipspray that further moves up and over the wave.

Render included:

WaveTest7
Cheers,
Erik

Post to Twitter

Forces and particle generation

I’ve solved a fairly hairy problem that was pestering me while the solution obviously was very simple. I couldn’t for some reason get my force attribute on the lip of the wave drive the amount and velocity of lip spray particles. In the end it was a matter of better distributing the value of the force attribute as it is applied to the ‘surface attribute’ distribution mode of the particle source (a big thanks to the really great support team at sidefx for helping here).
I’ve started using a lot more ramps to control the distribution of values of attributes in the setup as they give me a lot more control and also do this much easier.
In the mean time, I’ve added a custom VEX SOP that displaces the lip to create the shape of the water breaking up where it falls down with the most force. So the displacement is controlled by the force attribute. I created custom VEX SOP because I had problems with the displacement slipping as the surface morphed. Watching the fxPHD rnd101 class 6, gave me the solution to tacke this. I had to make sure the P(oint) locations in my ‘shader’ were locked to the unmorphed ‘texture’ (UV) coordinates…
I’ve added a subdivide that is also driven by the force attribute after the displacement which smooths out the details and brings birth locations of the particles closer to the ultimately subdivided (in the render) surface, so the particles match up with the full highres subdivided render results.
The turbulence that randomizes the displacement in turn gets fed back into a ‘force_mod’ attribute that adds texture to the force. This ‘force_mod’ attribute now drives both the amount of particles of the lip spray and the velocity of these particles.
All this adds a lot more natural look to the lipspray. I’ve also eliminated the ‘curtain like’ lip spray that fell straight down from the lip in the previous version. After looking at a lot of reference footage this turned about to be totally wrong. Looking at the current render, I notice that the camera angle kind of hides some of the randomness. Think I’ll render a version looking just straight out at the wave.
Lastly, I think I’ve found the right tools to combine this strip of wave geo onto a bigger water surface: the paste sop. This sop allows to add detail surfaces on a base surface while fully integrating texture space and only adding detail to the geo where needed. Looks promising (I actually think this is the exact tool they used in Surf’s Up to do this).

Any way, still lots of stuff to do, but making progress so I’m happy!

WaveTest6

Cheers,
Erik

Post to Twitter

Time for some render tests

I’ve done a render to get a better view on how the lipspray particles are behaving. This was rendered with a overall density of around 120000 particles. It will need quite some more to get the right effect. Obviously there’s some work on integrating the particles with the surface of the lip as you can still see rectangular source shapes. I also will need to look into getting the particles to self shadow a bit more.

I haven’t done any work on shading the water surface itself however. The surface needs a lot of displacement work as well.. but as I said this was primarily a particle render test. I’m really happy with the render speed so far as it took less than an hour to render this on a single MacPro (2008, 8x3Ghz). Especially considering this includes some serious motion blur. I need to increase the pixel filtering some more though.
One thing I’m going to look into is instancing more particles in the render, which should increase density with less performance impact as only visible particles will be used to instance such render-time particles.

Here’s the link to the render:

WaveTest5

Cheers,
Erik

Post to Twitter

Houdini: Surf’s Up

I’ve started working today on a wave system ala Surf’s Up: WaveTest1.

It’s virtually completely procedural. You just pass in a grid size, amount of columns and rows and animate the wave position and the big rollers (see WaveTest2) to animate the breaking of the wave. The only thing that’s not totally automatic right now is the generation of the rollers, there are now always 5 of them. I think I’ll need to add some Python to make that number flexible as well.

The lip-spray currently is based on upwards velocity of the water surface in combination with the height of the surface. I’m not sure if that’s the best recipe although it looks fairly ok as it is now.

If I wasn’t already very happy with Houdini, I am now.. I was able to create this from scratch in about 5 hours. As I’m only starting to learn Houdini in ernest I couldn’t be happier!

Next up:
- improve the curves for the deformation
- add the settling down of the wave
- adding the whitewater where the lip crashes into the water, and the spray that swirls around in the tube. – the probably much harder part.. shading.
- After that I might put a surfer on there and work on all the splashes and wake he/she generates.

In terms of fun, this is only a little notch below actually surfing yourself…

Cheers,

Erik

Post to Twitter

Page 3 of 3«123