A Windows desktop tool that extracts paint-only bodyshells from GTA V vehicle .yft.xml files and exports them as clean .obj meshes — part of the LiveryLab toolchain.
Drop a YFT XML (CodeWalker / OpenIV export) on the window, click extract, get a {name}_bodyshell.obj containing only the painted body — no windows, no lights, no interior, no decals. The resulting OBJ is the foundation mesh for livery preview pipelines like livery-viewer.
- Drag-and-drop or browse to select a
.yft.xmlfile - Highest-LOD only — automatically picks
DrawableModelsHigh, falls back to Med/Low/VeryLow if needed - Top-level drawable only — child fragments (damage / breakable parts) are skipped
- Editable paint shader whitelist — defaults cover all stock GTA paint slots; add or remove names as needed
- Y-up output — converts from GTA's native Z-up so the OBJ lands cleanly in Blender / glTF / Three.js
- Per-chunk groups — surviving geometries are grouped (
g paint1,g paint2, …) so they're easy to identify in modeling software - Safe writes — auto-renames
(1),(2), etc. instead of overwriting an existing file
vehicle_paint, vehicle_paint_generic,
vehicle_paint1, vehicle_paint2, vehicle_paint3, vehicle_paint4,
vehicle_paint5, vehicle_paint6, vehicle_paint7, vehicle_paint8, vehicle_paint9
The whitelist is editable inside the Paint shader whitelist disclosure section in the UI. .sps is stripped automatically and matching is case-insensitive.
CodeWalker -> .yft.xml -> LiveryLab Shells -> .obj -> (Blender) -> .glb -> livery-viewer
Download the latest LiveryLab Shells Setup <version>.exe from the Releases page and run it.
git clone https://github.com/ttolerantss/liverylab-shells.git
cd liverylab-shells
npm install
npm startnpm run build # NSIS installer in dist/
npm run build:dir # Unpacked .exe in dist/win-unpacked/| Layer | Technology |
|---|---|
| Desktop framework | Electron |
| XML parsing | fast-xml-parser |
| Bundler | esbuild |
| Installer | electron-builder (NSIS) |
liverylab-shells/
src/
main/main.js Electron main process (window, IPC, parse/write orchestration)
renderer/
index.html UI markup + LiveryLab design tokens
renderer.js UI logic (drag/drop, options, IPC calls)
lib/
shaders.js Default paint shader whitelist
yft-parser.js XML -> geometry chunks
obj-writer.js geometry chunks -> OBJ file
assets/ Logo + branding (shared with the LiveryLab family)
package.json
- Vertex format is read from each geometry's
<Layout type="GTAV1">block; positions, normals, and TexCoord0 are emitted to the OBJ when present. vehicle_paint_fdis intentionally not in the default whitelist — it's a custom 4-channel paint variant. Add it manually in the UI if you need it.- This is a personal tool — no telemetry, no cloud features, no licensing.
- LiveryLab Repaint — live PSD livery preview on 3D vehicle models
- LiveryLab Export — color-coded PSD layer variant exporter
ISC