AI tools: More tools

Everything else your AI can call. 11 tools. You see every step your AI takes and can undo any of them.

direct_sequence

The AI director: writes a whole cut of the scene as a director and a cinematographer would shoot it, in a style (trailer: fast cuts on the beat, anamorphic, low hero angles, every shot moving; drama: long takes, slow push-ins, the focus on whoever speaks; horror: slow creeping pushes, low and dutch angles, sudden close cuts, shallow focus; documentary: handheld, a zoom, natural pacing). It opens on a shot that establishes the subjects, then covers them in the style's sizes (wide to extreme close-up), each framed with the eyes on the upper third and lead room where they look, every camera on one side of the line between the two subjects so screen direction never flips, no jump cuts, the lens for each size from the style's kit, rigs and moves, the focus on the eyes, the style's film; cuts on the music's beat when music is given. Replaces Sequences/<name>. Returns the shot list; render_sequence shows it.

ArgumentTypeWhat it does
actionstringA sequence holding the action to cover (who walks where: its tracks and events, its length): the cut keeps them, with the director's cameras and focus in place of its own.
lengthnumberSeconds (default 12).
musicstringAn audio file in the project to cut on its beat (wav, aiff, m4a, mp3).
name requiredstringThe sequence to write (Sequences/<name>.sequence.json; replaced).
seedintegerAnother take: a different side of the line, angles and pacing (default 1).
styletrailer / drama / horror / documentaryHow it's shot (default drama).
subjectslist of stringWho it's about, one or two (default: the first two characters in the scene).

gpu_driven

GPU-driven culling and detail for still objects (a city's buildings and blocks): when a scene has enough plain still models (default 1,024), the GPU tests each one against the view, last frame's depth and the sun's cascades, picks its detail level with the CPU's own rules, places it and writes indirect draw arguments, instead of the CPU doing it per object every frame. Reports how many objects, archetypes and buckets it handles, what the GPU drew and left out last frame, and the CPU cost of keeping its copy. Switch it off and on (enabled), change the threshold (minimum) or its occlusion test, to A/B with frame_profile.

ArgumentTypeWhat it does
enabledbooleanGPU-driven still objects (default on; off: the CPU path for everything, A/B).
metal4booleanEncode the passes on Metal 4 (an MTL4 queue with an argument table and a residency set, ordered by events) instead of the Metal 3 encoder (default off until measured; TTR_GPU_DRIVEN_MTL4=1).
minimumintegerQualifying objects a scene needs before the GPU path takes them (default 1024).
occlusionbooleanLeave out objects wholly behind last frame's depth pyramid (default on; it stands down while the camera moves fast).

look_through

Look through a camera object (one with cine_camera): the editor's viewport becomes that camera, its place and its body and lens (field of view from the sensor, depth of field at its stop and focus, distortion, fall-off and bokeh), live, with the viewfinder's frame lines and guides over the picture; flying the view then moves the camera (each flight is one undo). camera "off" goes back to the editor's own camera. Also sets the viewfinder: frame_lines (full, 2.39 scope, 2.00, 1.85 flat, 16:9, 1.43 IMAX, 4:3, 9:16 vertical, or w:h) and guides (thirds, safe_areas, center, horizon). See it with editor_window_shot.

ArgumentTypeWhat it does
camerastringThe camera object's name; "off" ends looking through. Leave out to change only the viewfinder.
frame_linesstringfull, 2.39, scope, 2.00, 1.85, flat, 16:9, 1.43, imax, 4:3, 9:16, vertical, or w:h.
guideslist of thirds / safe_areas / center / horizonThe guides to show ([] for none).
peakingbooleanFocus peaking: mark what is in focus over the picture. (To make the focus follow a character's nearer eye, set the camera's cine_camera focus_target with edit_entity.)

make_creek

Cut a creek into the land in one undoable step: from `start` [x, z] it finds its way downhill (`length` m), winds (`meander` 0...1), and sits in a real channel: the water `bank_height` (0.3-0.6 m) under its bank tops, sloped banks that take the land's own ground, a wet gravel bed, round stones in the bed (some breaking the surface) and along its edges. Width varies between `width` [min, max] m. The land opens along it and a fine channel mesh fills the opening (seamless at its edge, solid to walk on); the river water follows it. Answers with a camera on it and its first centreline point. HTTP calls return a job_id immediately; read progress and the final result with tool_job instead of repeating the tool.

ArgumentTypeWhat it does
bank_heightnumberBank top over the water, metres (default 0.45).
claritynumberMetres you see into it (default 10).
depthnumberWater depth in the middle, metres (default 0.45).
flownumberm/s (default 1.2).
foamnumber0...1 (default 0.35).
lengthnumberMetres (default 600; it stops sooner where the land gives no way down).
meandernumberHow much it winds, 0 straight ... 1 (default 0.6).
namestring
ripplesnumber0...1 (default 0.6).
seedinteger
start requiredlist of number[x, z] world: where it starts (it runs downhill from there).
stonesnumberStones per 10 m (default 2; 0 none).
terrainstringThe terrain object's name. Default: the first terrain.
widthlist of number[min, max] water width, metres (default [1.8, 3.5]: a woodland brook).

metal4

Apple GPU features in use, and switches for A/B (Open City lane F): this Mac's Metal 4 support (placement sparse textures need macOS 26.4+ and the GPU's supportsPlacementSparse), the scene residency set (models' buffers held once instead of handed to every encoder every frame: members, commits, per-frame uses it saved), placement sparse texture streaming (maps, heap and mapped megabytes, levels streamed up and down), MetalFX (on, why, at what scale) and how many render targets live only in tile memory (memoryless).

ArgumentTypeWhat it does
residency_setsbooleanScene residency set in place of per-frame useResources (default on where macOS 15+; off: the old calls, A/B).

placements_build_slods

Makes a placements object's merged far levels (the GTA chain's SLOD1-3): its copies merged into one flat-coloured model per 128 m cell (SLOD1), per 256 m (SLOD2) and per 512 m group (SLOD3), small things left out and simplified to a triangle budget per level, written under Assets/HLOD/<name>/ with an index (slods.txt). Past slod1 / slod2 / slod3 metres a cell or group then draws as one model instead of its copies, through a dithered cross-fade. Rebuild after the placements change.

ArgumentTypeWhat it does
folderstringUnder Assets (default HLOD/<name>).
max_triangleslist of numberPer model at levels 1, 2, 3 (default [6000, 9000, 14000]).
min_sizelist of numberCopies smaller than this (m, longest side) are left out at levels 1, 2, 3 (default [3, 8, 16]).
namestringThe placements object (default: the only one).
shapeboxes / modelsboxes (default): each copy one box in its model's average colour, GTA's far levels, a few MB; models: each copy's coarsest triangles merged (heavier: hundreds of MB for a city).
slod1numberMetres past which SLOD1 shows (default 700; 0 off).
slod2numberDefault 1500 (0 off).
slod3numberDefault 3000 (0 off).

placements_from_objects

Turns plain placed objects (only a place and a model: a city's buildings, a port's crates) into one placements object: the models listed once and a list file of where each copy stands, drawn as instance runs in cells (copies near the eye still draw as ordinary objects). Each object cost the frame about 3 µs of CPU; a placements object costs a line per cell and model. Objects with anything else on them (scripts, colliders, lights, attachments, glow), streamed cells' objects, and models with fewer than min_copies copies stay as they are. One undoable step.

ArgumentTypeWhat it does
dry_runbooleanReport what would change, change nothing.
filestringThe list's project path. Default: Scenes/<scene>.placements/<name>.ttrplace.
groupstringOnly objects in a group starting with this ("Blockout_"). Default: any.
min_copiesnumberA model needs this many copies to be placed (default 2); rarer ones stay objects.
modelsstringOnly objects whose model starts with this ("Forge/oc_kit_"). Default: any.
namestringThe placements object's name (default "Placements").
replacebooleanOverwrite an existing list file.

population_status

The living city's budgets (the population object, Open City): which kind of place the player is in (population_zone boxes), the hour and where it comes from (the population clock, the scene's time of day, or the sun), weekday or weekend, the platform's budgets and density dial (Mac or Deck), how many pedestrians and cars the table allows round the player now and the pedestrian mix; in Play also how many are out, how many wait parked in the pools for reuse, and how many came and went. Out of Play: the settings and the zones. Set it with edit_entity: population { density 0.8 platform "deck" hour 13 } on any object, and population_zone { kind "downtown" size (400, 80, 300) } boxes; pedestrian templates are characters tagged pedestrian_template (ped:office, ped:tourist... pick the mix), cars tagged traffic_template.

No arguments.

scenario_place

Place or generate scenario points (people doing things at places; read them with scenario_points). action place: one point, or several with `points`: name, position, yaw (the way the person faces; for a parking spot the way the car's nose points), activity (a clip or work, kneel, use, pick_up, sit, talk, phone, lean, smoke, push), stay [min, max] seconds, users (pedestrian kinds: their templates' ped: tags), hours ("7-12, 13-19"), capacity, next (a chain: "Garage_Toolbox:2, Garage_Locker:1"), chain_only, vehicle (a parking spot: a traffic_template car pulls in and its driver gets out into the chain), grip, prop, group. action generate: the sets for the buildings in `area` [x, z, radius] by kind (garage: mechanic at the car, toolbox, locker, parking spot, customer; shop: window, smoking door, phone; office/hotel: smokers, talkers; house: porch; park: bench); `kind` forces one; buildings are found by their model (lane A's oc_kit_* names; plain blockout boxes only with a kind). People come from the city's pedestrians (characters tagged pedestrian_template, a population object in the scene).

ArgumentTypeWhat it does
action requiredplace / generate
activitystring
arealist of numbergenerate: x, z and a radius in metres.
capacitynumber
chain_onlyboolean
gripstring
groupstring
hoursstring
kindstringgenerate: the building kind to use (garage, shop, office, hotel, house, park) instead of the model's.
limitintegergenerate: most buildings (default 12).
namestring
nextstring
pointslist of objectplace: several points, each with the fields above.
positionlist of number
propstring
staylist of number
usersstring
vehicleboolean
yawnumber

scenario_points

Scenario points (GTA-style: people doing things at places, cars pulling in), read only: the points (in `area` [x, z, radius] or all) with their activity, users, hours and chain; in Play also what's happening at them (people acting, walking to a point, cars pulling in, parked) and their cost per frame, then each person at them (where, walking to which point and how far, round a car, acting and for how long) and each scenario car (how far off its spot and its heading). Place or generate them with scenario_place.

ArgumentTypeWhat it does
arealist of numberx, z and a radius in metres.
limitintegerMost points shown (default 40).

seat_driver

Seat a character in a vehicle as its driver, measured: attached to the vehicle (rigid) facing its nose, scaled (driver_height_m: its standing height in metres, or height_to_length: that height over the vehicle's length), hips pinned on the seat, hands on the steering wheel and feet on the pedals by pose_character's IK, a tail routed clear, then a clip report: every bone's volume against every vehicle part, by name (over 1 cm is a clip; sitting on the seat, hands round the wheel and feet on the pedals are contact). Points come from the vehicle model's forge points (seat_0, grip_L, grip_R, pedal_L, pedal_R) or else its parts by name (Seat*, Steering_Wheel, Pedal*, Floor*): the reply says which. Vehicle space: metres in the vehicle's own axes, +Z its nose, +X its left, +Y up. It splits the steering wheel into its own object (split_wheel) and adds driver { } (alive): the hands follow the steering, the body leans into turns, bounces, looks into the corner, breathes and reacts (game.driverReact). Returns pictures from the side, the front and above.

ArgumentTypeWhat it does
alivebooleanAdd driver { } so the driver moves with the vehicle in play (default true).
driver requiredstringThe character to seat (a rigged object with an animator).
driver_height_mnumberScale the driver to this standing height (m).
fit_wheelbooleanMove the (split) steering wheel to the driver when it's out of a comfortable reach or in its body (default true).
gripsobjectWhere the hands hold the wheel, vehicle space: {left: [x,y,z], right: [x,y,z]}.
height_to_lengthnumberScale the driver so its standing height is this share of the vehicle's length (a kart's racer about 0.75, read off the reference sheet).
namestringThe seated pose clip's name (default <driver>_Seat).
pedalsobjectWhere the feet go, vehicle space: {left: [x,y,z], right: [x,y,z]}.
seatlist of numberThe seat's top where the driver sits, vehicle space [x,y,z].
split_wheelbooleanMake the steering wheel its own object so it turns (default true).
stillbooleanReturn pictures (default true).
vehicle requiredstringThe vehicle (its root object; its parts are the objects attached to it).
wheelobjectThe steering wheel, vehicle space: {center: [x,y,z], axis: [x,y,z] (its column toward the driver)}.
Arcwright Beta 2 (0.4.0) · generated from the engine source (25e375c86)Something wrong or missing? Tell us
Download Arcwright free