NAMEFRAME Frame the world. Name the frames.

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.

PresetBehaviourGood for
OrbitCircles sampled targets, rejects empty viewsObject-centric detection. The safest default.
DroneSamples aerial positions aimed at targetsAerial and UAV datasets
RandomRandom positions aimed at targetsMaximum viewpoint diversity
FixedOne configured pose, free orientationCCTV, a fixed inspection rig
SplineFollows a Flight Path actor while aiming at targetsRepeatable 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.

ControlDefaultWhat it does
Resample on constraint failureoffThe master switch. Nothing below applies until this is on.
Require fully visible targetoffAt least one target entirely inside the frame.
Min / Max targets1 / 0 (any)How crowded a frame has to be.
Min visible targets (%)20Rejects frames where most targets are occluded.
Min box width / height (px)16 / 16Rejects targets too small to learn from.
Retry count12How many resamples before the fallback applies.
Reject empty segmentationonNothing visible in the ID pass.
Reject invalid depthonBroken depth buffer, often a camera inside geometry.
Reject excessive bluroffUses a focus score. Turn it on for motion-heavy runs.
Reject dark / overexposedoffMean brightness outside 35 to 220.
Fallback after final retrystop_jobWhat happens when retries run out.

Choosing a fallback

FallbackMeaningWhen
stop_jobHalt the runDefault. A constraint you cannot satisfy is a bug worth knowing about.
skip_frameDrop the frame, continueLong unattended runs where a few gaps are acceptable.
continueKeep the frame anywayYou want the rejects in the dataset. Rare.
relax_constraintsLoosen and retryBest-effort coverage of a difficult scene.
Calibrate instead of guessing

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:

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

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#

  1. Get one clean frame first

    Fixed camera, clear weather, no lens profile. Prove the labels are correct with zero variation in play.

  2. 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.

  3. 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.

  4. Add lens last

    It is post-capture, so it is the cheapest thing to change and the easiest to over-apply.

Why in that order

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.