Hooudini : Ripple_01_007

Hooudini : Ripple_01_007

This is a test to create ripples over a surface from particles colliding into it.

A VOP is used to find the nearest point to the colliding particle on the surface. That nearest point becomes the centre of the ripple. The VOP then displaces the centre point in the Y axis in this instance, for 1 frame.

This displacing surface is then referenced into the Ripple solver, which then drives the ripple effect.

Below is a link to an example hip scene:

http://www.anthonychurch.net/Houdini/ripple_01_007.hip

Houdini : Get Aim Vector 01_01_03

Houdini : Get Aim Vector 01_01_03

This is a the tests to firstly point a geometry object down the aim axis or velocity vector of a particle.

Secondary was to use the cross product to get the up and side vectors and point a geometry object down their respective axis.

A the next test will be copy array or instance several geometry objects to a series of particles emitted and to aim them down the aim axis, and have the bank or rotate them around the aim axis. Further, have these objects hit a hard surface and cause a reaction, such as a dust hit.

Below is a link to an example hip scene:

http://www.anthonychurch.net/Houdini/Get_AimVector_01_01_003.hip

Houdini : Bullet Impacts 02_01_002

Houdini : Bullet Impacts 02_01_002

This is a partial setup of Bullet Impacting (squibs) against a solid surface.

This setup currently only in the smoke emitting from multiple hits. It needs fracturing to create holes and debri.

The has emitter is based on my current Master Emitter. Further details of the setup are to follow.

Below is a link to an example hip scene:

http://www.anthonychurch.net/Houdini/BulletImpact_02_01_002.hip

Houdini : Velocity Driven by Curve Normals

The following link is a example of particles Velocity attributes driven by a Curves points Normal attribute.

Velocity Driven Curve Normals
Velocity Driven Curve Normals

The Curves point Normal attribute follows the direction of its tangentU attribute. The tangentU attribute is extracted by using the polyFrame node.

The sample scene then scatters particles that follow the contour of the Curve, by creating them from a volume. The tangentU attribute is then transferred onto the scattered points as scene in the image to the left.

Below is a link to an example hip scene:

http://www.anthonychurch.net/Houdini/Velocity_Driven_CurveN_01_002.hip

 

Houdini : Custom Pop Emitter

Creating a Custom POP Emitter, where the initial Velocity of the Particles are driven by the Emitters Point Normals

I have recently had to start using Houdini for creating Effects. In this recent job, I was essentially advised to follow the work flow that uses the Normals of the emitters Points to drive the initial Velocity of the emitter.

Here the basic workflow for creating a custom POP emitter:

Create Geometry that the Particles will be emitting from

  • The centre of the Geometry needs to be at world zero across all axis.
  • Scatter Points across the Geometry
  • With the Point Node, add Normals, but use the @P.x, @P.y and @P.z attributes to get the initial Normal vector. Doing this will set the individual Point Normal Vector out in a Radius.
  • Add a transform to control the rotation on the aim axis, in the case of this emitter, it will be the Z Axis
  • Add a Attribute VOP node to manipulate the Normals.The manipulation of the Normals will be broken down into 4 nodes:
    1. Spread
    2. Noise
    3. Speed
    4. Random Speed
HOU_Custom_POP_Emitter
Setting the emitter so that its points Normal direction radiates out.
NOTE: This can also be created by using the following formula:
$TX2 – $TX, $TY2 – $TY, $TZ2 – $TZ

 

 

 

 

Spread Node
Spread attribute will have a control parameter between the values of 0 and 1, This will open or close the angle of the emitter. The Spread value, essentially controls the Z Axis (aim axis) from 0 to 1.

The Spread value will be inverted using a fit range node and then be used as a multiplier for the that will work in the opposite direction to the X and Y axis. When Z is a value of 1, X and Y are values of 0.

To create the Spread Parameter and preparation to invert the X and Y axis:

  1. Create Parameter called Spread, with float value 0 – 1
  2. Create a fit range node, with float values where Source Min = 0, Source Max = 1, Destination Min = 1 and Destination Max = 0.
    NOTE: This is where the inversion of the Spread value happens.
  3. Connect Spread nodes OUTPUT to the fit ranges INPUT value.

To Invert the X and Y axis

  • Create two multiply nodes, call one multiplyX and multiplyY, and a vector to float node.
  • Connect the OUTPUT shift value the fit range node to the INPUT 1 value of each Multiplier node.
  • Connect Geometryvopglobal Normal OUTPUT to the INPUT1 value of the vector to float node.
  • Connect OUTPUT fval1 (X axis) of the vector to float node to the INPUT2 of multiplyX.
  • Connect OUTPUT fval2 (Y axis) of the vector to float node to the INPUT2 of multiplyY.
    NOTE: As the spread value increases to one, the fit range node will invert the so it will be decreased to zero. This inverted value will be used to multiply the X and Y axis.

Pipe the result in the Normals attribute as a Normalised value

  • Create a Float to Vector node and a Normalize node.
  • Connect the OUTPUT of multiplyX to the INPUT fval1 of the Float toVector node.
  • Connect the OUTPUT of multiplyY to the INPUT fval2 of the Float toVector node.
  • Connect the OUTPUT vec value of the Float to Vector node to the INPUT vec value of the Normalize node.
  • Connect the OUTPUT nvec value of the Normalize node to the INPUT N value of the geometryvopoutput node.
Anim Spread
Emitters spread while maintaining a constant length

Result

The Normals should be pointing in a radial direction from the centre of the emitter geometry when Spread is a value of 0 and then pointing at a 90 degree angle down the aim axis when it is a value of 1.

 

Noise Node
Create a node that has a Random Parameter and Turbulent Noise

  • Create parameter called Random, with float value 0 – 20. This will control the offset vector of the Turbulent Noise node, creating randomness.
  • Create a Float to Vector node and Turbnoise node.
  • Connect the OUTPUT random value of the Random node to each of the Float toVector nodes INPUT values fval1,2 and 3.
  • Connect the OUTPUT vec value of the Float toVector node the INPUT offset value of the Turbnoise node.
  • Connect Geometryvopglobal Normal OUTPUT to the INPUT position value of the Turbnoise node.

Adding the result the Spread value, then piping the Normalised value out

  • Create a MultiplyAddConstant, a add and a Normalize node.
    From the Spread phase, connect the OUTPUT of the Normalize node to the INPUT1 value of the Add node.
  • Connect the OUTPUT MultiplyAddConstant node to the INPUT2 value of the Add node. The MultiplyAddConstant nodes Multiplier value will control the ON/OFF effect of the Noise.
  • Connect the OUTPUT sum value of the Add node to the INPUT vec value of the Normalize node.
  • Connect the OUTPUT nvec value of the Normalize node to the INPUT N value of hte geometryvopoutput node.

Result
The directions of the Normals should start to point in random directions as the MultiplyAddConstant nodes Multiplier value is increased from 0 – 1.

The directions of the Normals should change as the Random parameter is altered.

 

Speed Node

  • Create parameter called Speed, with float value 0 – 10. This will control the length of the Normals in a uniform manner.
  • Create a multiply node.From the Noise phase, connect the OUTPUT of the Normalize node to the INPUT1 value of the Multiply node.
  • Connect the OUTPUT of the Speed parameter to the INPUT2 value of the Multiply node.
  • Connect the OUTPUT product value of the Multiply node to the INPUT N value of the geometryvopoutput node.

Result
This will control the length of the Normals in a uniform manner.

 

Random Speed Node
Create a Random Seed Attribute

  • Create a Random and Multiply node.
  • From the Noise phase, connect the OUTPUT of the Random parameter to the INPUT of the Random and the INPUT1 of Multiply nodes.
  • Connect the OUTPUT of the Random node to the INPUT2 of the Multiply node.

Generate a Random Value using from the addition Random Seed and Ptnum value

  • Create a Integer to Float, Add and Random nodes.
  • Connect Geometryvopglobal Ptnum OUTPUT to the INPUT Integer to Float node.
  • Connect the OUTPUT Integer to Float node to the INPUT1 of the Add node.
  • From the Random Seeds Multiply node, connect its OUTPUT to INPUT2 of the Add node.

Connect the OUTPUT sum value of the Add node to the INPUT of the Random node.

Remapping the Random Speed value, then multiplying the result with the value from Speed phase

  • Create a fit range node, with float values where Source Min = 0, Source Max = 1, Destination Min = 0 and Destination Max = 1.
    NOTE: The Destination Min and Destination Max values will simply control the minimun length and maximum lengths of the Normals, controlling if they are different or the same lengths.
  • Create a Multiply node.
  • From the Random Speed phase, connect its OUTPUT of the Multiply node to INPUT1 of the Multiply node.
  • Connect the OUTPUT shift value the fit range node to the INPUT2 of the Multiply node.
  • Connect the OUTPUT product value of the Multiply node to the INPUT N value of the geometryvopoutput node.

 

Result
This will control the Min and Max length of the Normals, creating a random star like pattern.

Below is a link to an example hip scene:

http://www.anthonychurch.net/Houdini/Master_Emitter_05_001.hip