Skip to content

Hue

Your particle effect is good — except the colour palette doesn’t quite match the level it’s now being used in. The fire effect that was warm orange needs to be cool blue. The neutral white spark needs to be gold. The sunset hues should drift toward dawn.

You could open every Color graph, pick each keypoint’s new colour by eye, and try to keep the relationships between keypoints intact. That’s painful. The Hue tool is faster and more precise: shift the whole palette through HSV space with three sliders. Hue rotates the colour wheel; Saturation and Value adjust the depth and brightness uniformly.

The Hue panel shows three vertical sliders, each with a gradient strip behind it for visual reference:

  • Hue — rainbow gradient. The slider runs from -0.5 to +0.5 (representing -180° to +180° rotation around the colour wheel). Wraps at the edges.
  • Saturation — white-to-fully-saturated gradient (defaulting to red). Slider runs from -1 to +1. Negative drains saturation toward grayscale; positive intensifies.
  • Value — black-to-white gradient. Slider runs from -1 to +1. Negative darkens; positive brightens.

All three default to 0 (no change). Apply commits the shifted colours; Reset restores the snapshot.

Every ColorSequence property in the selection. Specifically:

  • Color graph on Part, Trail, PointLight.
  • Color graph on Beam — across every GraphBlender state, not just one.
  • Color graph on Atmosphere, plus the second Decay graph the same chapter has.
  • ImageColor3 and BackgroundColor3 graphs on ImageLabel (both are full ColorSequences, both shifted).
  • TintColor on ColorCorrection.
  • Color3 on native ParticleEmitter (when set as a single colour, treated as a one-keypoint sequence for shifting purposes).

Each ColorSequenceKeypoint is shifted independently. If the original graph has three keypoints — white at age 0, orange at age 0.5, deep red at age 1 — the shift converts each to HSV, applies the three offsets, and converts back to RGB. The graph’s keypoint times stay the same; only the colour values change.

Per keypoint:

H, S, V = originalColor:ToHSV() -- decompose
H = (H + hueShift) % 1.0 -- wrap around colour wheel
S = clamp(S + satShift, 0, 1) -- bound to valid range
V = clamp(V + valShift, 0, 1) -- bound to valid range
newColor = Color3.fromHSV(H, S, V) -- recompose

Hue uses modular arithmetic — a shift of +0.5 rotates halfway around the wheel (red becomes cyan, green becomes magenta). A shift of +0.25 rotates a quarter (red becomes yellow, blue becomes green). The wrap means there’s no “out of range” — every shift produces a valid colour.

Saturation and Value use additive arithmetic with clamping. A grayscale-shift (Saturation = -1) drives every keypoint to fully grayscale. A bright-shift (Value = +1) maxes out the brightness of every keypoint. Mid-range values blend.

Same as Resize and Retime. When you open the Hue panel on a selection, the plugin captures the original ColorSequence for every applicable property. Slider movements compute new colours from the snapshot, not from the currently-displayed values. This means:

  • Moving sliders back to centre always returns to the original.
  • You can preview wild shifts without committing.
  • Only Apply persists the change. Reset restores.
  • After Apply, a fresh snapshot is taken — the next slider movement is relative to the post-apply state.

Beam emitters use GraphBlender for multi-state Color animation (covered in the Beam chapter and GraphBlender Math). Each state’s Color is its own ColorSequence.

The Hue tool walks the GraphBlender folder, captures every state’s Color in the snapshot, and applies the shift to all states uniformly. So a 3-state Beam with white→cyan→red color progression gets every state shifted together.

Native (untransformed) ParticleEmitter and Trail instances are supported. The tool reads their Color property as a ColorSequence, shifts it, and writes it back. No special handling needed for natives.

Hue is right when:

  • The colour relationships within an effect are correct, and only the palette needs to shift.
  • You want to recolour a whole VFX library to match a new theme.
  • You want to preview before committing.

Manual editing is right when:

  • Different keypoints in the graph need different shifts (an orange-to-red sequence becoming an orange-to-blue sequence — that’s not a uniform shift).
  • The colour change is qualitative — replacing one specific colour with a specific other colour, not shifting the palette.

For complex re-colouring jobs, a common pattern is: use Hue for an approximate global shift, then edit specific keypoints in the panel to fine-tune the result.

Clipboard is the next bulk-edit tool. Different model from Resize/Retime/Hue — instead of a slider that transforms values, it copies values from one emitter and pastes them across many.