This is a long article, but the project itself is fairly simple. I hope you are able to stay with it and develop a project for which you can be proud and learn something new while putting it together. The font is already made and free. All you have to do is put the pieces together! While you put this together, I hope you will appreciate how all the parts fit together perfectly; there’s no need for dealing with anchor points or other issues with alignments. Using font “icons”, vectors, text, etc. is a great, and easy way to build 3D animated illustrations.
Often used in film as a metaphor for the passing of time, a customized clock is a handy template to have around. It can float through “space”, spin around, animate in any number of ways, or it can just be hung on a wall in a scene if you need one and don’t have one.
In this tutorial, you will build a minimal 3D model clock. This clock is designed to keep accurate time or it can be keyframed to speed up, slow down, or even go backwards. It has a second hand which will either “sweep” or “tick”.
This project uses: a font (download here and install with Font Book) for 3D text. Behaviors to control the timing; a Rigged slider to set the clock’s time and another slider to adjust the clock’s running speed; and maybe a trick or two.
You may start this project as either a Title, a Generator, or a plain Motion Project (which can later be converted to a generator).
When you open Motion and pick your project type, before you select Open, go to the top right corner of the Open dialog, select Broadcast HD 1080 with a Frame Rate of 60fps. This is *most* important. The highest frame rate allowed will provide the most accuracy building any clock type template whether this one or a more digital oriented clock. Also, set the duration for one minute (double click on Duration [Timecode] and type ‘1..’) and then select Open.
You will also want to ensure that this project always runs at a consistent speed in FCPX so place the playhead at the very end of the project timeline and type the “tilde key” to add a Marker, then type Command-Option-M to call up the edit marker dialog. For the Type parameter, select Project Loop End from the dropdown menu.
The Font: (ZZSC Clock Pieces Free Regular)
There’s the ubiquitous circle (‘0’) and a center dot (‘.’), the quarter hour/hour marks (1), various “hand” designs and minute mark filler. If you look closely, those are “mickey mouse” hands. When putting together the Mickey Mouse hands, you’ll group the “arm” and the solid and outline hands to create a single item. You can play with that on your own time, we won’t be using them here.
Characters used in this model: * (asterisk), . (period), 0, 1, ; (semicolon), < (less than), and = (seven characters in all).
Once your project is open, click on the Camera icon in the bottom right tray to convert the project to 3D. Select the Text tool and click in the Canvas. Set the font to ZZSC Clock Pieces Free (it will be at or near the bottom of your font menu). Select any character and type it in the canvas. [Do yourself a favor right now: go into Text > Format > Advanced and uncheck Editable in FCP right now!] Go into the Properties tab and reset the layer to Position 0,0. Command-D to duplicate the layer. Select another character and in the Text > Format inspector, Text box, select the previous character and paste the new one in its place. Do this procedure for all the characters in the list above.
Select all the text layers and in the Text > Format inspector, ramp the Size parameter up to 800, then select the Appearance tab and select 3D Text. Go down to the bottom of the inspector and change the Substance to Metal. Leave the default Aluminum and dial down the Shininess to about 7-10%.
One of the characters is encoded to the ‘0’ key. Find it in the layers list, select it and set the Front Edge to Round Ring (Back Edge Same as Front). Dial down the Front Edge Size parameter’s disclosure triangle and set the Width to 6.5 (leave Depth at 4.0).
Select the colon, semi-colon and = characters (hour, minute and second hands) and set their Front Edge to Bevel; Back Edge to Square; and set the Front Edge Size to 3.25. Select the Minute hand character and set Text > Format > Advanced > Offset > Z to 4.0 then select the second hand and set its Text > Format > Advanced > Offset > Z to 8.0.
Select the major hour “ticks” (1) and set the Depth to 0; then select the minor minute “ticks” (*) and set the Depth to 0, Depth Direction Backward and the Weight to -0.2.
For the Center Post (period) character, set the Depth to 10 and the Depth Direction to Forward.
Your clock model should now look something like:
When viewed with the camera shifted to its left side. You’re done with the “model”.
Building the “Clockworks”
In a real windup clock (I think I just heard about 30% of you say: what is that?), there is a spring that exerts force on a set of gears that are fit together to drive all three hands. We will follow that example and work in a similar fashion. We will apply a force (Oscillator) to the Hour hand which will in turn link to the Minute hand which will link to the second hand in order. These linkages are like the gears in a real world (analog) clock. We also need a device with which we can set the time (like a real world “stem”) and another controller to set the speed of animation.
Building the spring
This is exceptionally easy… except for the math involved. Since we’re starting with an Hour Hand, we need to calculate how far and how fast it travels. Our project is only one minute long. In one hour, the hour hand travels 30° (from one hour mark to another). Dividing 30° by 60 minutes (1 hour), we get 0.5 degrees/minute and that’s how far the Hour hand needs to rotate on its Z-axis in our one minute long project. There are a number of ways to manage this animation, but I recommend using an Oscillate behavior. It is extraordinarily accurate (and versatile).
What makes Oscillate a perfect choice is the Sawtooth wave option which drives values between a minimum and a maximum linearly, then repeats without having to use quantization. Another great feature of Oscillate is that it is not dependent on the length of the project or the frame rate. Oscillate always runs at the same speed (inside Motion) no matter what — exactly what is needed for a clock of any kind.
With the Hour Hand layer selected, right-click on Properties > Rotation > Z and select Add Parameter Behavior > Oscillate.
In the Oscillate behavior inspector, change the Amplitude to -0.5°. Using a negative value seems counterintuitive, but clockwise motion is actually a negative direction around the Z-axis. For the speed, set that to 0.5. The reason we set the speed to what seems like half of what is needed is that the “cycle” of the wave starts at -0.5 and progresses to +0.5 which is twice the value we are seeking — we only need a half cycle.
Our project length is one minute long not because of the use of this behavior, but because it requires the use of Project Loop End to maintain its timing in FCPX and the one minute length should normally be longer than ever required and shortening or trimming in FCPX will not affect the clockworks operation. If you need longer, you can stack them end to end with sequential times set.
Even with the project length set at one minute, you still will not notice much in the way of animation. The next step is to link the minute hand to the animation of the hour hand and you will begin to see the effects since the minute hand moves twelve times faster than the hour hand (in one hour, the hour moves 30° while the minute hand moves 360° — 360/30 = 12.)
Select the Minute Hand layer and in Properties > Transform > Rotation > Z right click and select Add Parameter Behavior > Link. Drag the Hour Hand layer into the Source Object well. Increase the Scale to 12. Then, in the Layers List, select the Link behavior you just added and Option-drag a copy to the Second Hand object. In the Link inspector for the Second Hand, drag and drop the Minute Hand into the Source Object well and set the Scale to 60. The second hand moves 60 times the rate of the minute hand.
Play your project. You now have a “frame accurate” running analog clock… that always starts at “midnight” (or “high noon”).
We need to add a mechanism by which we can set the starting time. Since all three hands are controlled by the angle of the hour hand, we need some way to ADD or SUBTRACT from it’s starting position. In general, it is not “good form” to manipulate the parameter under behavior control directly. So how do we get around that? We use a Custom Behavior.
Custom behaviors are great; probably the least used most flexible behavior available in Motion. The values under control in a custom behavior NEVER replace the parameter values under control, they ADD (or subtract) from those values AFTER keyframe or behavior control and BEFORE any other object obtains access to the value of the parameters under custom control. Think about that for a minute. Custom behaviors make possible custom animations that can be turned on or off and ADDED to any animation a user might create in FCPX under keyframe control.
Select the Hour Hand layer and go to the gear icon in the tray at the bottom right of the window and select Parameter > Custom. It is not possible to right click on any parameter in Motion and Add Parameter Behavior > Custom. Custom is too complex (and never an option in this context) even though it starts off more or less “blank”. Double click on the Custom behavior in the Layers List and rename it: “Clock Set”. In the Behaviors inspector, click on Add Parameter and Add > Properties > Transform > Rotation > Z. Take a second to contemplate this behavior. You can keep adding dozens of parameters to this single behavior and animate all of them from within this behavior — a completely independent way of animating an object.
Rigs can be used in numerous ways, but the most common uses are as a User Interface “Limiter” (placing parameter values within specific limits) and as a way to reinterpret or re-present parameter data so that it makes more sense to the user. As an example, as stated above, the clockwise direction is actually a negative angular direction or “magnitude”. Using a Rig slider to effectively change the “labels” and reverse the directions of numerical magnitude makes the data more comprehensible to the end user. For our purposes in this project, we are going to doing both: Limiting and reinterpreting.
Begin by right-clicking on the Clock Set > Rotation.Z parameter and Add to Rig > Create New Rig > Add to New Slider. Motion will create a New Rig and place the new Slider in its “group” at the top of the Layers List simply called “Slider”. Double click on that label and rename it: Clock Set Hours or Set Time, etc. In the Slider’s inspector, the slider widget is now linked to the Hour Hand’s Custom behavior parameter. The small dots under the slider are “snapshot” indicators. For this project, we will leave them as they are by default: at the two extremes.
When you slide the slider indicator to the left, the left snapshot indicator turns blue and when you slide all the way to the right, the right snapshot indicator will turn blue. When a snapshot indicator is blue, whatever you set in the parameters in the rig widget’s list will be “recorded” for that snapshot—you can only make changes to added parameters in a widget when a snapshot is active. In this case, drag the slider all the way to the left and change the Hour Hand.Clock Set.Rotation.Z value to 360 (the hour hand moves counterclockwise 12 hours) then move the slider all the way to the right and set the Hour Hand.Clock Set.Rotation.Z to -360 (the hour hand moves clockwise 12 hours).
The slider control for all other values interpolates between the two snapshots. When that is done, we can now slide the slider between the minimum and maximum values in the range and set the time for anything in between. To give the data more meaning, set the Range Minimum value to -12 (hours) and the Range Maximum value to 12. Right click on the slider’s name in the rig widget inspector and Publish. To check on it, click on the Project layer at the top of the Layers List and click on the Project tab in the inspector. Double click on the value of the slider and type in 2.25 and (with the playhead at the beginning of the project) the time should snap to 2:15. Try others: 6.0 (6:00), 10.6 (10:36), -3.25 (8:45), etc. You have to use decimal hours to set the clock, but you will get the idea how accurate this is. Option drag on the numerical value to slowly adjust the time set, or simply use the slider to “rough” in a starting time.
If you’ve been previewing this effect, you might like the “sweep” second hand. You might also like to have a variation that “ticks” the seconds. Go back to the Second Hand layer’s > Properties > Transform > Rotation > Z parameter and right click > Add Parameter Behavior > Quantize. In the Quantize inspector, set the Step Size to 1.0. Right click on the label Quantize and select Publish. This will add a checkbox option in the published parameters for FCPX. Go back to Project > Project and double click on “Quantize” and change the label to “Second Hand Ticks”. Play the project and turn it on and off to view the effect. Cool, huh?
So far, our clock runs quite accurately in “real time”. For the overall effect of a “time passing” type transitional device for use in video/film, we need to be able to speed it up. For this project, I picked a maximum speed of 12 hours over our one minute project length. That’s very fast and you may want to have the option to turn off the second hand visibility. The best way to do that is to go to the layer’s Transform > Blending > Opacity parameter and add it to a Checkbox rig widget. Change the name of the checkbox widget in the Layers List to “Show Second Hand”. In the Widget inspector, drag the Second Hand.Opacity value to 0, then click the checkbox (it should snap immediately back to 100%). Right click on the Show Second Hand checkbox label in the widget and Publish. You can decide whether or not the second hand is shown by default or not. It’s up to you.
Our last step is speeding up time. We will do this with another Rig slider widget. We have a couple of different options to choose from, but I will limit this discussion to my choice of parameters to control (that doesn’t necessarily mean it’s the right one!)
Select the Hour Hand > Oscillate behavior. In the Behaviors inspector, Right click on Amplitude and select Add to Rig > Rig > Add to New Slider. Click on the new Rig Slider widget that appears in the Layers List, double click on “Slider” and change the name to Clock Speed. In the Widget inspector, the leftmost snapshot should already be set at the current Amplitude value of the behavior (you’ll see the parameter just under the Edit Mode button). Slide the slider all the way to the right until the rightmost snapshot indicator “lights up” and set the Hour Hand.Oscillate.Amplitude value to -360.0°.
We now have to make a decision about how this will be presented in the User Interface. Set the Range Minimum to 1.0. This will indicate that the speed is 1x or “normal”. How I decided this next part may or may not make sense, but you can set the Range Maximum to any value you like greater than 1.0. If you want to calculate how fast 12 hours in one minute really is, you could use that value for the maximum, but I decided to use 1200 as the maximum indicating that the clock moves 12.00 hours in one minute
. If I set a value of 600, then the clock moves 6 hours 0 minutes in one minute and if I set 325, the clock will move 3 hours and 15 minutes in one minute (with a few seconds error). See where I was going with that? The clock speed setting isn’t quite as accurate as the Clock Set mechanism and it shouldn’t be all that important for fast forward — usually you would be fading the clock template in and out at the beginning and end anyway. The accuracy is offset by the starting value of 1.0. If you were to change the Range Minimum to 0, you would re-attain that accuracy but you lose the contextual sense for the UI.
If you use smaller Range Maximum values, you will run into even greater inaccuracy with the Range Minimum at 1.0. It’s just one of those things we have to live with because slider ranges are always numerical and we can’t use labels like “normal” and “36X” (which would also preclude being able to option drag the numerical values for better precision in FCPX… or being able to type the values in). Remember to right click on Clock Speed and Publish it.
Before saving out the generator (or title) for use in FCPX, select the Project “layer” > Project > Publishing tab in the inspector and reorder by clicking and dragging on the parameter labels to reposition them in the order of your liking. Here is my suggested layout:
Make sure you set what you want the default values to be before publishing the template to FCPX. Some other parameters you might want to add to the set are the Clock’s parent group Position, Rotation and Scale parameters. Also, make sure you double click on the Camera controls at the top right corner of the canvas to reset the camera to its default view before saving.
I hope you enjoyed doing this project. If you didn’t actually do the project, fair warning: we might be using it as the basis of another tutorial down the line, perhaps on the topic of how to use Custom Behaviors to create menu selectable variant animations… whataya think?