Skip to content

ttolerantss/liverylab-shells

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LiveryLab Shells

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.

Features

  • Drag-and-drop or browse to select a .yft.xml file
  • 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

Default paint shader whitelist

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.

Workflow

CodeWalker -> .yft.xml -> LiveryLab Shells -> .obj -> (Blender) -> .glb -> livery-viewer

Installation

From Release

Download the latest LiveryLab Shells Setup <version>.exe from the Releases page and run it.

From Source

git clone https://github.com/ttolerantss/liverylab-shells.git
cd liverylab-shells
npm install
npm start

Build Executable

npm run build       # NSIS installer in dist/
npm run build:dir   # Unpacked .exe in dist/win-unpacked/

Tech Stack

Layer Technology
Desktop framework Electron
XML parsing fast-xml-parser
Bundler esbuild
Installer electron-builder (NSIS)

Project Structure

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

Notes

  • 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_fd is 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.

Related Projects

License

ISC

About

Extract paint-only bodyshells from GTA V .yft.xml files as clean OBJ meshes - part of the LiveryLab toolchain

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors