Skip to main content

Particle motion blur again and some point cloud lighting

Fixed a few things with the particle motion blur stuff. Mostly it was just to get rid of an issue where you could see the particles when rendered zipping back to 0,0,0 when they died. I changed the popnet so that the particles always die when the camera shutter is closed... I think this was because the surface shader is only evaluated once, so when a particle died (alpha set to 0) the surface shader wasn't used again so the alpha wasn't updated from the sim... The only problem with the fix is that you can't have any particles that live for less than the shutter time...

This is useful for sparks (you can see some particles colliding in the image above), I also made a little point cloud shader that is also useful for sparks :D

Houdini - particle deformation blur and point cloud lighting from Sam Hancock on Vimeo.

The shader on the spheres and ground plane just loop through the particles and does diffuse, attenuation and shadows.

A single frame took about 6.5 minutes to render on my laptop ( Core 2 Duo 2.5GHz ) compared to about 1.5 hours for the equivalent PBR render.

hipnc is here.


  1. Nice one Sam! I'm gonna have to ask you to show that shader you wrote some time. Very cool!

  2. Really awesome stuff! Much cleaner and faster than PBR or Houdini 11's geometry light too.

  3. Awesome stuff...
    I like this effect.
    I was looking your shader network but couldn't understand how light is emitted. or which node is responsible for illumination?
    Is that the ray hit node?
    If i want to learn that stuff where can i refer?
    I am ok till PC import stuff...

  4. It is all in the PC Import loop ... what is it about the loop that you are unsure about?

  5. Hi this is really awesome stuff thank you so much for the scene, is there any chance you could update it for 15.5 ? Because I cant get it working with the light?


Post a Comment

Popular posts from this blog

Worm locomotion with FEM

I have always wanted to do a dynamic locomotion setup, I have tried in the past with wire and sop solver with .... interesting results ;)

With FEM in Houdini 13, the rest attribute is stored on vertices which allows a tetra to change its rest state independently of the surrounding tetras. With this, parts can be expanded and shrunk to get a muscle type action.

I have started with a worm since it is quite simple, the contractions and expansions move back along the worm in a wave, opposing the travel direction. It took quite a bit of tweaking to get him moving at all. One major element of a real worm's action that's missing is the little hairs that grip the ground. I couldn't find a way to change the friction per point so I have gone a bit hacky and multed down v wherever I didn't want the worm to move. I would love to hear if there is a per point friction control!

Here is the video

Houdini 13 FEM Worm locomotion from Sam Hancock on Vimeo.

...and the .hip is here

H15 .hip…

Cloth tear geometry and shading detail

Been adding geo detail to the torn cloth and shading the additional geo. Shading sure is fun! :)

The second extrusion is done twice, once for the U direction, and once for the V direction. Polyframe is used to get the UV gradient to extrude along, vopsops are used to move the extrudeFront points after extrusion as you can't control the extrusion per point with just a polyExtrude node...

The extrusion is done twice so that the two different surfaces represent the opposing thread directions. since my geometry (and therefore tears) are in line with the U and V direction, the effect is not obvious in this case.
The .hip file below has a slightly newer shader than in the video and the image above, I removed the part of the shader that created the soft ramp for the alpha edge and used just the thread noise instead; it now looks more like:

The UV space can be transformed after the sim to change the thread direction, the following has the UV space rotated 90ยบ, you can see threads running …

Some SOPs edges and poly line business

Every time I go to extract the border from a mesh I always end up using some strange combo of Group unshared edges, delete and dissolve, I came across a good way of getting unshared edges that I haven't thought of before, and now it seems really obvious ... using the polycap node to trace the border and then deleting all of the source prims, works like a charm!

I have also usually had trouble with splitting up a line into multiple primitives, here is a way to create a primitive per edge. This example only works if every point has 2 neighbours but could easily be modified with a copy SOP to allow a dynamic amount of neighbours. (instead of 2 vopsops and a merge to duplicate the points).
It works like this:
The point number is stored in an attribute to create a unique number for each pointThe whole mesh goes into 2 streams to duplicate every point.For the first set of points, each point gets the point number of the first neighbour and applies a cantor function to create a unique numb…