Example files Particle node examples
Avoidance
Example for Turn particle node
$HFS/houdini/help/examples/nodes/pop/turn/Avoidance.cmd
This example shows how simple collision avoidance can be achieved using only Collision and Turn POPs.
Meteor
Example for Collision particle node
$HFS/houdini/help/examples/nodes/pop/collision/Meteor.cmd
Particles fall from the sky and collide with a collision object, in this case a simple grid.
These single particles that have collided are placed in a group, and they are told to 'continue on course' so they are not themselves affected by the collision.
A half-sphere geometry is instanced to the particles for the purposes of the Split POP.
The grouped particles are then piped into a Split POP which then births even more particles after the collision, giving the effect of a meteor trail or fireball trail.
The split particles are birthed from the surface of the instanced geometry rather than simply the original particle.
BirthRing
Example for Collision particle node
$HFS/houdini/help/examples/nodes/pop/collision/BirthRing.cmd
Every time a particle collides with a surface, an Event POP is used to create an event called 'birth'.
This event activates the Source POP that follows, in order to birth more particles. Events can happen on single frames only, and are not 'continuous' occurrances.
Deforming
Example for Collision particle node
$HFS/houdini/help/examples/nodes/pop/collision/Deforming.cmd
This file demonstrates particle collision detection on a deforming wave like surface.
The wave like surface is animated with an expression in a Point SOP.
HitColor
Example for Collision particle node
$HFS/houdini/help/examples/nodes/pop/collision/HitColor.cmd
This network demonstrates how the Collision POP can be used to tranfer attributes, color in this case, from the collision geometry to the particles that come in contact with that geometry.
A Color POP is used to actually apply the color, as RGB values, to the collided particles.
Capture
Example for Collision particle node
$HFS/houdini/help/examples/nodes/pop/collision/Capture.cmd
This example shows how you can use groups to selectively apply different behaviors to particles. The particles first fall through the collision sphere. Only after passing through the sphere do they exhibit a different collision behavior and bounce on contact.
If the particle has collided, we want the particles to bounce. If they haven’t collided yet, we want them to fall through.
To do this, create a group of all points that have collided. The same Group POP can be used to create the complementary group of points that have not collided. Note that the Collision POP creates the “numhit” attribute so when it is accessed by the Group POP on frame 1, it hasn’t been created yet. The default value of 0 is used, which is fine since on frame 1, none of the particles have collided.
Then two Collision POPs are used to collide the particles against the sphere. The first collision is applied to the “noncollided” group and those particles are allowed to continue on course. The second collision is applied to the “collided” group and those particles should bounce off the collision object.
BounceSplit
Example for Collision particle node
$HFS/houdini/help/examples/nodes/pop/collision/BounceSplit.cmd
This files takes the idea from the Birthring example and expands upon it with the use of Split POPs.
When the bouncing particle collides with the surface, a Split POP is used to create more particles on collision.
A Velocity POP gives applies velocity to those particles birthed from the Split POP and a Speedlimit POP constrains that velocity to be circular.
Color
Example for Attribute Transfer particle node
$HFS/houdini/help/examples/nodes/pop/attribtransfer/Color.cmd
This example demonstrates how the AttribTransfer POP can be used to apply a point attribute from a SOP geometry onto particles.
MultiAxisOrbiting
Example for Orbit particle node
$HFS/houdini/help/examples/nodes/pop/orbit/MultiAxisOrbiting.cmd
This network demonstrates how the Group POP can be used in conjunction with the Orbit POP to create a multi-axis orbiting effect.
The result resembles the classic depiction of orbitting electrons around a nucleus.
The Group POP creates 7 groups each of which allows particles to orbit around specific axes designated by the Orbit POP.
SimpleOrbit
Example for Orbit particle node
$HFS/houdini/help/examples/nodes/pop/orbit/SimpleOrbit.cmd
This is a simple network using the Orbit POP with a sphere as the particle source.
The particles rotate around a specified axis designated by the Orbit POP.
OrbitAlternate
Example for Orbit particle node
$HFS/houdini/help/examples/nodes/pop/orbit/OrbitAlternate.cmd
This example demonstrates how the Orbit POP can alter the acceleration of particles to rotate about a single or multiple centers.
It also shows how a Null OBJ can be used to create animation to be referenced at the POP level to create a dynamic network.
Orbit
Example for Orbit particle node
$HFS/houdini/help/examples/nodes/pop/orbit/Orbit.cmd
This example demonstrates how the Orbit POP can be used to make a particle system orbit another particle system.
Particle System 1
The source_particle_system_1 POP births a single particle. The orbit1 POP causes this particle to orbit the origin in the XZ-plane. The group1 POP then groups the particle system as “level1”.
Particle System 2
The source_particle_system_2 POP also births a single particle. The group2 POP then groups the particle system as “level2”.
These particle systems are collected by the collect1 POP. The orbit2 POP causes level2 to orbit the center of mass of the level1 particle system.
Particle System 3
The source_particle_system_3 POP also births a single particle. The group3 POP then groups the particle system as “level3”.
This particle system, as well as the combined systems 1 and 2, are collected by the collect2 POP. Finally, the orbit3 POP causes level3 to orbit the center of mass of the level2 particle system.
SimpleCreep
Example for Creep particle node
$HFS/houdini/help/examples/nodes/pop/creep/SimpleCreep.cmd
This is a very basic example of how the Creep POP is used to stick particles on the surface of some geometry.
POP_EXAMPLE_creep_CreepSlide
Example for Creep particle node
$HFS/houdini/help
This example demonstrates the Slide behavior of the Creep POP. Particles are moved across a deformed surface using a Force POP to drive the Creep POPs slide function.
CreepFromCenter
Example for Creep particle node
$HFS/houdini/help/examples/nodes/pop/creep/CreepFromCenter.cmd
This is a very basic example of how the Creep POP is used to slide particles on the surface of some geometry starting from its parametric center.
Lookat
Example for Lookat particle node
$HFS/houdini/help/examples/nodes/pop/lookat/Lookat.cmd
This example shows how to use the Lookat POP to make copied geometry point in a particular direction. This is useful when the copied geometry should always be seen face on, like sprites for example.
Three particles are birthed on a grid. They are assigned an up vector to give the particle some frame of reference. The up vector is the y axis, rotated by however much the camera path is rotated.
The Lookat works by applying a transformation that will rotate the z axis to point towards the requested direction. By making the up vector point in the same direction as the plane that the camera moves, the instanced grids' up direction will always be oriented correctly.
The Suppress Rule POP is here to tell Houdini not to apply the default position rules which usually advance the particle positions by its velocity. In this example, we just want the particles to stay still and rotate.
Finally, the Lookat POP applies a transformation so that the particle’s z axis will point towards the z axis of cam1.
RotateBasic
Example for Rotation particle node
$HFS/houdini/help/examples/nodes/pop/rotation/RotateBasic.cmd
This example is a simple setup that uses the Rotation POP to rotate particles around random angles and axes.
A Point SOP is used to add velocity attributes to the source geometry. These attributes are inherited by the Source POP.
Some geometry is copied to the particles using a Copy SOP to allow better visualization of the rotation.
NewGroupies
Example for Follow particle node
$HFS/houdini/help/examples/nodes/pop/follow/NewGroupies.cmd
This example shows how simple flocking can be accomplished using the Follow and Interact POPs.
The single leader particle is birthed on the first frame. Its position is animated by adding a noise function in the Position paramaters of the Position POP.
The followers are birthed from a grid also only on the first frame.
A Follow POP is then used to make the followers follow the leader particle. Since the leader particle has no real velocity (i.e. its velocity attribute is 0 and its position is manipulated), the ambient speed must be used. This represents how quickly the followers will try to follow the leader.
To keep the followers from bumping into each other, an Interact POP is used. This POP applies inter-particle repulsive forces. The influence type used is “Effect Intersects Effect” to allow maximum buffering between the instanced geometries. The Interact POP pretends there is a sphere of influence around each particle. This sphere has two parts: the particle radius which represents where the instanced geometry should be and the effect radius, which represents a further buffering area. The amount of applied force is constant throughout the particle radius and is an inverse cosine over the effect radius.
FollowInteract
Example for Follow particle node
$HFS/houdini/help/examples/nodes/pop/follow/FollowInteract.cmd
This example contains a particle network which demonstrates the use of the Follow POP to create a flock or chase. Geometry from the SOP level are used as sources for the Target and Follower particle groups. Then, Properties are added to the particles to affect how the flocks and chase will act.
SplitAndStick
Example for Follow particle node
$HFS/houdini/help/examples/nodes/pop/follow/SplitAndStick.cmd
Interesting use of the Follow POP. An initial particle system is emitted off of a grid. The particles are then forced into an orbit using an Orbit POP.
The Follow POP is then activated at a specific frame (150) by the following syntax in the Follow POPs' activation field: $FF > 150, meaning 'If the current frame is greater than 150, then activate me'.
A second Source POP is piped into the leader input of the Follow POP. The neat trick here is that the second Source POP births the same number of particles as the first source POP, and these particles are not given any velocity. They are born and just stay where they are born. This gives the illusion that the particles leave one grid, fly around for a bit, and then go stick onto the other grid.
FollowStop
Example for Follow particle node
$HFS/houdini/help/examples/nodes/pop/follow/FollowStop.cmd
This is the basic example of utilizing the Follow POP which enables one group of particles to behave as the followers of another leader group. Only 4 POPs are used: 2 sources, 1 drag and of course 1 Follow POP.
Lemmings
Example for Follow particle node
$HFS/houdini/help/examples/nodes/pop/follow/Lemmings.cmd
This example shows how simple flocking can be accomplished using the Follow and Interact POPs.
The single leader particle is birthed on the first frame. Its position is set from the transform channels of the object “leader” which is a good example of how to explicitly animate a single particle “by hand.”
The followers are birthed from a grid also only on the first frame. In order for the Interact POP to know how large the instanced geometry is, an Instance POP is used to place geometry on the particle. The instanced geometry will be the render SOP from the “bird” object.
To keep the followers from bumping into each other, an Interact POP is used. This POP applies inter-particle repulsive forces. The influence type used is “Effect Intersects Effect” to allow maximum buffering between the instanced geometries.
The Interact POP pretends there is a sphere of influence around each particle. This sphere has two parts: the particle radius which represents where the instanced geometry should be and the effect radius, which represents a further buffering area. The amount of applied force is constant throughout the particle radius and is an inverse cosine over the effect radius. In this example, we use 5 times the instanced geometry size for increased stability. A force multiplier of 10 is used to make the repulsion effect more immediate.
A Follow POP is then used to make the followers follow the leader particle. Since the leader particle has no real velocity (i.e. its velocity attribute is 0 and its position is manipulated), the ambient speed must be used. This represents how quickly the followers will try to follow the leader.
Try bypassing the Interact POP to watch the followers collapse among themselves. Play with the scales of follow1 and interact1 to observe the effect. Play with the particle radii of interact1 and see what happens. Remember you can toggle the guide geometry flag on to see a visual representation of the applied force.
FlockOnPath
Example for Follow particle node
$HFS/houdini/help/examples/nodes/pop/follow/FlockOnPath.cmd
This is a simple example of a flocking effect created using the Follow POP.
The network has two groups of particles, the leader and the follower groups. The “leader” is animated on a path with a Position POP.
An Interact POP is used to disperse the follower particles a bit.
NewGroupiesRavage
Example for Follow particle node
$HFS/houdini/help/examples/nodes/pop/follow/NewGroupiesRavage.cmd
A good example of a followers particle systems swarming a leader. Very similar to the NewGroupies example, however, the speeds of the followers and the leader are both amplified to give the illusion of a swarming flock 'ravaging' a leader.
Limit_DONE
Example for Limit particle node
$HFS/houdini/help
This files demonstrates a basic use of the Limit POP.
The Limit POP places a boundary around the particles, either in the shape of a box or a sphere. The size of these boundaries can also be animated.
An attribute, such as color in this example, and the grouping information provided by the Limit POP can be used by Color and Split POPs to affect the look and the behavior of the particles.
TorqueBox
Example for Torque particle node
$HFS/houdini/help/examples/nodes/pop/torque/TorqueBox.cmd
This example file uses the Torque POP to control the rotation of a Polygonal Cube.
The Torque POP works by applying a force to a particle’s axis. The axis is then rotated according to the parameters dictated by that force.
Press Play to view the animation.
AttractToRing
Example for Attractor particle node
$HFS/houdini/help/examples/nodes/pop/attractor/AttractToRing.cmd
This example shows just one way of creating and using an attractor object to pull particles from an emitter and have them stop when the particles reach the attractor.
Some points:
-
The techninque of birthing a fixed number of points but have them stream from their birthed position while still retaining their initial velocity and position using a Group POP and a Suppress Rule POP is necessary when you want to retain point counts over all the frames for blending purposes, when using the Softbody POP or any other reason where you don’t want the particle count to change
-
The importance of drag when using attractors. The mass of the particles and their current drag can make or break your simulation.
-
How to put some nice turbulence in your particle system by using a Force POP and absolutely no direct forces but just using its noise.
Chaser
Example for Attractor particle node
$HFS/houdini/help/examples/nodes/pop/attractor/Chaser.cmd
The Attractor POP has the Attractor Use set to Single point per particle. As the sphere is animated in the object editor, the particles try to keep up.
AttractToGrid
Example for Attractor particle node
$HFS/houdini/help/examples/nodes/pop/attractor/AttractToGrid.cmd
This file applies a radial force to a grid, and uses an Attractor POP to force the particles to be attracted to that grid.
The Kill POP kills particles once they pass a certain threshold.
AttractToCurvePoints
Example for Attractor particle node
$HFS/houdini/help/examples/nodes/pop/attractor/AttractToCurvePoints.cmd
This example demonstrates how points can be used as attractors.
By creating a curve containing points, and using a Point SOP, force attributes are given to the curve points. These attributes allow the Attractor POP to use the point forces which in turn act upon the particles.
In this case, an effect is created in which the particles “march” along the curve.
Fetch
Example for Fetch particle node
$HFS/houdini/help/examples/nodes/pop/fetch/Fetch.cmd
This is a simple demonstration of the Fetch POP.
Splatter
Example for Event particle node
$HFS/houdini/help/examples/nodes/pop/event/Splatter.cmd
This example shows how to apply different behaviors when events happen. The particles fall from the sky onto the sphere and stick to the collision object. Only when a second particle strikes the sphere do the particles then fall off the sphere.
This effect is accomplished by having different POPs applied to the particles over time. Initially particles are birthed from the grid and a gravitation force is applied. Let’s take a look at the input selection rule in the Switch POP.
----- popevent(“release”) || popevent(“switch”) -----
The popevent() function returns a 1 when the event is occurring and 0 otherwise. So, this statement says that whenever the event “release” or “switch” occur, use input 1, otherwise use input 0. To start, none of these events are occurring, so the first branch is cooked.
So, to start, the particles are processed by collision1 which collides them against sphere2 and stops them on contact.
Now, let’s look at source2 and collision3. At frame 100, a single particle is birthed which travels towards the sphere. In the Collision POP, an event, “release” will be generated when the particle hits the sphere. The generation of this event will cause the switch to start evaluating the other branch.
Instead of being processed by collision1, the original particles will be processed by state1, collision2, and event1. The State POP will “unstick” the particles so that they will continue to move.
The Collision POP now collides them against the sphere again, this time bouncing them with no gain normal. This will cause the particles to slide off the sphere.
Finally, an Event POP is used to generate the “switch” event, which will cause this branch to continue to be evaluated.
Note that there are actually two collision spheres, sphere1 and sphere2. sphere1 is just a little bit bigger and is the first object to test for collision. This is so that when they are released, they will bounce off the slightly smaller sphere2. Otherwise, the particles might continue to stick even after they have been unstuck because they are right on the boundary of the collision object. By making the second sphere slightly smaller, this numerical accuracy issue is relieved.
GroupColor
Example for Group particle node
$HFS/houdini/help/examples/nodes/pop/group/GroupColor.cmd
This example demonstrates how the Group POP can group particles by different criteria. These criteria include Rule, Generator, Bounding Box, and Random.
Particles are colored using the Color POP to visualize the designated criteria.
InstanceCoils
Example for Instance particle node
$HFS/houdini/help/examples/nodes/pop/instance/InstanceCoils.cmd
This example shows how particles can be birthed from instanced geometry using the Instance POP and the Split POP.
A 4-point grid is instanced to an animated particle, whose frame of reference is rotated by the Rotate POP. Particles are birthed from the corners of the grid so that, combined with the translating and rotating effect, a spiral pattern is formed.
InstanceBounce
Example for Instance particle node
$HFS/houdini/help/examples/nodes/pop/instance/InstanceBounce.cmd
This is an example of a particle system using instanced geometry and a collision object.
Enter into the popnet to see particles sourced and randomly emitted from a grid. An Instance POP attaches circle primitives to these particles.
Using a Collision POP, particles that make contact with the grid are set to Bounce on Contact. These particles are placed in a collide group, which are then rotated using a Rotation POP.
Note that the geometry will only appear when rendered with Mantra or Renderman. The geometry will not be shown in the viewport. To view the instanced geometry, use one of the regular mantra output drivers displayed in the Render icon’s pop-up menu which are set in the Output Editor.
Instance
Example for Instance particle node
$HFS/houdini/help/examples/nodes/pop/instance/Instance.cmd
This is simple example of using the Instance POP.
The network has two different, randomly chosen, groups of particles created with a Group POP. Two different geometry objects are instanced to each particle group.
A Translate POP is used to randomly animate both groups with expressions in the translation fields.
SplitSelf
Example for Split particle node
$HFS/houdini/help/examples/nodes/pop/split/SplitSelf.cmd
This example demonstrates how the Split SOP can be used to birth new particles based on the death of other particles.
Particles are birthed from a source Circle and are given a velocity in the positive-y direction. As they die, the particles are placed in a group that the Split SOP accesses, called “dead”. Each of these “dead” particles gives birth to three new particles.
The new particles are given a color based on their lifespan.
FireworksSetup
Example for Split particle node
$HFS/houdini/help/examples/nodes/pop/split/FireworksSetup.cmd
This example demonstrates how to create a firework effect using the Split POP.
It also demonstrates how a POP network can inherit attributes, such as color and velocity, from the SOP network by using the Source POP.
Wind
Example for Wind particle node
$HFS/houdini/help/examples/nodes/pop/wind/Wind.cmd
This example demonstrates how the current age of a particle can be used to create a unique value of noise turbulence in a Wind POP.
$LIFE is used to represent the current age of a particle and is the age divided by the particle’s total lifespan.
Fan
Example for Fan particle node
$HFS/houdini/help/examples/nodes/pop/fan/Fan.cmd
This is a simple demonstration of the Fan POP.
SparksStream
Example for Stream particle node
$HFS/houdini/help/examples/nodes/pop/stream/SparksStream.cmd
This network utilizes a Stream POP to birth new particles based on the particle density per unit division of space where to particle streams flow and collide. Thelower the threshold, the less particles needed to trigger new particle birthing by the Stream POP.
Some particles are birthed from a grid and are then subjected to a vortex force.The drag is needed to prevent the blue particles from continually expanding while keeping them moving in a circle.
After about 140 frames, the ring should be fully formed and now a spray of red particles start shooting off from the center of the ring (birthed by a circle source geometry).
These two streams are fed into the Stream POP. The Stream POP will birth particles where the two streams intersect. It does this by spatially subdividing the area where the particles flow, and then measuring the particle number within the.
FromCops
Example for Color particle node
$HFS/houdini/help/examples/nodes/pop/color/FromCops.cmd
This example shows how COPs can be used to color particles. The particles take on the colors of the butterfly image that is loaded in COPs.
A Color POP is used to color the particles from a COP. It uses the particle’s bounding box X and Y positions as the U and V lookup values in the COP.
HitId
Example for Color particle node
$HFS/houdini/help/examples/nodes/pop/color/HitId.cmd
This example shows how the Hit ID attribute can be used to determine which collision object a particle hit last. After a particle bounces off a grid, its color is changed according to the ID of the collision object.
Essentially, there are four collision objects. When a particle hits the collision object, it bounces and its “hitid” attribute is set to a value dependent on which object it hit. The value is specified by the “Hit Index” parameter in the Behvior tab of the Collision POP.
The Color POP is then applied to set the color based on which object the particle hit last. The lookup value is based on the $HITID variable.
SoftBodySheet
Example for Soft Body particle node
$HFS/houdini/help/examples/nodes/pop/softbody/SoftBodySheet.cmd
This example uses the Softbody POP to deform a SOP geometry to create a cloth-like effect.
It also gives examples of how the Group POP, Force POP, and Drag POP are used to refine the motion of the Softbody animation.
This can be useful in creating things such as fabrics and organic surfaces.
Press Play to see the animation.
Disperse
Example for Interact particle node
$HFS/houdini/help/examples/nodes/pop/interact/Disperse.cmd
This example demonstrates how the Interact Pop applies forces between particles.
We see a large particle pass through a group of smaller particles that react not only to the larger particle, but to each other, creating a cohesive movement.
The mass, charge, and scale attributes are adjusted to create this affect. The smaller particles have a low mass value to create rapid movement, and small scale and charge values to reduce their reaction to each other.
The large particle has a larger scale and charge. It’s mass is irrelevant since it’s movement is controlled by a series of Velocity Pops that are switched with an animated channel in the Switch Pop.
The Interact Pop gathers all the forces from nearby particles that are within the scale radius, and calculates a resulting acceleration. In order to simulate natural conditions, a Drag Pop is used to diminish the acceleration by a certain amount each frame.
Experiment with different settings to change the motion characteristics of the particles.
Swarm
Example for Property particle node
$HFS/houdini/help/examples/nodes/pop/property/Swarm.cmd
This network utilizes the Property POP to give particles certain Orbit attributes which in turn are referenced by the Orbit POP. A Mass value, for example, is one of the attributes that can be assigned by the Property POP. Here, one particle is given a much greater mass hence affecting the orbiting motion of all the other lighter particles.
The greater the mass of a particle, the less other forces (including those from other particles) can influence it.
There are two particle systems in this example:
Particle system 1
The source1 POP births several particles, with a random forward velocity. The property POP gives the particles orbit attributes oaxis, oradius and ospeed. These attributes are only useful in conjunction with the Orbit POP. The orbit axis is oriented along the z-axis, with some variance. The expression rand($ID) is used to generate a random number that is unique per particle, but remains constant throughout the animation. The orbit radius also uses this expression to assign a radius between 1 and 1.5 units. The orbit speed is proportional to the orbit radius. The group1 POP groups this particle system as “light”.
Particle system 2
The source2 POP births a single particle, with a random forward velocity. The property1 POP is used to assign a mass of 20 to this particle. This is done so that when this system is combined with the first system, the center of mass will be closer to this particle. The property2 POP gives the particle an orbit axis oriented along the z-axis, an orbit radius of 1 unit, and an orbit speed of 10 RPM. The group2 POP groups this particle system as “heavy”.
The two systems are combined with the collect1 POP. The orbit1 POP makes both particle systems orbit about their combined center of mass. None of the overrides (for axis, radius and speed) are set so that the individual attributes can be used for each particle.
As the animation plays, change the mass of the heavy particle in the property1 POP to see the effect on the center of the orbit. Also try changing the Center Type setting in the orbit1 POP to Spatial or Density Center to see the effect.