F5 StudioF5 Studio
Skip to main content

Features

The tool centers on four numbers that f5_board needs per prop: surfaceForward, surfaceUp, surfaceWidth, surfaceHeight. Everything in the UI exists to set those values correctly.

Auto-Measure

When you pick a model, the tool loads it via RequestModel, calls GetModelDimensions, and classifies the three local axes by size (thin / mid / wide). The thinnest axis is assumed to be the board's "depth", and that determines the layout:

Thin axisInterpreted asWidth sourceHeight source
YWall-mounted boardX sizeZ size
XSide-mounted boardY sizeZ size
ZHorizontal panelX sizeY size

The forward offset starts at the model's mx extent on the thin axis, and the up offset starts at the local bbox center on Z. Width and height get clamped into [0.05, 5.0] m.

These four numbers become the measured baseline. You can always come back to it with the Reset button.

Live 3D Overlay

While the panel is open, three overlays redraw every frame on the spawned prop:

  • Wire — cyan quad showing the current surface rectangle (TL/TR/BL/BR labels), yellow diagonals, and a red FWD normal showing the outward face direction.
  • Axes — RGB entity local axes from the prop's pivot (R = right, G = forward, B = up).
  • BBox — grey 12-edge cuboid drawn from the model's GetModelDimensions.

Each overlay has a toggle chip in the header — turning one off skips the per-frame draw entirely.

Four-Field Editor

Each of the four surface values has its own row with:

  • A number input (typed values are clamped to the field's range).
  • A horizontal slider (matched min/max/step to the input).
  • / + nudge buttons that apply a step.

The step size comes from Config.Steps (default: 0.005 m for Forward/Up, 0.010 m for Width/Height) multiplied by the Step × multiplier in the panel. The multiplier defaults to ×2 and can be set to ×1, ×2, ×5, or ×10 — by clicking or pressing the 14 keys.

Whenever you change a value, the wireframe instantly updates so you can see the surface shifting on the prop in real time.

Custom Models

You don't have to limit yourself to the default ten models. Type any GTA prop hash into the input above the model list and hit Add. The tool validates it:

CheckFailure message
Name matches ^[a-z0-9_\-]+$, ≤ 80 charsinvalid model name
Already in defaultsalready in defaults: <name>
Already in your custom listalready added: <name>
IsModelInCdimage + IsModelValidnot in game CD image: <name>
Model loads within 2.5 sload timeout: <name>
IsModelAnObject (rejects peds, vehicles, weapons)not a prop/object: <name>

Valid custom models appear in the picker with a custom badge and a small × to remove them.

Custom models live in memory only

The list of custom models and any saved values exist only in the client's runtime memory. If you /restart f5_board_calibrate, log out, or change character, both reset to empty. Export your work as soon as you're done.

Camera Mode

Hold the right mouse button to release the cursor and let GTA's gameplay camera respond to your mouse — useful for orbiting around the prop without having to close the panel. A CAMERA MODE — release RMB to return hint appears in the corner. Release RMB to put the cursor back on the panel.

Save & Progress

Pressing Save model stores the current four values in memory under the active model name. The header shows done / total and a progress bar — a model counts as "done" once it has any saved value. The picker shows a green dot next to saved models.

Again: this is in-memory only. Export before you close the resource.

Reset to Measured

The Reset button restores the four fields to the auto-measured baseline that was calculated when you picked the model. It doesn't touch your saved snapshot — only the live, unsaved values.

Reposition

The circular arrow icon in the header re-spawns the current prop ~2.5 m in front of where you're standing now, using your current camera yaw. Use it when you've walked too far away and the prop is out of view.

Lua Export

Two export buttons in the footer:

  • Copy Lua — emits the active model only.
  • Export all — emits every saved model (defaults + customs you've saved) as one block.

The output opens in a modal with a Copy to clipboard button. Format matches exactly what f5_board expects in Config.PropModels:

Config.PropModels = {
prop_cork_board = {
surfaceForward = 0.0134,
surfaceUp = 0.0036,
surfaceWidth = 2.5196,
surfaceHeight = 1.8367,
},
}

See Workflow for the full paste-into-f5_board procedure.