Tutorial: weather and camera variation
A dataset where every frame looks the same teaches a model very little. This tutorial covers the two biggest sources of useful variation in Studio, where the camera is and what the sky is doing, plus the validation that stops variation from producing garbage.
Camera modes#
The five presets on the Capture page set several fields at once. They are starting points, and every value stays editable afterwards.
| Preset | Behaviour | Good for |
|---|---|---|
| Orbit | Circles sampled targets, rejects empty views | Object-centric detection. The safest default. |
| Drone | Samples aerial positions aimed at targets | Aerial and UAV datasets |
| Random | Random positions aimed at targets | Maximum viewpoint diversity |
| Fixed | One configured pose, free orientation | CCTV, a fixed inspection rig |
| Spline | Follows a Flight Path actor while aiming at targets | Repeatable sweeps along a known route |
Ranges are the point
A single number pins a value. Two comma-separated numbers randomise it per frame.
Distance (m) 8,30
Altitude (m) 6,22
Field of view 55,80
Yaw 0,360
That alone turns one viewpoint into thousands. Start wide, then narrow if your smoke test shows targets that are too small or clipped.
Fixed cameras from the viewport
To reproduce a real installed camera, fly the editor viewport to exactly the pose you want, then press Fixed from Viewport. It creates or updates a CameraActor at that exact position, rotation and field of view, and switches the recipe to Fixed mode.
Smart Viewpoint Validation#
Randomised cameras produce bad frames: nothing in view, a target three pixels wide, the lens inside a wall, a frame so dark it is noise. Viewpoint validation rejects those samples and draws again before they reach your dataset.
| Control | Default | What it does |
|---|---|---|
| Resample on constraint failure | off | The master switch. Nothing below applies until this is on. |
| Require fully visible target | off | At least one target entirely inside the frame. |
| Min / Max targets | 1 / 0 (any) | How crowded a frame has to be. |
| Min visible targets (%) | 20 | Rejects frames where most targets are occluded. |
| Min box width / height (px) | 16 / 16 | Rejects targets too small to learn from. |
| Retry count | 12 | How many resamples before the fallback applies. |
| Reject empty segmentation | on | Nothing visible in the ID pass. |
| Reject invalid depth | on | Broken depth buffer, often a camera inside geometry. |
| Reject excessive blur | off | Uses a focus score. Turn it on for motion-heavy runs. |
| Reject dark / overexposed | off | Mean brightness outside 35 to 220. |
| Fallback after final retry | stop_job | What happens when retries run out. |
Choosing a fallback
| Fallback | Meaning | When |
|---|---|---|
stop_job | Halt the run | Default. A constraint you cannot satisfy is a bug worth knowing about. |
skip_frame | Drop the frame, continue | Long unattended runs where a few gaps are acceptable. |
continue | Keep the frame anyway | You want the rejects in the dataset. Rare. |
relax_constraints | Loosen and retry | Best-effort coverage of a difficult scene. |
Calibrate from Current Dump reads a capture you already accepted and computes conservative segmentation, depth, focus and exposure thresholds from it. Far more reliable than picking numbers by hand.
Weather#
Pick exactly one driver on the Capture page:
- NameFrame weather (default), built in and works in any project.
- Ultra Dynamic Sky / Weather, which drives the UDS/UDW Blueprint actors if your project has them.
Only the selected driver's controls are shown. Shared output settings stay visible for both.
Built-in weather
The Capture page gives you five preset buttons (Clear, Fog, Rain, Storm, Snow) plus Random, which samples per frame using the weights you supply:
clear_sun:40,fog:20,rain:20,storm:10,snow:10
Weights are relative, so they do not need to sum to 100.
Those buttons are shortcuts, not the whole set. Nine profiles ship in total, including
daytime, golden_hour, overcast and night,
and you can type any of them into the Weather field or the weights string. Each one
with its exact sun, fog and cloud ranges is in
Weather, sky and UDS.
Ultra Dynamic Sky
The Sky parameters and Weather parameters fields set UDS/UDW properties
directly, as Property=value pairs separated by semicolons:
Time of Day=900,1700;Cloud Coverage=0,10
Weather=clear_skies|rain_light|snow
A comma pair is a numeric range, a pipe list is a set of alternatives, and
default leaves the driver untouched.
Settle time (seconds) defaults to 0.75. It is the pause after
applying weather before capturing, so the sky, fog and lighting actually reach the new state.
Set it to zero and you will capture frames mid-transition. If time-of-day changes are not
showing up in the lighting, raise it.
Rain and snow particles
Composite rain and snow particles into generated output is on by default, and it exists for a specific engine limitation. UDS/UDW precipitation is GPU Niagara, which Unreal does not render inside editor scene captures. Without compositing, a "rainy" frame comes out with wet-looking ground and no visible rain. The option draws the precipitation onto the report and dataset images instead. It works with both weather drivers.
Lens and sensor simulation#
Perfect renders do not look like camera footage. The Lens and sensor section on the Dataset page applies a profile after capture, so you can change it and re-export without re-rendering.
Twenty-seven distinct looks ship, from realistic_drone and dashcam
through cctv, bodycam, night_vision,
thermal_white_hot, rainy_lens and vhs_analog. The
complete list, with what each one looks like and which camera it is meant to imitate, is in
Camera lens profiles. Intensity scales the
effect, where 1.0 is full strength.
Set the profile to random and supply weights to mix them across the run:
realistic_drone:40,dashcam:25,rainy_lens:20,cctv:15
A variation strategy that works#
Get one clean frame first
Fixed camera, clear weather, no lens profile. Prove the labels are correct with zero variation in play.
Add camera variation
Switch to Orbit or Drone with wide ranges. Smoke-test. Confirm targets are still well framed at both ends of every range.
Add weather
Random weather with weights matching your deployment. Smoke-test again and look at the images, because this is where settle time problems show up.
Add lens last
It is post-capture, so it is the cheapest thing to change and the easiest to over-apply.
Each stage adds one source of difference, so if something breaks you know which one did it. Turning everything on at once means debugging a dataset where any of four subsystems could be at fault.