Configuration

9 min readUpdated 5 days ago

General

shared/config.lua
1Config.Language = 'en'
2Config.Command = 'autocapture'
3Config.EnableCommand = true
4Config.AceRestricted = true
5Config.AcePermission = 'ml_autocapture.use'
  • Language: UI and notification locale. Additional locale files are stored in locales/.
  • Command: chat command that opens the studio.
  • EnableCommand: Enables the chat command and admin-panel exports.
  • AceRestricted: Requires framework administrator permission or the configured ACE.
  • AcePermission: Additional ACE permission. Set it to an empty string to accept framework administrators only.

Studio location

shared/config.lua
1Config.RoutingBucket = 970
2Config.StudioCoords = vector3(0.0, 0.0, -150.0)
3Config.StudioHeading = 180.0
4Config.StudioAutoRelocate = true
5Config.StudioClearRadius = 25.0
6Config.StudioAltCoords = {
7    vector3(0.0, 0.0, -500.0),
8    vector3(1600.0, 3100.0, -500.0),
9    vector3(2500.0, -350.0, -500.0),
10}
11Config.ChromaKeyColor = 'magenta'
12Config.BackendPort = 3960
  • RoutingBucket: Private bucket used by studio captures.
  • StudioCoords and StudioHeading: Primary hidden studio position and heading.
  • StudioAutoRelocate: Tests the primary location and selects the first clear alternative.
  • StudioClearRadius: Radius checked for map objects around a studio location.
  • StudioAltCoords: Alternative hidden studio positions.
  • ChromaKeyColor: Accepts magenta or green.
  • BackendPort: Loopback port used by the bundled image processor.

Capture timing

shared/config.lua
1Config.Capture = {
2    applyWait = 400,
3    settleFrames = 15,
4    settleWait = 0,
5    streamWait = 3000,
6    propWait = 300,
7    batchSize = 10,
8    batchPause = 250,
9    gcEvery = 60,
10    fast = false,
11    captureScale = 3,
12    uploadTimeout = 20000,
13    uploadWait = 1500,
14}
  • applyWait: Safety delay after applying an item.
  • settleFrames: Rendered frames waited after mounting the camera. Raising it prevents the normal game view from appearing on slow clients.
  • settleWait: Delay after each completed shot.
  • streamWait: Maximum asset streaming wait.
  • propWait: Additional wait for ped props.
  • batchSize and batchPause: Periodic pause controls.
  • gcEvery: Garbage-collection interval in shots. Zero disables it.
  • fast: Removes optional timing margins but keeps settleFrames.
  • captureScale: Maximum source scale relative to the requested output. Zero captures at game resolution.
  • uploadTimeout: Maximum wait for the backend write confirmation.
  • uploadWait: Fallback delay after repeated missing confirmations.

Output routing

shared/config.lua
1Config.OutputRoots = {
2    clothing = 'ox',
3    prop = 'ox',
4    vehicle = 'self',
5    outfit = 'self',
6    cinematic = 'self',
7}
  • ox: Writes below ox_inventory/web/images/.
  • self: Writes below ml_autocapture/images/.

The panel can override these defaults for a single run.

Clothing

shared/config.lua
1Config.Clothing = {
2    size = 256,
3    format = 'png',
4    quality = 92,
5    transparent = true,
6    autoCrop = true,
7    cropPadding = 0.04,
8}
9Config.CaptureAllTextures = true
10Config.IncludeDecals = false
  • size: Square output size.
  • format: png or jpg.
  • quality: JPEG quality from 40 to 100.
  • transparent: Removes the chroma background.
  • autoCrop: fits the garment inside the thumbnail.
  • cropPadding: transparent margin per side, as a fraction from 0 to 0.25.
  • CaptureAllTextures: Captures every texture of each drawable.
  • IncludeDecals: Includes clothing component 10.

Config.CameraPresets stores the framing for each clothing group. Each entry supports fov, zPos, rotation, dist, defaultAngleH, defaultCamZ and defaultRoll. Config.Slots maps inventory labels to component or prop IDs and their camera preset.

Props

shared/config.lua
1Config.Props = {
2    enabled = true,
3    autoCamera = true,
4    size = 256,
5    format = 'png',
6    quality = 92,
7    transparent = true,
8    outputKey = 'inventory',
9    pitch = -18.0,
10    yaw = 35.0,
11    margin = 1.35,
12    list = { ... },
13}
  • enabled: Enables the Props tab.
  • list: item and model pairs. The file ships 184 of them, for example { item = 'model_windowway_metal', model = 'nc_windowway_metal' }.
  • autoCamera: Frames each model from its dimensions.
  • size, format, quality and transparent: Prop output settings.
  • outputKey: Output subfolder mapping.
  • pitch, yaw and margin: Automatic framing defaults.
  • list: Item/model mappings. item becomes the filename; model is spawned for the capture.

Vehicles

shared/config.lua
1Config.Vehicles = {
2    enabled = true,
3    autoCamera = true,
4    size = 512,
5    format = 'png',
6    quality = 92,
7    transparent = true,
8    outputKey = 'vehicles',
9    source = 'config',
10    yaw = 35.0,
11    pitch = -8.0,
12    margin = 1.25,
13    primaryColor = nil,
14    secondaryColor = nil,
15    plateText = nil,
16    background = { mode = 'none', color = '#181a21', color2 = '#0b0d12', pad = 0 },
17    list = {},
18}
  • source: Uses the configured list by default. The panel can switch to all spawnable models or a custom list.
  • primaryColor, secondaryColor and plateText: optional appearance overrides. Set both colours as { r, g, b }, one alone is ignored.
  • background.mode: none, solid colour or gradient as selected in the panel.
  • background.color, color2 and pad: Background colours and transparent padding.

Cinematic presets

shared/config.lua
1Config.Cinematic = {
2    enabled = true,
3    outputKey = 'showcase',
4    width = 1920,
5    height = 1080,
6    format = 'png',
7    quality = 95,
8    watermark = false,
9    bucket = 972,
10    streamWait = 1500,
11    settleWait = 500,
12    clearNearby = true,
13    clearRadius = 90.0,
14}
15Config.Naming = { fallback = '{model}_{set}_{shot}' }
  • width, height, format and quality: Default cinematic output.
  • watermark: applies images/watermark.png if you add that file. None ships with the resource.
  • bucket: Private bucket used for on-location batches.
  • streamWait and settleWait: World and subject settling delays.
  • clearNearby and clearRadius: Hide ambient traffic and pedestrians around the shot.
  • Naming.fallback: Default filename pattern. Available placeholders are {model}, {set}, {shot}, {scene} and {index}.

Config.Scenes stores locations, environment, lights, depth of field and default framing. Config.Shots stores relative camera angles. Config.Compositions stores vehicle and ped slots. Config.Sets binds a scene, composition, shots and output recipe. These presets can also be created and deleted from the in-game studio.

Outfit

shared/config.lua
1Config.Outfit = {
2    enabled = true,
3    outputKey = 'showcase',
4    size = 1024,
5    format = 'png',
6    quality = 92,
7    transparent = true,
8    scene = '',
9    fov = 35.0,
10    yaw = 22.0,
11    pitch = -3.0,
12    margin = 1.75,
13    base = {},
14    poses = { ... },
15    outfits = {},
16}
  • scene: Empty uses the transparent studio; a scene key uses that location.
  • base: Clothing applied before the showcased item.
  • poses: animation, scenario or neutral pose definitions. The file ships five: Relax, Confident, Cool, Flex and Idle.
  • outfits: Optional named complete outfits.

Photo mode

shared/config.lua
1Config.Photo = {
2    enabled = true,
3    outputKey = 'photo',
4    width = 1920,
5    height = 1080,
6    format = 'png',
7    quality = 95,
8    privateBucket = true,
9    bucketId = 971,
10    clearNearby = false,
11    clearRadius = 60.0,
12    subjectDefault = 'vehicle',
13}
  • privateBucket and bucketId: Isolate the administrator while composing.
  • clearNearby and clearRadius: Default ambient cleanup.
  • subjectDefault: vehicle or ped.
  • pedModels: ped models offered when the subject is a ped.

Config.Photo.camera controls FOV limits, flight speed and mouse sensitivity. dof, watermark, lights, grading, postfx, weathers and framing provide the initial editor presets.

Studio backdrop and lights

shared/config.lua
1Config.DefaultMode = 'clothing'
2Config.GreenScreen = {
3    width = 8.0,
4    depth = 8.0,
5    height = 8.5,
6    floorOffset = -3.0,
7}
8Config.HeadMask = { offsetZ = 0.08, halfSize = 0.17 }
9Config.StudioLights = {
10    { offset = vector3(0.0, 2.5, 1.0),  range = 8.0, intensity = 3.0 },
11    { offset = vector3(-2.5, 0.0, 1.0), range = 5.0, intensity = 2.0 },
12    { offset = vector3(2.5, 0.0, 1.0),  range = 5.0, intensity = 2.0 },
13    { offset = vector3(0.0, -1.5, 1.0), range = 4.0, intensity = 1.5 },
14    { offset = vector3(0.0, 0.0, 3.0),  range = 6.0, intensity = 2.5 },
15}
  • DefaultMode: mode the studio opens on: 'clothing', 'prop' or 'vehicle'
  • GreenScreen: size of the backdrop box around the subject and how far its floor sits below the studio point. Its color follows Config.ChromaKeyColor
  • HeadMask: height and size of the mask that hides the head in clothing shots
  • StudioLights: lights placed around the subject during transparent captures, with offset, range and intensity

Studio environment and UI

shared/config.lua
1Config.Studio = {
2    overrideTime = true,
3    hour = 12,
4    minute = 0,
5    overrideWeather = true,
6    weather = 'EXTRASUNNY',
7    lightColor = { r = 255, g = 255, b = 255 },
8    lightBoost = 1.0,
9}
10Config.UITheme = {
11    preset = nil,
12    colors = { primary = nil, accent = nil, background = nil, surface = nil, text = nil },
13}
  • Studio fixes time, weather and light colour during transparent captures.
  • UITheme.preset accepts a resource preset or nil to inherit the global Micio UI preset.
  • Each UITheme.colors field accepts a CSS hex colour or nil to inherit it.

Output Folder

shared/config.lua
1Config.OutputResource = 'ox_inventory'
2Config.OutputSubPath = 'web/images/clothing'
  • OutputResource: Resource that receives the images
  • OutputSubPath: Folder inside that resource

Vehicle Configurator

Shoots a car and each of its parts as separate layers, on the same locked camera.

shared/config.lua
1Config.Configurator = {
2    outputKey = 'configurator',
3    width = 0,
4    height = 0,
5    autoCrop = true,
6    cropPadding = 24,
7    maxWidth = 0,
8    threshold = 28,
9    warmupWait = 1000,
10    applyWait = 120,
11    settleWait = 60,
12    batchPause = 0,
13    hero = { yaw = 35.0, pitch = -8.0, fov = 40.0, margin = 1.25 },
14    paint = {
15        primary = nil,
16        secondary = nil,
17        livery = -1,
18        noPearl = true,
19    },
20    slots = {
21        { key = 'front_bumper', modType = 1, label = 'Front Bumper' },
22        { key = 'rear_bumper', modType = 2, label = 'Rear Bumper' },
23    },
24    list = {},
25}
  • width, height: Forced capture size. 0 uses the game resolution
  • autoCrop, cropPadding: Crops every layer to the same rectangle, with this margin in pixels
  • maxWidth: Scales the result down to this width. 0 keeps it as captured
  • threshold: Part isolation sensitivity from 1 to 255. Raise it if layers pick up shadows
  • warmupWait: Milliseconds a new car settles before its base shot
  • applyWait, settleWait: Milliseconds after fitting a part and after a shot
  • batchPause: Milliseconds to pause every Config.BatchSize shots. 0 never pauses
  • hero: The locked camera used for every shot of a car
  • paint: Paint for the run. nil colours keep the paint of the car, livery = -1 means none, noPearl removes the pearlescent layer. The panel can override it
  • slots: Parts offered in the panel, shortened here. A part a car does not have is skipped
  • list: Vehicles to process, such as { model = 'adder' }. The Vehicles tab can replace it for one run
Autocapture Configuration, FiveM Docs | Micio Mods