Blender 5 film-flash series: 1 · Place and shape the light · 2 · Iterate lighting in real time · 3 · Meter and match the camera · 4 · Build and load the background · 5 · Style materials and the film look
This lesson begins after the model, camera, and first flash already exist. The working shot is a Fujifilm GW690III-style 6×9 composition on 120 film at EI 80. Keep the camera profile and the chosen real-camera exposure fixed. The goal is to move a virtual flash, understand the change within seconds, and spend slow render time only on promising setups.
If the project uses the 135, 4×5, or 8×10 preset from Part 3 instead, keep that selected camera, Sensor Width, focal length, and output ratio fixed throughout the same comparison. A format change is a new camera test, not a lighting variant.
“Real time” here means interactive approximation, not an exposure guarantee. EEVEE is a raster renderer designed for speed. Cycles traces light paths and is the checkpoint for bounce, transmission, subsurface skin, and difficult reflections. Neither engine knows the sensitometry of the film, the t.1 duration of the strobe, the lab process, or the scanner. The final real set still needs a flash meter and a test frame.
The result to build
Build one workspace with:
- a locked camera viewport that always represents the 6×9 negative;
- a free “lighting diagram” viewport for moving lights;
- a responsive EEVEE preset for exploration;
- named light variants that can be restored without guesswork;
- repeatable A/B renders in Render Slots; and a small Cycles region for validation.
First ensure every comparison uses the same camera, World, color management, pose, and display size.
1. Freeze a trustworthy baseline
Open the Part 1 shot and save a working copy. Confirm real scale, the GW690III camera profile,
and flash distance in metres. Use EI 80 · f/8 · 1/125 s as this exercise’s fixed reference;
Part 3 handles metering.
Continue the Part 1 collection structure rather than starting a second naming scheme:
SHOT_01
├── CAMERA
├── SUBJECT
├── LIGHTS_FLASH
│ ├── FLASH_A
│ ├── FLASH_B
│ └── FLASH_C
├── LIGHTS_AMBIENT
├── GRIP_FLAGS
├── BACKGROUND
└── CALIBRATION
Set the Outliner to View Layer display mode. Use each candidate collection’s Exclude from
View Layer checkbox as the solo switch; unlike a viewport eye or monitor toggle, exclusion also
keeps an unwanted light out of F12. Names such as Flash_Key_45L and Ambient_Window are more
useful than Area.003.
Set a fixed viewing baseline under Render Properties → Color Management:
| Property | Starting value | Reason |
|---|---|---|
| View Transform | AgX | Handles a broad range of scene-linear brightness without abrupt highlight clipping |
| Look | Medium High Contrast | Uses a named, repeatable AgX look; never change it during an A/B test |
| Exposure | 0.0 | Keeps one fixed display reference |
| Gamma | 1.0 | Avoids hiding a lighting error with display gamma |
Color Management Exposure is global. Leave it fixed. Change Light Data Properties →
Exposure for flash brightness; +1 doubles that light and -1 halves it. Editing both controls
breaks the comparison.
In Object Properties → Transform, lock the camera’s Location and Rotation after composition is approved. A later camera move should create a new shot version.
2. Make the workspace behave like a set
Split the 3D Viewport vertically by dragging from an editor corner. Use the left side as the photograph and the right side as the lighting diagram.
In the left viewport, press Numpad0. Open the sidebar with N; under View → View Lock,
turn Camera to View off after framing. Never judge only from the free view: an attractive
shadow outside the crop may fail in the photograph.
Part 1 covers orbit, pan, framing, and constrained transforms. Add these comparison-specific actions in the right viewport:
| Task | Shortcut |
|---|---|
| Enter or leave Camera View | Numpad0 |
| Open the shading pie | Z |
| Duplicate an independent light | Shift-D |
| Isolate selected objects in this viewport | NumpadSlash or / |
Local View is per viewport and is useful for editing, but it is not a substitute for render-safe
collection exclusion. If objects vanish unexpectedly, press NumpadSlash again. Return to
Part 1 for the complete navigation table.
3. Know which preview you are looking at
Press Z to switch shading modes. Two modes can show materials but answer different questions.
Material Preview uses EEVEE with an HDRI by default. It quickly reveals broken skin, cloth, or shoe materials, but its studio HDRI can fill shadows that would be black on the real set.
For lighting, open the arrow beside the shading sphere and enable Scene Lights and Scene World. Still treat Material Preview as a material-oriented check.
Rendered shading uses the selected Render Engine. EEVEE becomes the interactive preview; Cycles becomes the slower validation view. Judge direction, coverage, relative contrast, and reflections here. The current Viewport Shading manual documents the Scene Lights, Scene World, Render Pass, and compositor preview controls.
Use Solid mode while moving through dense geometry, then return to Rendered. There is no value in asking the render engine to shade a scene while merely selecting an object behind a wall.
4. Configure EEVEE for the fast loop
Choose Render Properties → Render Engine → EEVEE. The following values are starting presets, not universal quality rules:
| Panel and property | Fast placement | Refined EEVEE check |
|---|---|---|
| Sampling → Viewport → Samples | 16 | 64 |
| Sampling → Viewport → Temporal Reprojection | On | On; inspect a still frame after motion stops |
| Sampling → Viewport → Jittered Shadows | Off | On when soft-shadow precision matters |
| Sampling → Shadows → Rays | 1 | 4 |
| Sampling → Shadows → Steps | 4 | 8 |
| Performance → Viewport → Pixel Size | 2× if needed | 1× |
Temporal Reprojection can ghost, so pause before judging an edge. Jittered Shadows cost more because the shadow map cannot be cached for each sample; enable them after placement stabilizes. Blender’s EEVEE Sampling manual explains those controls and the quality/performance trade-off.
Leave Render → Raytracing off for coarse direct-flash placement. Enable it when reflected fill and glossy surfaces matter. Screen-Trace can miss off-screen or hidden information; Light Probe mode costs less but needs suitable probes. Neither is Cycles. See EEVEE Raytracing and EEVEE Limitations.
Change one light property at a time
Select the baseline light inside FLASH_A. Duplicate it with Shift-D, then move the copies into
FLASH_B and FLASH_C with M so each candidate has independent object and light data. Avoid
Alt-D here: a linked duplicate shares data, so changing Power or Exposure can alter multiple
variants.
Use this order for every variant:
- Transform: move and rotate the source while its size and output remain fixed.
- Coverage: for a Spot, adjust Light Data Properties → Beam Shape → Angle and Blend. Angle controls coverage, while Blend controls the cone-edge transition.
- Softness: adjust Point or Spot Radius, or Area Shape and Size. With Jittered Shadows, Radius affects Spot shadow softness; Angle does not. Keep Normalize on to hold total output. Use an Area-light approximation for a large modifier and confirm the physical-source result in Cycles.
- Output: adjust Light Exposure in half-stop or one-stop increments.
- Color: enable Temperature or set Color only after direction and contrast work.
Do not fix poor coverage by raising Exposure: a narrow beam still has a hot center. Do not move the camera to rescue the light; both must remain reproducible.
Include only one FLASH_* child collection in the View Layer. Name its light with the decision,
for example
Flash_B_45L_1.4m_80cm_plus0.5EV; its transform, dimensions, and output form a reusable preset.
Save an approved .blend template and create future shoots with File → Save As.
5. Compare rather than remember
Human visual memory is poor at small brightness and shadow changes. Make controlled stills.
- Include only
FLASH_A. Change an editor to Image Editor, select Render Result in its header, and choose Slot 1. - Press
F12for a quick EEVEE render. - Exclude
FLASH_A, includeFLASH_B, choose Slot 2, and render again. - In
N › Image › Render Slots, rename the slotsA_30deg_hardandB_45deg_soft. - Press
JandAlt-Jto cycle forward and backward, or press a number key for that slot.
Keep output, Color Management, and non-light variables identical. Compare catchlights, nose and chin shadows, background value, skin highlights, and shoe separation. Render Slots are in the Image Editor introduction.
Do not expect Ctrl-B to accelerate an EEVEE Rendered viewport. In Blender 5.2, viewport Render
Regions apply to Cycles, not EEVEE. A region drawn in Camera View can also affect the final
render; clear it with Ctrl-Alt-B when finished or disable Output Properties → Format → Render
Region. Outside Camera View, the region is viewport-only. The View Regions manual
documents the two contexts.
For EEVEE, use Viewport Pixel Size, fewer samples, hidden collections, or a smaller viewport. A camera render region still helps final EEVEE renders.
6. Inspect exposure without grading the answer
False Color and scopes help locate technical problems; they do not meter EI 80 film.
Choose Render Properties → Color Management → View Transform → False Color temporarily. Its heat map exposes very dark regions and high clipping. Check skin, white cloth, metallic shoes, and the calibration card, then restore AgX. A bright specular does not automatically need fixing.
After an EEVEE or Cycles render, open the Image Editor sidebar with N and inspect Scopes:
- Waveform → Luma shows where brightness sits across the width of the frame.
- Waveform → Parade separates the red, green, and blue distributions and helps expose a colored spill or channel imbalance.
- Histogram reveals whether much of the frame is pressed against either end of the range.
- Vectorscope shows hue and saturation distribution; it is more useful after basic exposure and light placement are stable.
Use scopes for relative A/B checks; film latitude, development, and scanning are absent. See Displays and Views and the Image Editor scopes.
7. Validate the winner in Cycles
Under Edit → Preferences → System → Cycles Render Devices, enable a supported device. Then
switch Render Properties → Render Engine to Cycles and set Device → GPU Compute. In
Render Properties → Film, confirm Exposure is at its neutral brightness scale of 1.0.
In Rendered shading, draw Ctrl-B around the face, upper clothing, and one important background
edge. This time the viewport region really reduces the pixels Cycles must render.
Start with:
| Cycles control | Interactive checkpoint | Final selected frame |
|---|---|---|
| Sampling → Viewport → Max Samples | 32–64 | not applicable |
| Sampling → Render → Max Samples | not applicable | 128–256 to begin |
| Sampling → Viewport/Render → Noise Threshold | 0.1–0.05 | 0.03–0.01 |
| Sampling → Viewport → Denoise | On | not applicable |
| Sampling → Render → Denoise | not applicable | On, then inspect texture carefully |
| Denoiser | Automatic | Automatic or OpenImageDenoise |
| Denoising Passes | Albedo and Normal | Albedo and Normal |
Lower Noise Threshold means cleaner output and more work. Denoising helps low-sample previews but can smear pores, weave, hair, and highlights. Inspect noisy and denoised results.
Compare wall bounce, subsurface skin, glossy shoes, transparent fabric, shadow contact, and off-screen reflections. Treat a difference as diagnostic evidence; do not tune EEVEE artifacts into the plan. The Cycles Sampling and Denoising manual defines these controls.
8. Recover performance in the right order
When interaction slows, change the cheapest approximation first:
- Pause simulations and animation playback.
- Hide hair systems, unseen set dressing, volumes, and high-resolution background collections.
- Use Render Properties → Performance → Viewport → Pixel Size at
2×or4×. - Reduce viewport samples and disable EEVEE Jittered Shadows or Raytracing during movement.
- In EEVEE, enable Render Properties → Simplify and lower Max Subdivision, Child Particles, or Volume Resolution; disable custom Normals only for a coarse preview.
- After switching to Cycles, Texture Resolution and Texture Size Limit can reduce memory use. Also use a render region, viewport denoising, and GPU Compute when supported.
Simplify can alter silhouettes, fabric weave, and hair. Restore final settings before approval. See Simplify and Cycles Performance.
| Symptom | Likely cause | First action |
|---|---|---|
| Every small move freezes for seconds | Too much geometry, texture memory, subdivision, or shader compilation | Hide unrelated collections; enable conservative Simplify settings |
| EEVEE shadow crawls or leaks | Jitter, shadow resolution, thin/overlapping geometry, or an EEVEE limitation | Stop movement; give walls thickness; refine shadow settings; verify in Cycles |
| “Shadow buffer full” | EEVEE shadow pool cannot hold the requested maps | Raise light Resolution Limit where acceptable or increase Shadow Pool only if GPU memory allows |
| Cycles never looks clean | Too few samples, a difficult light path, tiny bright sources, or glossy/transmission noise | Restrict the region, increase samples gradually, and inspect the material/light construction |
| Denoised skin looks waxy | Too little information reached the denoiser | Raise samples and compare the undenoised pass |
| Viewport differs wildly from F12 | Wrong shading mode, hidden HDRI, different engine, compositor preview, or Simplify still enabled | Recheck Scene Lights/World, engine, Color Management, visibility, and Simplify |
A repeatable 20-minute exercise
Use a timer; speed comes from a consistent decision order.
00:00–03:00 — Reset. Open the template, save a shot copy, confirm the camera locks, disable all but the baseline flash, choose AgX, and set EEVEE fast-placement values.
03:00–06:00 — Navigate. Put one viewport in Camera View and one in free view. Practice orbit, pan, Frame Selected, and constrained transforms. Return to the exact starting flash.
06:00–11:00 — Make three candidates. Duplicate independently. Create one near-axis direct flash, one 30–45° side key, and one larger/closer soft source. For each, change transform, coverage, softness, output, then color—in that order. Rename it with measurements.
11:00–14:00 — A/B. Render each candidate to a named EEVEE Render Slot. Cycle with J and
reject two based on the camera frame, not the free view.
14:00–16:00 — Inspect. Use False Color briefly, then the Luma waveform and RGB parade. Restore AgX without moving Color Management Exposure.
16:00–19:00 — Validate. Switch to Cycles, draw a face-and-clothing region, enable viewport denoising, and let 32–64 samples settle. Check bounce, skin, fabric, and specular detail.
19:00–20:00 — Record and clean. Rename the winning light and collection, write its distance,
size, angle, and Light Exposure in the object name or shot notes, clear Ctrl-Alt-B, restore
final Simplify settings, save, and return the engine to EEVEE for the next task.
Explore in EEVEE, compare in fixed Render Slots, diagnose with scopes, and approve in Cycles. The real GW690III, EI 80 film, flash meter, and physical set must still prove the result.