Introduction
The footage we are using is courtesy of Rubberball footage supplied by artbeats.com.
Let’s take a look at how this is achieved.
The Process
To reiterate, “static” in this sense does not mean a locked-off shot with no motion. Static means anything in the shot that is not moving, such as a floor or wall. To solve for a camera we need to determine how that camera is moving relative to stationary objects in the shot.
![]() |
001 – Draw shapes in static planar areas |
![]() |
002 – Adjust shapes to avoid foreground motion |
This is very useful when we have long pans and don’t want to keep animating the shapes back on screen.
![]() |
003 – Choose “None” from Link to Track so that the splines don’t move. |
- Motion: Check Translation, Scale and Rotation
- Min % Pixels Used: 90% (The higher the number the more accurate the track, but the slower the tracking)
- Input Channel: Auto Channel
![]() |
004 – Tracking Parameters |
![]() |
005 – Stabilize view (Not the same as the stabilize module) |
In this case I know it is a Pan, Tilt, Zoom (PTZ) shot, so I have chosen that option, along with zooming checked to cover some of the subtle zoom in the shot.
![]() |
006 – Solving for PTZ with Zooming turned on |
Once we have solved the camera, we can export it out for the scene, but if we want to get the surfboard, we need to track that first.
We do this by drawing a shape around some texture detail on the surfboard.
![]() |
007- Drawing shapes on the surfboard |
We also draw a new shape in the layer with the Add Spline to Layer tool to cover the front area of the surfboard so we have as much detail as possible. Again, we could just draw one shape and then mask out the arm, but you can do it either way.
![]() |
008 – Adding another shape to the surfboard layer |
Just so we can see how the track is going, you can then move the corners the surface to line up with the general position of the surfboard. This is a useful visual aid when tracking.
![]() |
009 – Setting up the surface so the grid lines up with the surfboard |
We can then set up the parameters for the track. This is a Perspective track, so we want to make sure that is turned on:
- Motion: Check Translation, Scale, Rotation, Shear and Perspective
- Min % Pixels Used: 90% (The higher the number the more accurate the track, but the slower the tracking)
- Input Channel: Auto Channel
![]() |
010 – Surfboard tracking parameters |
You can then start tracking!
Once it is tracked you can immediately switch back to the camera solver module.
The great thing is once you have solved the static camera from the first step, you don’t need to resolve to export data for moving objects. That all happens when you actually export.
In this case we are exporting out to After Effects. If you want to use a different application you can export out to FBX if you have Mocha Pro.
![]() |
011 – Exporting to After Effects |
Over in After Effects you need to go to the Edit menu and choose Paste mocha camera. This option will only appear if you have installed the Mocha 3D track importer for AE plugin from our website. The plugin is free when you buy Mocha AE V3 or Mocha Pro V3 and it available here:
http://www.imagineersystems.com/download-view
![]() |
012 – Paste mocha camera option in the Edit menu in After Effects |
Once pasted, you will get a camera and 5 nulls; 1 null for each corner of your surface and a central null. If the nulls are too large you can easily scale them down by just selecting them all and changing a single value in one of the nulls.
![]() |
013 – The resulting nulls in After Effects |
![]() |
014 – Moving the surface to a different area on the surfboard |
![]() |
015 – The new nulls in the place where we want them |
Trapcode Particular
First of all we want to add a new solid. Either press CMD/Ctrl+Y to bring up the solid window or go to the menu and choose Layer | New > Solid.
Make sure the new solid is the same size as the composition and hit OK.
![]() |
|
016 – New solid! It’s like a meme, only for After Effects. |
Then we want to apply the Trapcode Particular effect from the menu at Effect | Trapcode > Particular. You could also choose another default particle system if you like, and similar processes would apply, but Particular has a lot of great controls.
You can choose to leave velocity on, but since the surfboard is moving, you can get a nice trail effect if you set velocity to zero. Everything else can be left at default values until you want to tweak them. See the settings below.
![]() |
017 – Set velocity to zero |
Now comes the mildly tricky part. You can watch the video if you need further clarification:
- Go to your layer panel and select Mocha null 4 in your layers (or which ever null you want to drive your motion) and press P to show its position information
- Select your solid and navigate to the individual properties of the Particular effect applied to it
- Locate Position XY under the Emitter section of the Particular effect
- Alt-Click the Position XY stopwatch to open the expressions area
- Using the pick whip (See image below) drag from the Position XY in Particular to the Position value of your target mocha null.
![]() |
018 – Pick whip dragging from Position XY to mocha null position |
This will generate an expression in the Position XY value of the emitter. It will look similar to this:
[temp[0], temp[1]]
![]() |
019 – Copy the expression create by pick whip |
Next, alt-click the Position Z value in the Emitter section of Particular, and paste the expression you copied into the available expression field.
Rather than keeping the original expression however, remove this line:
[temp[0], temp[1]]
And replace it with this:
temp[2]
This expression does exactly the same thing as the previous expression, only this time it is only grabbing the Z value from the null position. There are other ways to code this, but this suits the purpose fine.
![]() |
020 – Modifying Position Z expression to only get Z value from the mocha null |
If everything has worked correctly you should get a lovely trail of particles from the emitter, following along exactly in 3d space, driven by your tracked null from mocha.
![]() |
021 – Whee! |
Please check out the video at the start of the tutorial to see the complete run-through, and if you have any questions, feel free to ask in the comments, or on the forum at: forum.imagineersystems.com.