Home · Lessons

Camera and composition for CG in a plate

The horizon tells you the camera height; miss it and CG floats

Lesson 02 · Free · ~8 min · Unit: Camera and space

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

Viewer1 · Lesson 02rgba · 1001

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
KneesLow, about half a metre
WaistAbout 1 m
EyesAbout 1.6 m
Above every headHigher 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.

  1. 1Find the horizon
  2. 2Camera height from rulers
  3. 3Focal and sensor
  4. 4Tilt / roll
  5. 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

  1. Camera: set focal length and horiz aperture to the real lens and sensor
  2. A Card as the ground + ScanlineRender to see a CG grid over the plate
  3. Adjust translate y (height) and rotate x (tilt) until horizon and grid agree
  4. Moving camera: CameraTracker (may need NukeX) · lens bend: LensDistortion (undistort to track, redistort the CG)
  5. 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

One question to check yourself

In a plate, the horizon passes through the eyes of every standing person. How high was the camera?

What you learned

🔒 Answer the question above and this card opens

More questions

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.