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
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, orZ) 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:
| Field | What it controls | Tunes with |
|---|---|---|
surfaceForward | How 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.013–0.030 m for wall boards. |
surfaceUp | Vertical 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. |
surfaceWidth | Width 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). |
surfaceHeight | Height 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 ofConfig.Steps[field] × multiplier.
Switch the multiplier from ×1 to ×10 with the buttons or the 1–4 keys — start big to find the rough position, then drop to ×1 for the last few millimeters.
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.
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
- Open
resources/f5_board/config/config.lua. - Find the existing
Config.PropModels = { … }block (around the comment "Per-model draw-surface geometry"). - Replace it with the block from Export all, or paste individual model entries from Copy Lua to overwrite specific props.
restart f5_board(orrefresh+ restart). The new offsets apply immediately when players spawn or place a board.
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.