How to do the “Iris Cut” in Davinci Resolve

How to do the “Iris Cut” in Davinci Resolve

DaVinci Resolve Fusion: How to Track a Video Inside an Eye (Iris/Pupil Replacement Effect)

This guide walks you through a specific visual effect: replacing the iris and pupil of an eye with a second video clip that moves with the eye. The entire technique is built inside DaVinci Resolve's Fusion page — no third-party plugins required.

By the end you'll understand not just what to click, but why each node exists and how data flows through the tree — so you can adapt it to your own footage.


What You Need

  • MediaIn1 — Your eye footage (the background layer)
  • MediaIn2 — The replacement video to display inside the iris
  • DaVinci Resolve 17 or later (Fusion page)
  • No special hardware required

The Final Node Tree

Before diving in, here's the complete node graph you're building. Keep this as your reference throughout:

MediaIn1 ──► ColorCorrector1 ──► Merge1 ──► MediaOut1
    │                               ▲
    └──► PlanarTracker1             │ (yellow / background)
                │                  │
                │ track data        │ (green / foreground)
                ▼                  │
Ellipse2 ──► MediaIn2 ──► MatteControl1 ──► Transform1 ──► PlanarTransform1 ──►┘

There are two branches: the top branch handles the eye footage and final output. The bottom branch handles the inserted video, its masking, and its tracked position.


Section 1: Understanding the Effect

Think of it as a sandwich. The bottom slice of bread is your eye footage (MediaIn1). The filling is the replacement video (MediaIn2), cut into the shape of the iris. Fusion's job is to:

  • Precisely track where the eye moves so the filling stays glued to the iris
  • Scale the replacement video so it fits inside the iris
  • Cut the replacement video into a circular shape
  • Composite the two layers together with a Merge node
  • Allow independent color grading of the eye footage

Key mental model: The eye footage never moves — only the replacement video moves to follow the tracking data. The background stays still; the foreground chases the eye.


Section 2: Preparing Your Media

Step 1 — Build Your Timeline on the Edit Page

Before entering Fusion, make sure both clips are on the timeline and trimmed correctly.

Recommended structure:

  • Track V2 — MediaIn2 (the replacement video), trimmed to match the eye clip, render in place
  • Track V1 — MediaIn1 (the eye footage)

Step 2 — Enter Fusion

Select MediaIn1 clip on the timeline (This is your Iris Shot), then click the Fusion tab at the bottom of the screen. Resolve will open the Fusion compositor with MediaIn1

Shift+Space to search then add MediaIn2, drag your rendered clip onto MediaIn2, this will be the shot overlayed on the iris

Before continuing: In the Fusion node graph you should see MediaIn1 and MediaIn2 present.

Step 3 — Verify MediaIn2

Click on MediaIn2 and press 1 on your keyboard, a preview of that track should appear to the left of the final output viewer. If nothing appears, fix this before moving on. 


Section 3: Creating and Verifying the Eye Track

Why We Track the Eye

If the camera or subject moves, the iris moves on screen. Without tracking, your inserted video would stay in one place while the eye drifts away — the illusion breaks immediately. The Planar Tracker records the eye's position on every frame so the inserted video can follow it exactly.

Make sure if you have any adjustment layers active to turn those off in the edit tab before trying to track. We need to be sure we are actually tracking the clip with the eye on MediaIn1

Adding the Planar Tracker

  1. Click on MediaIn1 to select it
  2. Press Shift+Space (or right-click → Add Tool) and type PlanarTracker
  3. Connect: MediaIn1 → PlanarTracker1
  4. View PlanarTracker1 in the viewer (press 1 or 2 on your keyboard)

Planar Tracker Settings — Use These Exactly

Setting Value Why
Tracker Mode Hybrid / Point Area Combines point and area tracking for more reliable results on curved eye surfaces
Motion Type Translation Eyes mostly translate (move side to side / up and down) rather than scale or rotate dramatically
Output Background Generates a transform that moves the foreground layer to stay aligned with the tracked region
Track Channel Luma Provides high contrast between iris and white of eye; works well even on desaturated footage

Drawing the Tracking Region

In the viewer, draw a tracking region that covers the entire eye — not just the pupil. Include the iris, pupil, and a small margin of the white sclera.

⚠️ Critical: Track the ENTIRE EYE, not just the pupil. The pupil alone is too small and too dark to provide reliable tracking data. Including surrounding iris texture dramatically improves track stability.

Running the Track

  • Position the playhead at the first frame of your clip
  • Click the Track Forward button (right-pointing arrow with a bar)
  • Watch the track carefully — if it drifts off the eye, stop and re-draw the region
  • When complete, scrub through the timeline to verify the track stays on the eye on every frame

Section 4: Creating the Planar Transform

What is a Planar Transform?

Once the Planar Tracker has recorded the eye's movement on every frame, it can export that movement as a transform. The PlanarTransform node takes that recorded movement and applies it to any image you feed into it — making that image follow the exact same path as the tracked eye.

Think of it like recording choreography: the Planar Tracker is the choreographer watching the eye dance; PlanarTransform teaches your inserted video to dance the same steps.

Generating the PlanarTransform Node

  1. Select PlanarTracker1 in the node graph
  2. In the Inspector panel, find the button labeled Create Planar Transform
  3. Click it — Fusion automatically creates a PlanarTransform1 node
  4. The node is pre-loaded with the tracking data — you do not need to manually link them

⚠️ Important: PlanarTransform1 is the last node in the bottom branch. Its output connects to the green (foreground) input of Merge1. Do NOT connect it to the blue (mask) input.


Section 5: Scaling the Inserted Video

Why Scale Before the Planar Transform?

The inserted video (MediaIn2) is likely full-frame — 1920×1080 or similar. The iris is a small portion of that frame. If you feed a full-frame image into PlanarTransform1 without scaling it down first, the inserted video will cover the entire frame and you'll lose the illusion.

The Transform1 node sits between MatteControl1 and PlanarTransform1. Its job is to scale and reposition the inserted video so it roughly fills the iris area before tracking is applied.

Transform1 Settings

  • Size: Start around 0.03–0.08 (experiment based on your shot)
  • Center: Adjust X and Y to position the video over the iris in the first frame
  • Enable viewer overlay to see the result while adjusting

Tip: Always complete your scale and position adjustments in Transform1 before fine-tuning the mask shape. Scaling after masking will change the mask-to-video relationship and require redoing your mask.


Section 6: Creating the Circular Iris Mask

The Role of the Ellipse Node

Without a mask, the inserted video appears as a rectangle floating over the eye. The Ellipse2 node creates a circular shape used as a matte — only the pixels inside the ellipse will be visible.

Ellipse2 feeds into the MatteControl1 node's mask input. MatteControl1 applies that ellipse matte to MediaIn2, cutting it into a circle.

Adding and Shaping the Ellipse

  1. Press Shift+Space, search for Ellipse, add it to the graph
  2. Connect: Ellipse2 → MatteControl1 (to the mask/matte input — the triangle input at the bottom of MatteControl1)
  3. Connect: MediaIn2 → MatteControl1 (to the main image input)
  4. Select Ellipse2 and in the Inspector, adjust Width and Height to match the iris size
  5. Adjust the Center position to sit over the iris in the first frame
  6. Optionally increase Soft Edge slightly (0.02–0.05) for a more natural blend

Tip: Because the Ellipse feeds into MatteControl1 and the whole bottom branch then goes through PlanarTransform1, the ellipse mask will automatically follow the eye — you do NOT need to animate the ellipse position.


Section 7: Merging the Clips

Understanding Merge Node Input Colors

The Merge node combines two image streams into one. In Fusion, it has three color-coded inputs:

Color Input Name What to Connect Notes
🟡 Yellow Background ColorCorrector1 (eye footage branch) Shows everywhere the foreground is transparent
🟢 Green Foreground PlanarTransform1 (inserted video branch) Sits on top; transparent areas reveal the background
🔵 Blue Mask Not used in this comp Would restrict where the merge happens if connected

Connecting the Merge Node

  • Connect ColorCorrector1 → Merge1 Yellow input (background)
  • Connect PlanarTransform1 → Merge1 Green input (foreground)
  • Connect Merge1 → MediaOut1

⚠️ Common Mistake: If you accidentally connect PlanarTransform1 to the blue (mask) input instead of the green (foreground) input, the inserted video will be invisible — or will act as a mask cutting into the eye footage. Always verify the input dot color before connecting.


Section 8: Color Grading Only the Eye Footage

Why ColorCorrector1 is on the MediaIn1 Branch

ColorCorrector1 sits between MediaIn1 and Merge1 on the top branch. Any corrections applied here affect only the eye footage — the inserted video remains untouched. This is the power of node-based compositing: you can grade layers independently.

Example Grade Looks

Look ColorCorrector1 Settings Effect
Black & White Eye Saturation → 0 Eye becomes monochrome while the iris insert retains full color — creates striking contrast
Desaturated Eye Saturation → 0.25–0.40 Eye is muted/washed out; insert color pops more subtly
High Contrast Eye Contrast +0.3, Lift slightly down Deepens shadows in skin and whites; makes the insert glow by comparison
Cold Tone Eye Color Wheels → shift Lift/Gamma toward blue Eye looks cinematic and cold; warm insert content creates temperature contrast

Pro tip: The most visually impactful version uses Saturation = 0 on the eye footage while the iris insert keeps full color. The monochrome-vs-color contrast is what makes the effect really pop.


Section 9: Troubleshooting Guide

Problem Likely Cause Solution
Video doesn't appear in viewer PlanarTransform1 connected to blue (mask) input of Merge1 Reconnect PlanarTransform1 to green (foreground) input of Merge1
Inserted video is visible but doesn't move with eye PlanarTransform1 not generated from PlanarTracker1, or tracking data not applied Re-select PlanarTracker1 and click Create Planar Transform again
Track slips off the eye mid-clip Tracking region too small; tracking only the pupil; eyelid blink causing occlusion Redraw larger region covering whole eye; use Hybrid/Point Area mode; manually correct keyframes at blink
Rectangle/square visible around inserted video Ellipse2 not connected to MediaIn2; soft edge too hard Verify Ellipse2 → MediaIn2 mask input is connected; increase Soft Edge value
Inserted video is too large / covers whole frame Transform1 Size not reduced; Transform1 bypassed or missing Reduce Size in Transform1 to 0.03–0.08; verify Transform1 is in the chain
Eye footage disappears MediaIn1 disconnected from ColorCorrector1 or Merge1 yellow input Re-connect MediaIn1 → ColorCorrector1 → Merge1 yellow input
Planar Transform skews or warps the inserted video Motion Type set to Perspective instead of Translation Set Motion Type to Translation in PlanarTracker1; re-track and regenerate transform
Inserted video appears at wrong scale after grading Transform adjustments made after masking Ensure Transform1 is placed BEFORE PlanarTransform1; grade only via ColorCorrector1
Color grade is affecting inserted video ColorCorrector1 placed after Merge1 instead of before it Move ColorCorrector1 to be between MediaIn1 and Merge1 only (top branch)
Tracking is jittery / unstable Using Point mode instead of Hybrid/Point Area; low-contrast footage Switch to Hybrid/Point Area; boost contrast on Track Channel; try tracking in a brighter channel
Soft edge creates dark halo around iris insert Matte edge blending with dark eye surroundings; soft edge too wide Reduce Soft Edge value; add a slight feather rather than full soft edge
MediaIn2 appears inverted or wrong color MatteControl1 set to invert matte; wrong blend mode on Merge1 Check MatteControl1 invert checkbox; verify Merge1 Apply Mode is set to Normal
PlanarTransform node not available in Create menu PlanarTracker1 was never run; no tracking data stored Select PlanarTracker1, run the track fully, then click Create Planar Transform
Exported render shows flickering at iris boundary Soft edge too thin; sub-pixel motion causing aliasing Increase Soft Edge slightly; enable Motion Blur on Transform1
Entire frame is tinted or graded unexpectedly ColorCorrector1 accidentally placed after Merge1 Verify node order: MediaIn1 → ColorCorrector1 → Merge1, not Merge1 → ColorCorrector1

Section 10: Best Practices

Tracking Difficult Eyes

  • Use Hybrid/Point Area mode for any footage with camera shake, blinks, or occlusion
  • Draw the tracking region to include the iris and surrounding sclera (white of the eye) for maximum contrast
  • If the track drifts during a blink, manually keyframe the track position through those frames
  • For extreme close-ups with shallow depth of field, plan for manual correction during focus pulls

Low-Light Footage

  • Switch Track Channel from Luma to Green if the eye has more color information than brightness
  • Add a ColorCorrector before PlanarTracker1 with boosted contrast — this is for tracking reference only and won't affect the final output
  • Keep the tracking region within well-lit areas of the eye

Motion Blur

  • Enable Motion Blur on Transform1 (Inspector → Motion Blur checkbox) to match natural camera motion
  • Shutter Angle of 180° matches standard cinematic cameras
  • If the eye footage has minimal blur, disable Motion Blur on the insert to match

Rendering

  • Render to a high-quality intermediate codec (ProRes 4444, DNxHR) before final color grade
  • Use Smart Render Cache (Playback menu) to cache Fusion outputs and maintain real-time preview
  • Always preview a short looping section before committing to a full render

Saving Versions and Duplicating Comps

  • Use File → Save As with a version number (v01, v02) before making major node changes
  • Right-click your clip on the Edit page and choose New Fusion Comp to duplicate the setup non-destructively
  • Keep a working comp and a clean backup version
  • Label your comps in the Inspector: EyeTrack_v01_tracked, EyeTrack_v02_masked, etc.

Always: Duplicate your Fusion comp before any major change — switching Motion Type, re-drawing the tracking region, or restructuring the node graph. A 10-second save can prevent an hour of rework.


Lessons Learned: 4 Common Mistakes

Mistake #1 — Trying to Track Only the Pupil

The pupil is a small, dark, featureless circle. It provides almost no contrast gradient for the tracker to latch onto, and its boundaries are soft. Tracking the pupil alone leads to jittery, unreliable tracks that drift after a few frames.

The fix: Always draw your tracking region to include the entire eye — iris, pupil, and a small margin of sclera. The iris texture and iris-to-sclera boundary give the Planar Tracker high-contrast edges to follow reliably.

Mistake #2 — Connecting PlanarTransform1 to the Blue Input Instead of Green

The Merge node has three inputs: Yellow (background), Green (foreground), and Blue (mask). If PlanarTransform1 is accidentally connected to the blue input, the tracked video doesn't appear as a visible layer — instead it acts as an invisible mask cutting into the background. The foreground vanishes completely.

The fix: Always connect PlanarTransform1 to the green input dot. Connect ColorCorrector1 to the yellow input dot. If you're unsure, hover over the input dot — Fusion will show a tooltip.

Mistake #3 — Solving the Masking Problem Before Confirming the Track Works

It's tempting to dive into masking and matte controls before the track is solid. This creates a confusing situation where you can't tell if problems are caused by bad tracking or bad masking.

The fix: Always work in this order:

  1. Get the track working and confirmed stable on all frames
  2. Scale the inserted video to roughly fit the iris (Transform1)
  3. Add the mask (Ellipse2 + MatteControl1)
  4. Color grade last (ColorCorrector1)

Each step depends on the previous one being solid. Don't skip ahead.

Mistake #4 — Using Point Mode Instead of Hybrid/Point Area Mode

Point mode tracks a single point — fast but fragile. On a curved, moving eye surface with blinks and varying light, a single point can lose its reference instantly.

The fix: In PlanarTracker1's Inspector, always set Tracker to Hybrid / Point Area before running the track. If you've already run a track in Point mode, switch modes and re-track from the first frame.


Quick-Reference Node Checklist

Before rendering, verify every node in your graph:

  • MediaIn1 — Eye footage loaded; correct clip trimmed
  • PlanarTracker1 — Connected from MediaIn1; Motion Type = Translation; Tracker = Hybrid/Point Area; Output = Background; Track Channel = Luma; track verified on all frames
  • ColorCorrector1 — Connected MediaIn1 → ColorCorrector1; grade applied for desired look
  • Ellipse2 — Shape sized to match iris; Soft Edge added; connects to MatteControl1 mask input
  • MediaIn2 — Replacement video loaded; connects to MatteControl1 main input
  • MatteControl1 — MediaIn2 on main input; Ellipse2 on mask input; matte NOT inverted
  • Transform1 — Size reduced to ~0.03–0.08; Center positioned over iris; placed BEFORE PlanarTransform1
  • PlanarTransform1 — Generated from PlanarTracker1 via Create Planar Transform; Transform1 feeds into it
  • Merge1 — Yellow input ← ColorCorrector1; Green input ← PlanarTransform1; Blue input empty
  • MediaOut1 — Connected from Merge1; output previews correctly
Back to blog

Leave a comment

Please note, comments need to be approved before they are published.