F5 StudioF5 Studio
Skip to main content

Workflow

This page walks through the full loop: open the panel → tune one model → save → repeat → export the final block → paste it into f5_board. Read Features first if you want a tour of each control.

1. Open the Panel

Run the command in chat or the F8 console:

/board_calibrate

The panel slides in on the right. A prop spawns about 2.5 m in front of you, frozen, no-collision, no-gravity, invincible. The first model from Config.Models is pre-selected automatically — pass a name as an argument to pick a different starting model:

/board_calibrate prop_muster_wboard_01
Re-frame the prop any time

If you've walked away and lost sight of the prop, hit the circular arrow icon in the header (top-right of the panel). It re-spawns the same prop in front of where you're standing now, facing your camera.

2. Read the Auto-Measured Values

When a model is selected, the Measured block under the picker shows:

  • Thin axis — the local axis with the smallest extent (X, Y, or Z) and its thickness.
  • Bbox size — full bbox extent on all three axes.
  • Note — a one-line hint like thin_axis=Y (wall-mounted board) describing the inferred layout.

This is the tool's best guess at where the visible face is. The four input fields are pre-filled with the matching baseline values.

For most wall-mounted props (prop_cork_board, the planning boards, the muster boards), the thin axis is Y, the baseline surfaceForward lands right on the front face, and surfaceWidth / surfaceHeight are already close to the visible panel. You will usually only need to fine-tune in the next step.

3. Tune the Four Values

There are four numbers that f5_board reads per prop, and the wireframe instantly reflects every change:

FieldWhat it controlsTunes with
surfaceForwardHow far the drawable plane sits off the prop face, along the outward normal. Too low → Z-fighting with the prop. Too high → the writing floats.Aim for a hair above zero — typically 0.0130.030 m for wall boards.
surfaceUpVertical offset of the plane center, relative to the entity pivot. Some GTA props have their pivot at the top, some at the center — surfaceUp corrects for that.Adjust until the wire rectangle is vertically centered on the visible board.
surfaceWidthWidth of the drawable rectangle along the entity's right axis.Adjust until the cyan wire matches the left/right edges of the prop's writable area (not the frame).
surfaceHeightHeight of the drawable rectangle along the entity's up axis.Same idea — match the top/bottom of the writable area.

Three input modes per field:

  • Type a number directly into the input box and press Enter or click away. The value is clamped to Config.Limits.
  • Drag the slider for a fast sweep.
  • Click / + for precise nudges of Config.Steps[field] × multiplier.

Switch the multiplier from ×1 to ×10 with the buttons or the 14 keys — start big to find the rough position, then drop to ×1 for the last few millimeters.

Use the FWD ray as a sanity check

The red FWD line shoots out from the wireframe center along the outward normal. If it points into the prop instead of away from it, you've placed the surface behind the visible face — bump surfaceForward up.

4. Toggle Helpers as Needed

Three chips in the header switch the 3D overlay layers:

  • Wire — the cyan surface rectangle. The thing you're tuning.
  • Axes — the prop's local R/G/B axes from its pivot. Useful for understanding which way "forward" and "up" point on this particular model.
  • BBox — the full model bounding box. Useful for understanding the auto-measured baseline.

For final tuning, turn Axes and BBox off and leave only Wire on — less visual clutter, easier to spot misalignment.

5. Use Camera Mode

When the panel is open the mouse cursor stays on the NUI by default. To orbit around the prop without closing the panel, hold the right mouse button — the cursor releases and GTA's gameplay camera responds to mouse movement. A CAMERA MODE — release RMB to return hint appears in the corner. Let go of RMB to put the cursor back on the panel.

6. Save the Model

Once the wireframe matches the visible surface, click Save model. Two things happen:

  • The current four values are stored in client memory under the active model name.
  • The progress bar at the top of the panel increments (done / total), and the picker shows a green dot next to the saved entry.
Memory only — export before closing

Saved snapshots and any custom models live in client memory only. A /restart f5_board_calibrate, server crash, or just closing the resource wipes them. Always export before you stop calibrating.

7. Calibrate the Next Model

Open the picker (click the bar at the top) and pick another model. The selected prop despawns and a new one spawns in its place. Saved models stay saved — switching between them does not lose work.

To add a model that's not in the default list, type its hash into the input above the model list (prop_* or any GTA object hash) and click +. Validation rejects names that aren't all lowercase a-z/0-9/_/-, are over 80 characters, are not in the game CD image, take longer than 2.5 s to load, or are not props (peds, vehicles, weapons are blocked).

Exporting

Two buttons in the footer:

  • Copy Lua — emits just the active model in the <model> = { … } shorthand. Use this if you only need to update one entry.
  • Export all — emits every model that has a saved snapshot wrapped in a full Config.PropModels = { … } block.

Both open a modal with a textarea and a Copy to clipboard button. The format from Export all is byte-identical to what f5_board ships with:

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

p_planning_board_01 = {
surfaceForward = 0.0260,
surfaceUp = 0.0130,
surfaceWidth = 2.5196,
surfaceHeight = 1.8310,
},
}

Pasting into f5_board

  1. Open resources/f5_board/config/config.lua.
  2. Find the existing Config.PropModels = { … } block (around the comment "Per-model draw-surface geometry").
  3. Replace it with the block from Export all, or paste individual model entries from Copy Lua to overwrite specific props.
  4. restart f5_board (or refresh + restart). The new offsets apply immediately when players spawn or place a board.
Only export what you finished

Export all only emits models that have a saved snapshot. Half-tuned models with no Save model click are skipped — there is no risk of overwriting good values with placeholders.

8. Close the Panel

Click the × in the header, press Esc, press Backspace, or run /board_calibrate again. Closing despawns the prop, clears the active selection, and re-enables your attack/aim controls.

Stopping the resource (stop f5_board_calibrate) auto-closes the panel and despawns the prop too.