1 The idea
The horizon in a picture always sits at the camera’s eye level. If the camera is 1.6 m up, everything 1.6 m tall standing on the same flat ground has its top touching the horizon, near or far.
Every orange pole in the plate is 1.6 m tall; use them as rulers. Adjust the CG camera until the horizons agree, the CG grid sits on the floor pattern and the robot stands on the ground. Focal length changes how wide you see, height changes how flat or deep the ground looks, and tilt slides the horizon up and down.
horizon_y (from top of frame) = ½·H·(1 + tan(tilt) / tan(vFOV/2)) (H = frame height, tilt up = +)2 Try it
Look at the tops of the orange poles first: they tell you the camera height
3 Deep dive
The horizon is eye level, whatever the tilt
The horizon is the image of the plane at the camera’s height. Any point at that height, near or far, lands on it. Tilt only slides the line up or down the frame; it does not change where it cuts things.
So people and objects of known height work as rulers. If the horizon cuts standing people at the waist, the camera is about waist high.
| Horizon crosses people at… | Camera roughly |
|---|---|
| Knees | Low, about half a metre |
| Waist | About 1 m |
| Eyes | About 1.6 m |
| Above every head | Higher than people (crane, drone) |
Focal length crops; position shapes perspective
Recap from L2: how much bigger near things look than far things depends on where the camera stands. Focal length only picks how much you see. Without moving the camera, a new focal length is just a crop of the same view.
Recap from L1: horizontal field of view = 2·atan(sensor width / (2·focal)). The sensor must match the real camera: the same focal length on a smaller sensor sees a narrower view.
| Focal (36 mm wide sensor) | Horizontal FOV |
|---|---|
| 24 mm | ≈ 74° |
| 50 mm | ≈ 40° |
| 85 mm | ≈ 24° |
Reading clues from the plate
Parallel lines on the ground, like road edges or floor patterns, meet at points on the horizon. If the camera tilts up or down, vertical lines such as poles lean toward each other. If the horizon itself is slanted, the camera has roll.
- 1Find the horizon
- 2Camera height from rulers
- 3Focal and sensor
- 4Tilt / roll
- 5Place CG, check contact
If the set notes give you the lens, lock the focal length rather than guessing
Moving cameras and lenses
A locked-off plate can be matched by hand. Once the camera travels and you get parallax (near things slide faster than far things), you need a 3D camera track. A camera that only rotates in place (a nodal pan) has no parallax.
Real lenses bend the image; wide lenses often bulge outward (barrel). Undistort only to track, then redistort just the CG to fit the plate. Leave the hero plate untouched. The full workflow is in L4.
4 In real work
In Nuke
- Camera: set focal length and horiz aperture to the real lens and sensor
- A Card as the ground + ScanlineRender to see a CG grid over the plate
- Adjust translate y (height) and rotate x (tilt) until horizon and grid agree
- Moving camera: CameraTracker (may need NukeX) · lens bend: LensDistortion (undistort to track, redistort the CG)
- Merge the CG over the plate and add a contact shadow before you judge
Common mistakes → the fix
- ✗ CG floats, so you slide it down in 2D✓ The whole perspective goes wrong. Fix the camera height and tilt.
- ✗ Changing focal length to fix perspective✓ Focal length only crops; perspective comes from position. Move the camera (see L2).
- ✗ Right focal length, wrong sensor size✓ The field of view comes out wrong. Match the aperture to the real camera (see L1).
- ✗ Undistorting the hero plate and delivering it that way✓ Redistort the CG instead and leave the hero plate alone.
- ✗ Judging ground contact before there is a contact shadow✓ Without a shadow under the feet, even a correct position looks like it floats. Add the shadow first.
Before you send the shot
- CG and plate horizons agree
- Known-height objects in the plate and the CG agree in scale
- Focal length and sensor match the real camera (when known)
- Vertical lines lean the same way as in the plate
- Contact shadow present, no sliding when the shot plays
5 Check yourself
In a plate, the horizon passes through the eyes of every standing person. How high was the camera?
🔒 Answer the question above and this card opens
1. You change the CG camera from 35 mm to 50 mm without moving it. What changes?
2. A dolly shot: the horizon matches on frame one, but the robot slides on the ground as it plays. What do you need?
Where the numbers come from: The scene is built with three.js using a 36 mm wide sensor. The plate in this lesson is a simulated render, not real footage.