Particle Extras
syllabus | schedule | assignments | ARTC courses
Setting the lighting to only effect hardware particles:
Create an emitter and make a spot light and adjust it to face the particles
Lighting - Use all lights
Shading - Smooth Shade All (Hit 6 & 7)

Select the particles and change to streak
Click Add Attribute for
Click Use Lighting

Normal Settings:
    1 = particles coming towards you
    2 = coming going down in front of light or stationary
    3 = particles going away from light

In the Hardware buffer:
Render Attributes
    Lighting Mode - All Lights
Motion Blur: Works best when you have cached your scene
    Solvers - Memory Caching - Enable (select the particles you want to cache)
        (you can scrub through the animation in reverse)

Rewind and play the scene to cache it
    Delete the cache if you change anything (you won’t see the effects until you do)

Solvers - Memory Caching - Disable

In the Hardware buffer turn on Multipass and set Motion Blur to 4, 5, or 6
Render Sequence
Shadows are only for software particles:
Attribute Editor on the particles
Render Stats
Casts Shadows (must have a light with depth map shadows on)

Hardware particles only like shader colors or RGB settings

Software Particles:
        Blobs: Materials
        Clouds: Materials or Particle Cloud Shader (volumetric)
        Tubes: Cloud Shader (volumetric)
Animating Particle Tranformations
Make a rotating cylinder
Parent an emitter to the end of the cylinder
Try it.

Set keys on the particle object (rotate it)
Try it.
Creating a Baked Particle Object
Part 1:
1. Make a plane
2. Emit from Object options (select Surface)
3. Make particles streaks and set them up how you want them
4. Solvers - Initial State - Set for Selected
5. Delete Emitting object
6. Edit - Keys - Bake Simulation
7. Select all the Keys (shift drag) in the timeline
8. RMB Delete keys in the timeline
9. You can now key the rotate, scale, translate
Part 2:
A. Make a sphere
B. Duplicate the Sphere with the Scale set to 1.2 on xyz
C. Select the inner circle and Emit from Object options (Surface)
D. Select the particles and then the outer circle and Particles – Make Collide
E. Run the simulation and adjust particles until you like the looks
F. Repeat steps 4 - 9
Normal and Tangent Speed
Make a plane and add a surface emitter to it.
Change the rate = 100 and tangent speed to 2, try 1.0 - try 0
Change the normal speed to 2 and try it - try different values
You can change the attributes of an Emitter by clicking the Show Manipulator icon (t)

Make a cylinder with no caps (options) and add a surface emitter to it (Emit from Object options)
Change the emitter rate to 1, tangent speed to 0 and Normal speed to 0 (the particles stick to the cylinder)
Tangent Speed only works with Surface and Curve Emitters

Change particle Max count to 20 in the Attribute Editor
Change the particles to small spheres

Right Mouse down in the rampAcceleration field and select Create Ramp
Right Mouse down on the array mapper and select Edit Ramp
Delete all colors in the ramp except one and move that one to the bottom (birth)
Change the color mode to RGB and change it to 0, .-5, 0 (x,y,z)
    (you need three because it is a vector - position, acceleration, velocity and rgb need vector values)

Adjustments that may need to be made:
Lifespan increased, duplicate the cylinder and only make top part emit particles
Texture Emission
Go to the homework folder and get the paperburn file and put it in your ParticleExample project

Select the plane and add a surface emitter to it
Tangent Speed = .5 and Normal Speed = 1.0, Rate = 200
Change the emitter name to: TextureEmitter

Add a rgbPP attribute (needed for the inherit color option later)
Open the Attribute Editor for the Emitter
Open the Hypershade

Choose Textures from the top selection area (currently it says Materials)

In the Attribute Editor find Texture Emission Attributes
Middle Mouse drag the fireRamp into Particle Color slider
Turn Inherit Color ON

Close Hypershade, get into shaded mode and test it. ESC to get out of it.
        The texture is an animated 2D texture

Set Lifespan to .3

Add opacityPP and add a ramp to it
Ramp colors and positions:
        Selected Position = 0; RGB = 0.9, 0, 0
        Selected Position = 0.5; RGB = 0.4, 0, 0
        Selected Position = 1.0; RGB = 0, 0, 0

Shutting off emission in the black areas:

Drag the fireRamp texture into TextureRate of the Emitter
Enable Texture Rate ON

Black tells it to emit no particles - areas with luminance of 1 use the emitter's rate
Per Point Emission
Make a curve with 10 edit points
Choose select component and turn on only Edit Points (use Right Mouse Button)
Select the edit points by dragging a box around the whole line
Add an Omni emitter to the points (Emit from Object) - Try it

Select Emitter then choose Particles - Per Point Emission Rates
The useRatePP attribute gets unlocked and set ON in the channel box
Get the select by object tool (not by component)
Select the curve and in the Channel Box and change the emitter Rate for each edit point
Try it
Using the Component Editor
Make an Emitter and add an rgbPP attribute to the particles
Select the Select by Component tool and Select a few particles
Window - General Editor - Component Editor
Under the Layout menu - Load Selected Components
Options - Unselect Hide Zero Columns
Alter the values
Particles that emit particles
Create a cylinder
Create a Directional Emitter and Parent it to the Cylinder (MMB drag into cylinder)
Translate the emitter to the end of the cylinder
Select the particles and name them Spark (points size 2)
Directional, Rate: 80, Spread: .5, Speed: 2
With them selected – Particles – Emit from Object options
Select Directional, Rate: 1, Spread: .2, Speed: 0
Name the second particles Residue (streaks, width 1, fade 1, tailsize .5)
Animate the cylinder around moving around
Add gravity magnitude 12 and Turbulence Magnitude 5 to the Sparks
Add gravity Magnitude 4 and Attenuation 0 to Residue

Add lifespanPP and rgbPP to both particles
Add opacityPP to Residue

Creation expression for Spark
lifespanPP = rand(1,3);

Runtime expression for Spark
     rgbPP = <<1,1,1>> * (sin(0.5*id + time * 20));

<<1,1,1>> = white
(sin(0.5*id + time * 20)) = a value between -1 and 1
gets a unique and rhythmic number

id = a unique number of the particle

time = an incrementer (the 20 indicates how fast the sin functions repeat)

Alternate expression to keep it from getting negative values
     rgbPP = <<1,1,1>> * ((sin(0.5 * id + time * 20) * .5) + .5);

Cuts the sin function in half so we only get 0-1
.5 adds an offset to keep it above 0

Runtime expression for rgbPP and opacityPP
     opacityPP = (1-((linstep(0, lifespanPP, age))) * .0005);

change between 0 and 1 over time, 1 - linstep gives us the change in reverse (decreases)
the duration of the change is 0 to the end of its life