1 The idea
Plate grain changes every frame. Clone from a grainy frame and hold it, and the grain inside the patch stands still. The safe way is to paint on a degrained plate, then add grain back on top of the paint.
Switch “Paint the patch from”, move the regrain amount and flip the grain seed between “Fixed (default)” and “New every frame”, then press Play. The “grain QC” view shows the grain level; “vs previous frame” shows whether it moves. Watch both readouts: grain, and grain motion, in the patch ÷ around it.
plate = degrained + grain; out = paint + new grain (every frame)2 Hands-on
Make the patch vanish in motion: both values between 0.9 and 1.1×
A still frame can fool you. Watch the “vs previous frame” view while it plays, and ask where the patch’s grain comes from: the source, the regrain, or both.
3 Deep dive
Why paint on a grain-free plate
Grain is noise that changes every frame and every pixel. Clone from a grainy plate and you copy grain from another place or another frame along with the picture. Take the grain out first, paint clean, then put back grain you control.
The plate minus the degrained plate (Merge from) gives the grain; add it back and you get the original. That lets you check the split, and outside the patch you keep the original plate so its grain is never touched.
- 1Denoise the plate
- 2Paint on the degrained plate
- 3Regrain over the paint
- 4Keymix onto the original plate
Frozen grain
A patch painted on one frame and held (with a FrameHold, for example) carries that frame’s grain into every frame. On a still it looks right; in playback the grain around it dances while the patch stands still, and the eye catches it at once.
Grain2 has the same trap: its default seed is a constant, so the grain is frozen unless you animate the seed, for example with an expression on frame such as 134+frame*7.
Check grain with a difference to the previous frame while playing: a frozen patch shows as a dark hole.
Source and regrain go together
Two independent grains don’t cancel; they add up. Regrain 1× over a patch that already has grain and you get about 1.4× the grain around it, half of it still frozen.
| Source | Regrain | What you see |
|---|---|---|
| Degrained | None | A smooth, grain-free spot |
| Grainy, held | None | Right level, frozen in playback |
| Grainy, held | About 1× | Too much grain, about 1.4× |
| Degrained | About 1×, fixed seed | Right level, but frozen |
| Degrained | About 1×, seed per frame | Blends with its surroundings |
Match per channel, check with high-pass
Grain is not equally strong in every channel; blue usually has the most, so check blue first. In Grain2 the strength knobs are red_m, green_m and blue_m; red_i, green_i and blue_i are irregularity, not strength.
The QC view is |out − a small blur| × 50 (the figure uses a 3×3 box; in Nuke, a Blur of about size 1): it strips the picture and leaves the grain structure. Grain inside the patch should match the area around it within about ±10%. How real plate grain changes with brightness depends on the plate and the colour space, so check in the darks and the brights.
Measure the grain right beside the patch at a similar brightness, not over the whole frame.
4 In real work
In Nuke
- Denoise the plate, then paint the cleanup with RotoPaint on the degrained plate; FrameHold it if you use a single-frame patch.
- Merge (from) the plate minus the degrained plate to pull out the plate’s grain for reference.
- Grain2 on the patch: set red_m, green_m and blue_m per channel, starting with blue, and animate the seed with an expression on frame.
- maskgrain is on by default, so grain goes only where the input alpha is; with an alpha of 0, Grain2 adds nothing.
- Keymix: B = the original plate, A = the regrained patch, mask = the patch matte, so the original grain outside the patch stays untouched.
- QC: Blur at size 1, Merge (difference) it against the output, boost ×50 with the viewer gain, and play the shot.
Common mistakes → the fix
- ✗ No regrain: a smooth spot that shows the moment the shot plays✓ Always regrain over the paint and check it with high-pass.
- ✗ Regraining on top of a patch cloned from the grainy plate✓ Use the degrained source; otherwise the grain doubles up to about 1.4×.
- ✗ Holding a patch from a grainy frame, so its grain stands still while the rest dances✓ Hold a grain-free patch and add new grain every frame.
- ✗ Using Grain2 with its default seed✓ Animate the seed with an expression on frame.
- ✗ Matching on a still frame, or on the green channel only✓ Check each channel, blue first, and watch it in playback.
Before you send the shot
- In the high-pass view, grain inside the patch matches the area around it within about ±10%.
- Red, green and blue all checked, blue especially.
- Difference to the previous frame in playback: no still hole at the patch.
- Grain2’s seed is animated.
- Outside the patch it is still the original plate with its own grain.
- Patch grain matches in both the darks and the brights.
5 Check yourself
The patch matches the grain around it on a still, but shows as a spot when the shot plays. What is the most likely cause?
🔒 Answer the question above and this card opens
1. You regrain 1× over a patch cloned from the grainy plate. What happens?
2. Grain2 is on the patch and the level matches, but the patch still shows in playback. What do you check first?
Where the numbers come from: Computed in your browser on our own Blender render of the desert scene. The grain is ours: Gaussian per channel, slightly blurred, added in display values with a fixed strength per channel (blue strongest), new every frame. The “degrained” plate is the grain-free render, a perfect degrain and a teaching version: real denoisers leave some grain and soften detail. Ratios are measured in the browser: grain level is the standard deviation of (result − grain-free render) in luma, and grain motion is the mean frame-to-frame difference, each in the patch ÷ the area around it. The pass range is our own.