Get a free year on Tuts+ this month when you purchase a Siteground hosting plan from $3.95/mo
In this tutorial you’ll learn how to create nice looking particle-generated 3D text. Instead of faking the 3D look, let Particular draw whatever shape or design you want in actual 3D space and bring your fancy titles to a new level!
I understand that it's obviously better to use a 3D application to create 3D stuff. But I believe there are people who don't know how anything about such applications or perhaps don't have the time to learn new things. Anyway, you can use this technique to "draw" pretty much any shape in 3D. And yea, I know that there isn't hardcore science behind this, but in my opinion the end result looks very good.
Understanding the screenshots in this tutorial might be a bit difficult at times (I have 24" monitor and had to crop them a lot), so I uploaded the original screenshots and you can download them in a .zip file here.
Create a new composition called "Particle text", make it 1280x720 25 fps and 25 seconds long.
Create a new solid layer called "background" and make it white.
Create a new text layer (use any font you like) and type "aetuts".
Right click on the text layer you've just created and select "Create masks from Text".
Create a new null object and call it "null - outlines".
Now we need to take the mask points and use them to animate the "null - outlines" so it follows the mask paths and can be used later for the X,Y coordinates in Particular. Click on the "aetuts Outlines" layer that was created by AE, hit "M", click on "Mask path" of the mask "a", copy it (Ctrl-c), click on the "Position" property of the null and paste the data (Ctrl-v). Repeat this step with all mask paths. After copying all data the null should "draw" the text you typed (in this case "aetuts").
Create a new solid layer and call it "Particular".
Apply the Particular effect obviously.
Alt-click on the Position XY property and pickwhip the Position property of our null object.
The expression is:
thisComp.layer("null - outlines").transform.position
Now Particular should follow the outlines of our text layer. Set all Velocity values to 0 to make it stick to the mask path. Also set Emitter Type to "Box", Emitter Size X and Y to 0 and Emitter Size Z to 30.
Create a new camera, doesn't matter what settings.
Create a new light, change the Light Type to "Spot", Intensity to 150%, Cone Angle to 160°, Cone Feather to 50% and make it yellow. Uncheck "Casts Shadows".
Switch to Top view and position the light as shown on the picture bellow.
Duplicate the light and position it on the other side of the text.
Double click on the duplicated light and change its color to red.
Go to Particular -> Shading and turn it on. Also change the Nominal Distance value to 300 and Diffuse to 90.
Now we will create particles that will kind of reveal our text. Make a new solid and call it "PW - lines" (as in Particle World).
Apply the CC Particle World effect.
Your particle text should look somewhat similar to the picture bellow.
At first we need to make the PW particles follow the path too. Alt-click on Position X and type the following into the expression box:
x=thisCompLayer("null - outlines").transform.position-thisComp.width/2;
Alt-click on Position Y and type the following into the expression box:
y=thisCompLayer("null - outlines").transform.position-thisComp.height/2;
Alt-click on Position Z and type the following into the expression box:
Now let's change some of the settings.
Turn Grid off obviously.
Set Birth Rate to 1.5.
Set Longetivity to 0.5.
Set Radius X,Y,Z to 0.
Set Velocity to 0.05.
Set Inherit Velocity to 25.
Set Gravity to 0.
Set Max Opacity to 50.
Change the particle Birth and Death colors as shown on the picture bellow.
Set Transfer Mode to Add.
Click on Options->Render Settings and check "Force Motionblur".
Apply Fast Blur and set Blurriness to 1.
Duplicate the "PW - lines" layer by pressing Ctrl-D and change the values as shown on the picture bellow.
Duplicate the "PW - lines" again, name it "PW - polygon" and put it bellow the original "PW - lines" layer.
Change the settings of the "PW - polygon" layer according to the screenshot.
Duplicate the "PW - polygon" layer, put it above all PW layers and change the settings accordingly.
And for the last time duplicate the "Pw - polygon 2" layer and change its settings.
Create a new solid layer, make it black and name it "Shadow".
Put it just above the background layer.
Draw masks as shown on the screenshot bellow. We are basically going to fake some sort of 3D shadow by creating couple of masks around places where normal shadow would appear.
Create another mask that will cover all previous masks.
Animate the big last mask so it reveals the smaller shadow masks you've created earlier as particular animates and gets closer to them.
Rename the shadow layer to "Shadow - close", make it 3D, rotate it to 270° on the X axis and change its position to 427px on the Y axis (so it looks like it's just underneath the text). If you aren't sure what's the right value here then just check the Position value of the "null - outlines" layer - you're looking for the highest value.
Apply the Box Blur effect, set Blur Radius to 15 and Iterations to 2.
Duplicate the "Shadow - close" layer and change its settings.
Duplicate it again, change its name to "Shadow - distant", delete the Box Blur effect, apply Fast Blur and set Blurriness to 130.
Duplicate the "Shadow - distant" layer twice and change Blurriness to 150.
Duplicate the "aetuts Outlines" layer, make it 3D and rename it as "Front".
Go to Material Options (press AA) and turn Accepts Shadows and Accepts Lights Off. Also change the layer color to blue.
Select all shadow layers, press P and set their Z-position to 70.
Parent all shadow layers to the Front layer.
Now let's change Particular's settings to make it look a bit better. Set Particles/sec to 2000, Life to 25, Sphere Feather to 0, Size to 2 and Opacity to 50.
Alt-click on Position Z and type the following:
effect("Particular")("Emitter Size Z")/2-1
This way we tell Particular to push the particles back in the Z-space so they line up nicely with the Front layer.
Put the Front layer above the Particular one.
Apply the Roughen Edges to the Front layer.
Change the settings as shown on the picture bellow to roughen the edges a bit.
Set Opacity of the Fron layer to 30%.
Duplicate the Front layer, name it "Front - fractal" and set the Transfer Mode to Screen.
Apply the Fractal Noise effect and change its settings as shown on the screenshot. It kind of doesn't matter what values you use, just make it animate so the front layer doesn't look static. Also change the transfer mode to "Screen".
Apply the Curves effect to the Front - fractal layer and play around with the values.
Apply the Fast Blur effect and set Blurriness to 2. Apply the Glow effect and set Glow Threshold to 70.
Duplicate the Front layer, name it Back and make it black. And put it bellow the Particular layer.
As the layer name suggests, this will be our back layer. Alt-click on Position and type the following:
z=thisComp.layer("Particular").effect("Particular")("Emitter Size Z");
This way the back layer will be positioned at the end of the particles (talking about the Z-space).
At this point we will get rid of those annoying lines that appear when Particular is skipping from one letter to another. Select null - outlines and press P, it will help you place new keyframes for Particular. Make a keyframe for Particles/sec one frame before the end of current letter and set it to 20000. Move one frame forward (which is the last keyframe of current letter) and set Particles/sec to 0. Move one frame forward yet again (which is the very first keyframe of the next letter) and set Particles/sec to 20000. Basically we are just trying to set Particles/sec to 0 every time Particular "skips" onto the next letter.
In Particular->Shading turn Shadowlet for Main particles on and set Placement to "Always behind".
Apply Fast Blur to the Particular layer and set Blurriness to 1. Also apply the Glow effect and set Glow Threshold to 65% and Glow Radius to 15.
Feel free to adjust light's position ...
... and other properties.
And the same for the second light.
Duplicate the "Front - fractal" layer, name it "dots", change transfer mode to Add and delete all effects.
Apply the Stroke, Glow and Fast Blur effects and change their settings as shown on the screenshot bellow.
Go to Particular->Rendering and set Render Mode to "Motion Preview". This is just temporary so the scene gets rendered faster.
Go to dots and change the stroke color to red so we can see the dots better.
But let's animate the camera first. In my case the camera movement ends at 16:07 with the values shown on the screenshot. At this point I also temporarily disabled background.
And obviously change the camera settings at the beginning too.
Go to 16:07 and set a keyframe for the End property and make it 100%.
Go to the beginning of the composition and set End to 0%.
Now you are going to have quite a lot of keyframes to make sure that the dots follow the particles. It doesn't matter if the dots are slighly lagging behind the particles, but make sure they are in no case ahead.
Go to Particular and change Size over Life and Opacity over Life as shown on the screenshot bellow. At this point I also temporarily switched back to Full Render mode to see how the particles get rendered.
Now (back in Motion Preview mode) when you click on the Front layer you can see that the particles actually don't follow the original mask path. There are two ways of fixing this. You can either make the composition last longer (like 40 seconds, assuming that you would make all layers last longer too) thus giving Particular more time to render the particles or you can just adjust the masks so they match the particles. And that's exactly what we are about to do.
Just adjust the mask points, it's no big deal.
Select all mask paths of the Front layer and copy them (Ctrl-C).
Select the Front - fractal layer, delete the current masks and paste the fixed ones.
Do the same for the dots layer.
Go to Particular and change the Render Mode back to Full Render so we can see the result so far. Also enable the background layer.
Go to 17:00 (that's where I want my animation to end) and set a keyframe for Physics Time Factor.
Move one frame forward and set it to 0.
Select all CC Particular World layers and enable them.
With all PW layers selected and at 16:07 set a keyframe for Birth Rate. Move one frame forward and set them to 0 so the particles stop emitting.
Enable the dots layer and change the color to white.
Go to 16:18 and set keyframes for the Position property of the Front and Front - fractal layers. Set them to -1000 (the Z value) . Go to 17:00 and set them back to 0.
Disable the expression for the position of the Back layer.
We have to change the expression so we can actually make the layer animate. The x and y variables stay the same, the only difference in in the z variable. Updated expression:
z=transform.position+thisComp.Layer("Particular").effect("Particular")("Emitter Size Z");
This way the Z value is computed from its actual value + the Emitter Size Z value.
At 17:00 push the Back layer all the way back and don't forget to make a keyframe.
At 17:06 set the Z-position back to 30.
Create a new null object and name it "null - camera". Also parent the camera to this null. We will use it to control our camera shake effect.
Apply Slider Control three times.
Rename them as Position, Rotation and Speed.
Select the null - camera layer, hit P, Alt-click on Position and type the following:
p = effect("Position")("Slider");
s = effect("Speed")("Slider");
Hit R, Alt-click on Rotation and type the following:
r = effect("Rotation")("Slider");
s = effect("Speed")("Slider");
This way we can control the position and rotation value via the sliders.
At 16:24 (when the front layers are about to hit the particles) set all sliders to 0.
Move one frame forward and set the Position slider to 50, the Rotation slider to 2 and the Speed slider to 5.
Go to 17:12 (we want our shake effect to last for 12 frames) and set the sliders to 0.
But the thing is that we want to have two shake effects (one for the front layers, one for the back layer). But we are using only one camera controller so we need to set three keyframes at 17:05 (one frame before the impact of the back layer) to kind of let the original shake effect fade out. Also don't forget to delete the three keyframes with 0 value placed at 17:12 - we won't need them anymore.
At 17:06 reset the slider values back to 50, 2 and 5.
Go to 18:00 and set all sliders to 0.
Go to 23:00. We will animate the camera once again and make it come back to the beginning of our particle text. Also select all camera keyframes and press F9 to apply Easy ease.
At this point I decided to tweak the shake values a bit, so at 17:05 I changed them to the ones shown on the screenshot bellow.
Delete all layers that aren't used and turn on Motion Blur for desired layers.