NAMEFRAME Frame the world. Name the frames.

Camera lens profiles

A perfect render does not look like camera footage, and a model trained only on perfect renders notices. Lens profiles apply a measured amount of the wrong to your images: haze, grain, dirt, glare, compression. This page lists every profile that ships.

Applied after capture, which changes everything#

Lens simulation runs offline, in the report and dataset exporters, not in Unreal. Three consequences worth knowing:

# in a recipe
sensor:
  enabled: true
  profile: realistic_drone
  strength: 1.0
  save_clean_images: true

# or per export
nameframe dataset _local/dumps/beach _local/datasets/beach --task box --lens-profile realistic_drone --lens-intensity 1.0 --include-clean-images
Keep the clean copy

save_clean_images, or --include-clean-images, writes the untouched RGB next to the processed images. It costs disk and saves you from re-rendering when you want to see what the lens actually did.

Intensity#

0 leaves the image clean, 1.0 is the profile as designed, and up to 2 pushes it hard. Values above 1 are useful for stress-testing a model, and less useful for training data that is meant to look plausible.

The catalogue#

27 distinct looks, reachable under 40 names plus 4 random aliases. An alias is an exact synonym: it resolves to the same parameters.

ProfileAlso accepted asWhat it looks like
nonecleanNo treatment. The render passes through untouched.
night_visioninfrared_greenGreen image intensifier: heavy gain, noise and bloom.
thermal_white_hotthermalThermal imager, white-hot palette.
sepia_vintagevintageAged film stock: warm cast, soft edges, heavy grain.
golden_hournoneLow warm sun, long glare, mild haze.
harsh_noonblown_highlightsBlown highlights and hard contrast, as at midday.
night_streetsodium_nightSodium street lighting, orange cast, low-light noise.
cold_cineteal_cineTeal cinematic grade, cool and slightly desaturated.
action_camgoproWide sports camera: strong contrast, chromatic fringing.
vhs_analogvhsAnalogue tape: bleed, scanline noise, heavy compression.
cheap_webcamwebcamLow-cost sensor: soft, noisy, aggressively compressed.
underexposed_noiselow_light_noiseShot below the sensor's usable range.
realistic_dronedrone_camera, runpod_realisticThe default aerial look: mild haze, light dirt, moderate grain.
atmosphericnoneDistance haze with a cool cast.
dusty_aerialnoneAerial through dust: strong haze, warm cast, dirty optics.
cool_hazenoneCold desaturated haze, low contrast.
sharp_surveillancenoneClean fixed camera: sharp, low grain, high quality.
cctvnoneOlder fixed camera: desaturated, blocky, low bitrate.
dashcamnoneVehicle camera: wide, contrasty, visible compression.
bodycamnoneWorn camera: soft, noisy, motion-tolerant.
phone_cameranoneModern phone: heavy sharpening and saturation.
old_security_cameranoneDegraded fixed camera: washed out and blocky.
dirty_industrial_lensnoneGrease, dust and scratches on the front element.
rainy_lensnoneWater on the lens: streaks, smearing, glare.
low_sun_dirtynoneLow sun straight into a dirty lens: heavy glare and ghosting.
dirty_lens_low_contrastnoneNeglected optics: low contrast, dirt, dust, scratches.
fogged_cameranoneCondensation on the element: soft, hazy, desaturated.

Random and weighted selection#

These four names all mean the same thing, pick one per frame: random, weighted, sensor_random, camera_random.

Without explicit weights, this is the built-in distribution. Weights are relative, so they do not have to add up to anything in particular.

ProfileDefault weight
dusty_aerial20
dirty_lens_low_contrast18
realistic_drone16
atmospheric12
golden_hour11
dashcam10
rainy_lens10
cold_cine9
harsh_noon9
action_cam8
dirty_industrial_lens8
low_sun_dirty8
night_street7
fogged_camera7
cctv6
night_vision6
sepia_vintage5
bodycam5
vhs_analog5
underexposed_noise5
cheap_webcam4
old_security_camera4
thermal_white_hot4
phone_camera4

What a profile is made of#

Every profile is a set of these values. You can override individual ones through sensor.effects in a recipe, for when a stock profile is close but not exactly what you want.

ParameterEffect
chromaticChromatic aberration, colour fringing towards the edges
bloom_threshold, bloom_intensity, bloom_radiusHighlight bloom
vignette, vignette_powerCorner darkening and its falloff
grain, grain_chromaLuminance and colour sensor noise
contrast, exposureTone curve and overall brightness
warmth, tintColour temperature and per-channel tint
softnessOptical blur, a lens that is not quite sharp
desaturateColour strength reduction
haze, haze_gradient, haze_colorAtmospheric veil and its vertical gradient
dirt, dirt_blobs, dust, scratches, greaseContamination on the front element
glare, glare_ghostsVeiling glare and lens-flare ghosts
blockiness, jpeg_qualityCompression artefacts

Choosing one#

Match the profile to the camera you are going to deploy on, not to what looks good.

Deploying onStart with
Drone or aerial imageryrealistic_drone, or dusty_aerial in dry climates
Fixed security cameracctv, or sharp_surveillance for a modern one
Vehicle-mounteddashcam, plus rainy_lens in the mix
Worn or handheldbodycam or phone_camera
Night operationsnight_street, night_vision, underexposed_noise
Thermal sensorsthermal_white_hot
Mixed or unknownrandom with weights matching your fleet

Weighted mixes

Real fleets are not one camera. Weight the mix to match yours:

sensor:
  profile: random
  profile_weights: "realistic_drone:40,dusty_aerial:25,rainy_lens:20,fogged_camera:15"

Or on the CLI:

nameframe dataset _local/dumps/x _local/datasets/x --lens-profile random --lens-profile-weights "realistic_drone:40,dashcam:25,rainy_lens:20,cctv:15"

Tuning one knob

When a stock profile is close but not right, override individual parameters instead of building a new one:

sensor:
  profile: cctv
  effects:
    grain: 8.0
    jpeg_quality: 55
Do not over-apply

Lens simulation is the last thing you should add and the easiest to overdo. Heavy dirt and grain on top of an already-hazy scene produces images no real camera would output, and the model learns the artefact rather than the object. Add it after the camera and weather variation already work, and look at the result.

See also#