- 1PEAK_INCIDENT_LOG - Header
Identifies the log panel. All speed events are recorded here automatically.
- 2Log Entry Area
Shows timestamped events: KEY frames (speed at keyframes) and !! PEAK EXCEEDED alerts when over the limit.
- 3COPY_LOG_DATA
Copies all log entries to your clipboard. Paste into shot notes, a spreadsheet, or an email.
- 4WIPE_LOG
Clears the log panel. Has no effect on the Maya scene.
- 5Speedometer Dial
Real-time circular gauge showing current speed. Turns red and shakes when over the limit.
- 6Speed Limit Marker
The small red tick on the arc shows exactly where your LIMIT threshold sits.
- 7Telemetry Wave
Scrolling oscilloscope of the last ~80 speed samples. Shows speed history at a glance.
- 8CAT - Category Selector
Choose between METRIC, IMPERIAL, NAUTICAL, or ROTATION measurement systems.
- 9LIMIT - Speed Threshold
Set the maximum acceptable speed. Breaches trigger the log and the red alert dial.
- 10Sub-Unit Selector (Meters/s)
Picks the specific unit within the category. Options change based on CAT selection.
- 11ATTACH SIGNAL / LOCKED: CAMERA1
Select an object in Maya then click this to attach it. Turns green showing the object name. Click with nothing selected to detach.
- 12HUD: ACTIVE / HUD: OFF
Toggles a Maya viewport overlay showing the live speed value. Shows "!! WARN !!" when over the limit.
- 13TRAIL: ON / TRAIL: OFF
Toggles the motion trail. ON expands the settings panel below and builds the trail in-scene. OFF deletes all trail nodes and collapses the panel.
- 14Full Timeline (checkbox)
When ticked, automatically calculates the number of locators needed to cover your full Maya playback range. Disables the manual Count spinner.
- 15Timeline Info Label
Shows the computed result: e.g. "Timeline: 1-120 (119 frames @ step 1.00) Past: 8 | Future: 111 locators"
- 16Count
Number of locators per side (past and future) when Full Timeline is off. Range 1 - 1000. Requires Rebuild Trail.
- 17Offset
Frame gap between each locator. 1.0 = every frame. 2.0 = every other frame. Requires Rebuild Trail.
- 18Scale
Base display size of each locator cross in the viewport. Updates live.
- 19Heat Sens (Heat Sensitivity)
How much speed variation is needed to shift the colour. Lower = more sensitive. Updates live.
- 20Size Boost
How much hotter locators grow in size. 0 = all same size. 8.5 = hot locators are ~10× bigger. Updates live.
- 21Heat Mode
Acceleration = colour based on rate of speed change. Speed = colour based on absolute speed vs average. Updates live.
- 22Match Orientation
When ticked, each locator also shows the object's rotation at that frame - useful for cameras and directional props.
- 23Hide on Playback
Hides all trail nodes during playback and playblast so they don't appear in renders. Reappear when playback stops.
- 24REBUILD TRAIL
Deletes and recreates the trail with current settings. Required after changing Count, Offset, or timeline range.
- 25DRIVE .speed_LIVE CHANNEL
Adds a live-driven
speed_LIVEattribute to the target object, connectable to anything else in Maya. - 26AUTO_SPIN EXPRESSION
Select wheel objects, then click. Creates a Maya expression driving rotateX based on the target's speed - physically correct wheel rotation.
The log panel automatically records speed events as you scrub or play your animation. No manual action required.
Any time the playhead lands on a keyframe of the tracked object, the current speed is recorded:
[17:47:00] FRAME 31: KEY (0.70 METERS/S)
Logged once each time the object crosses above the LIMIT value:
[17:46:59] FRAME 17: !! PEAK EXCEEDED (1.01 METERS/S)
Copies everything in the log to your clipboard. Paste into a spreadsheet, email, or shot report.
Clears the panel. Nothing in the Maya scene is affected.
Every 32 ms the tool reads the world-space position of the tracked object at the current frame and at frame+1, multiplies the distance by FPS and the unit multiplier, then smooths the result over 5 samples.
speed = dist(pos[T], pos[T+1]) × FPS × unit_mult
- Arc sweeps clockwise from 0 to max (set at 1.5× your limit)
- Red tick shows the exact limit position
- Large centre number = current speed
- Dial turns RED and shakes when over limit
The oscilloscope strip shows the last ~80 speed samples as a scrolling waveform. Auto-scales to the max value in view. Great for spotting sudden spikes or gradual acceleration ramps.
- METRIC - Meters/s, Km/h, Cm/s
- IMPERIAL - Inches/s, Feet/s, Miles/h
- NAUTICAL - Knots
- ROTATION - RPS, RPM
Type a number here. When the tracked object exceeds this speed:
- Speedometer turns red & shakes
- A PEAK EXCEEDED entry is logged
- The HUD label changes to !! WARN !!
Selects the exact unit within the chosen category. Shown as "Meters/s" in the screenshot. Changing this updates the conversion multiplier and all readouts immediately.
How to use: Select any transform in Maya (camera, prop, character control), then click this button. It turns green and shows the object name.
Click again with nothing selected to detach. If TRAIL is ON, detaching also removes the trail from the scene.
Adds a Maya Heads-Up Display entry in the viewport showing live speed. Displays !! WARN !! as the label prefix when over limit.
Toggling OFF removes the HUD element cleanly.
Expands the trail settings panel and builds the motion trail in the scene for the attached object. Turning OFF collapses the panel and deletes all trail nodes from the scene.
When checked: reads your Maya playback range (e.g. frames 1 - 120) and calculates exactly how many past and future locators are needed at the current Offset step to cover the full range.
The Count spinner is disabled - the number is computed automatically.
Timeline: 1-120 (119 frames @ step 1.00) Past: 8 | Future: 111 locators
Appears when Full Timeline is checked. Shows the computed past/future split based on where the playhead currently sits within the range.
Number of locators on each side of the current position. Disabled when Full Timeline is active. Range 1 - 1000.
Gap in frames between each successive locator. 1.0 = one locator per frame. 2.0 = every other frame (sparser but covers more time). 0.5 = sub-frame sampling.
The base size of each locator cross displayed in the Maya viewport. Unrelated to the heat-based size boost. Updates live without a rebuild.
Controls how big a speed difference is needed before the colour shifts. Lower = more sensitive to subtle differences. Higher = only extreme differences show as hot. Updates live.
How much bigger "hot" locators grow relative to "cool" ones. At 0 all locators are the same size. At 8.5 the hottest locators are nearly 10× the size of the coolest. Updates live.
Acceleration: colour driven by how much the speed is changing between adjacent locators. Blue = constant velocity. Red = rapid acceleration or deceleration.
Speed: colour driven by absolute speed vs the average across all locators. Blue = slower than average. Red = faster than average.
Cool (slow/constant) → Hot (fast/accelerating)
When ticked, each locator also inherits the rotation of the tracked object at that frame. Useful for cameras so you can see where it was pointing at each sampled moment.
Sets hideOnPlayback on all trail nodes. The trail disappears during playback and playblast so it never appears in your renders, then reappears when you stop.
Tears down and recreates all trail nodes using the current settings. Use this after changing Count, Offset, Full Timeline, or your Maya timeline range.
Adds a custom speed_LIVE floating-point attribute to the tracked object. This attribute is continuously updated every tick with the live speed value.
Once created, you can connect it to anything in Maya via driven keys, expressions, or node graphs:
- Drive particle emission rates
- Control motion blur strength
- Trigger animation layer blending
- Feed a custom viewport shader
How to use:
- First click DRIVE .speed_LIVE CHANNEL to create the attribute.
- Select your wheel / tyre objects in the Maya viewport.
- Click this button.
A Maya expression is created on each selected object driving its rotateX channel based on the tracked object's speed. The formula assumes radius = 1 Maya unit and produces physically-correct rotation. Edit the expression (named <wheel>_speedExp) in Maya's Expression Editor to adjust the radius.
Maya Outliner Hierarchy
timeCascade_<objectName>_GRP ↠root group (all metadata stored here)
timeCascade_<name>_locators_GRP ↠all locator transforms
timeCascade_<name>_current_POINT ↠follows object at current frame
timeCascade_<name>_past_01_LOC ↠object pos 1×Offset frames ago
timeCascade_<name>_past_02_LOC ↠object pos 2×Offset frames ago
...
timeCascade_<name>_future_01_LOC ↠object pos 1×Offset frames ahead
...
timeCascade_<name>_curveSegments_GRP ↠line segments connecting locators
Open Maya's Script Editor (Python tab). Paste and run the launch code below. Or add it as a Maya shelf button for one-click access.
Select your target object (camera, vehicle, character control) in the Maya viewport or Outliner.
Click ATTACH SIGNAL. The button turns green showing the object name (e.g. LOCKED: CAMERA1).
Set your CAT and sub-unit (e.g. METRIC → Meters/s). Set a LIMIT value for your acceptable speed range.
Scrub or play your animation. The dial, log, and telemetry wave all update live.
(Optional) Click HUD: ACTIVE to overlay the speed in the Maya viewport.
Click TRAIL: ON to open the trail settings panel. The trail is built immediately on the attached target.
Tick Full Timeline to cover the entire shot range automatically - or set Count and Offset manually for a shorter/denser trail.
Tune Heat Sens and Size Boost until the heat-map highlights the problem areas you care about.
If you change Count, Offset, or your Maya timeline range - click REBUILD TRAIL.
(Wheel spin) Click DRIVE .speed_LIVE CHANNEL, select your wheel objects, then click AUTO_SPIN EXPRESSION.
Use COPY_LOG_DATA to export the incident log for shot notes or review.
Launch Code
import sys sys.path.append(r'C:/Users/aprst/OneDrive/Documents/maya/scripts/Scipts/Speedo') import importlib, Speedo_V11 as speedo importlib.reload(speedo) speedo.run()
| Node Type | Quantity | Purpose |
|---|---|---|
| plusMinusAverage | One per locator | Adds the frame offset value to Maya's current time output. |
| frameCache | Three per locator (X/Y/Z) | Samples the target's world position at the offset time. This is what makes the trail update without baking. |
| decomposeMatrix | One per target + one per curve CV | Extracts world-space translate and rotate from the object's world matrix. |
| spaceLocator | One per past/future frame sampled | The visible locator crosses you see in the viewport. |
| nurbsCurve | One per adjacent locator pair | The line segments connecting neighbouring locators. |
| transform (group) | 3 groups total | Root GRP (stores metadata), locators GRP, curves GRP - keeps the Outliner tidy. |