../

Blender to GTA V

Making GTA V (PC) props, vehicles and interiors in Blender 5.x with the Sollumz add-on and CodeWalker, and loading them in single-player or on a FiveM (multiplayer mod platform) server. Covers the rules, Legacy vs Enhanced editions, the RAGE file formats, the Sollumz workflow, budgets, and step lists for the common mod types. Modeling itself is in Blender; scene-building ideas are in Buildings & scenes and Open-world design.

Rules at a glance

ActivityStatus
Your own props, cars, interiors in single-player, freetolerated (Take-Two 2017 statement, 2026 guidelines)
The same on a FiveM serverallowed on the licensed platform, under the Cfx.re Creator Platform License Agreement
Anything in GTA Online (menus, models, scripts)bannable; ScriptHookV itself quits the game when you go online
Uploading Rockstar's models, textures or .rpf archivesnot allowed; share your own files, or instructions
Real car brands, film characters, store-bought modelsnot allowed without the rights holder's permission
Assets ripped from RDR2, GTA IV or leaked GTA VI materialprohibited by the 2026 guidelines
Paid mods, loot boxes, cryptoonly through Rockstar-approved storefronts; gambling and crypto banned outright

Editions & tools

GTA V on PC now comes in two editions. Legacy is the 2015 PC version. Enhanced (March 4, 2025) is the PS5/Xbox Series port with a new renderer (DirectX 12, ray tracing). Their asset formats differ (Gen8 vs Gen9), so tools and mods are edition-specific.

ToolLegacyEnhancedNotes
CodeWalker (opens in a new tab)yesyes (dev48 or newer)world viewer, RPF explorer, map editor; builds from its Discord #releases; includes an Asset Converter (Legacy → Enhanced)
Sollumz (opens in a new tab)yesyesexports native Gen8 or Gen9 files, or CodeWalker XML
OpenIVyesnot supported officiallyRPF editing and the mods folder for Legacy
OpenRPFnoyescommunity loader: modified files from a mods folder on Enhanced
ScriptHookV + ASI loaderyesyes (builds for both since 2025)runs .asi script plugins; single-player only
FiveMyesFiveM for GTAV Enhanced, early accessEnhanced servers convert assets with Cfx.re's Alchemist tool; client graphics mods are blocked there for now

Pick one edition per project and export for it. Converting later is possible (CodeWalker's Asset Converter, Alchemist) but vehicles with many materials can need rework.

Loaders & script hooks

PieceWhat it isWhere it goes
ASI loader (dinput8.dll)loads .asi plugins at startupgame folder
ScriptHookV (ScriptHookV.dll)lets .asi plugins call the game's script functions (natives)game folder; update it after every game patch
ScriptHookVDotNetC# scripts on top of ScriptHookVgame folder + scripts/
OpenIV.asi + mods folder (Legacy)the game reads edited .rpf copies from mods/ instead of the originalsmods/ mirrors the game's folder layout
OpenRPF (Enhanced)the same idea for Enhanced (dsound.dll + OpenRPF.asi)game folder + mods/
DLC packan add-on dlc.rpf (with content.xml, setup2.xml) listed in dlclist.xmlmods/update/x64/dlcpacks/<name>/
FiveM resourcea folder with fxmanifest.lua and a stream/ folderserver resources/, started from server.cfg

Map files (models, textures, placements) need a loader, not ScriptHookV; scripts need ScriptHookV. Always work on copies in mods/, never on the original archives.

File formats

GTA V runs on RAGE (Rockstar Advanced Game Engine). Its files are named .y?? on PC and packed in .rpf archives.

ExtensionHoldsTypical use
.ydrDrawable: meshes in up to 4 LODs (High, Medium, Low, Very Low), shaders, optional embedded textures, skeleton, lights, embedded collisionstatic props, map pieces
.yddDrawable dictionary: several drawables in one fileped and clothing components, grouped props
.yftFragment: a drawable plus physics (collision, breakable parts, bones)vehicles (name.yft + name_hi.yft), breakable props, glass
.ytdTexture dictionary: DDS textures shared by several modelstextures for one or more .ydr/.yft; +hi.ytd for HD versions
.ybnBounds: static collision (composite of boxes, spheres, capsules, poly meshes) with collision materialsworld collision, interiors
.ytypArchetype definitions: per model name, texture dictionary, LOD distance, flags; also MLO (interior) archetypesregisters your model with the game
.ymapMap data: entity placements (archetype, position, rotation), LOD hierarchy, car generators, occludersplaces things in the world
.ycdClip dictionary: animationsanimated props, peds
_manifest.ymfmap metadata: which .ytyp each .ymap depends on, HD texture bindingsgenerated by CodeWalker; required for maps
.rpfarchive (can nest)the game's data; mods ship their own dlc.rpf
.meta (XML)data files: vehicles.meta, handling.meta, carcols.meta, carvariations.metavehicle stats, colors, liveries
.ytd .ydr .ybn .ytyp archetype "my_crate" .ymap entity "my_crate" texture dictionary model + shaders static collision drawable name, txd name, LOD distance position, rotation, archetype name txd name drawable name archetypeName own world-space bounds; or embed in the .ydr Arrows point at what a file names. _manifest.ymf tells the game which .ytyp each .ymap needs. Everything goes in stream/ (FiveM) or a mod RPF (single-player).
A placed prop: the .ymap names an archetype, the archetype names the model and its textures.

Units, axes & names

BlenderGTA V
Up+Z+Z
Unitsmetersmeters (1 unit = 1 m)
ConversionnoneSollumz imports and exports 1:1, no axis flip
  • Model props at the world origin with the origin at the base; placement happens in the .ymap.
  • World collision (.ybn) and interiors are modeled in world coordinates at their real map location (import the surrounding map from CodeWalker as a reference).
  • Names are hashed by the game: keep them lowercase, unique, ASCII, with a personal prefix (zs_crate01) so they don't collide with vanilla or other mods. The drawable, archetype and file name should match.
  • Vertex counts rise after export (a game vertex is position plus normal, UV and color, like Blender's face corners); judge cost by triangle count.

Sollumz setup

  1. Blender 4.2 or newer (Sollumz 2.9 supports up to 5.2): Edit > Preferences > Get Extensions > Repositories > + > Add Remote Repository https://repo.sollumz.org/, then search "Sollumz" and Install. Updates arrive in the same panel.
  2. Accept the optional pyMateria install: it enables direct native (binary) import and export, not just CodeWalker XML.
  3. Install CodeWalker (dev48 or newer), point it at the game folder, enable Options > Start in Edit Mode, and add the community nametables.rpf (from the CodeWalker Discord) so file names resolve.
  4. Create your own .rpf in CodeWalker's RPF Explorer for test files (single-player), or a FiveM resource folder.
  5. To edit vanilla assets: CodeWalker RPF Explorer > export XML (or open the native file directly in Sollumz); save the textures to a folder named after the model so Sollumz finds them on import.

Everything lives in the 3D viewport's N-panel under Sollumz Tools; V opens the Sollumz pie menu (convert, import, export), Shift V switches the visible LOD.

Shaders & textures

GTA materials are Sollumz shader materials, not the Principled BSDF: each one mirrors a game shader (.sps) with fixed texture slots and parameters.

ShaderSlotsUse
defaultDiffuseSamplerflat color map only
normalDiffuse, Bumpcolor + normal map
specDiffuse, Speccolor + specular
normal_specDiffuse, Bump, Specthe common prop shader
normal_spec_alpha, normal_alpha+ alpha in the diffuseglass-like or soft transparency
cutout, normal_cutout, normal_spec_cutoutalpha as a hard maskfoliage, fences, decals with holes
emissive, emissivenight+ emissivesigns and lamps (night-only variant)
decal, normal_decalprojected on top of other surfacesdirt, graffiti, stains
glass, glass_envwindows
vehicle_paint1, vehicle_paint3, vehicle_generic, vehicle_tire, vehicle_lightsemissivevehicles (see Sollumz Vehicle Shaders)
terrain_cb_w_4lyrfour blended layers painted by vertex colorground
RuleDetail
Createselect the model, Sollumz Tools > Drawable > Shader Tools, search (Ctrl F) the shader, Create Shader Material
Textures.dds, power of two, with mipmaps; DXT1 (BC1) for opaque, DXT5 (BC3) with alpha; about 2048 max. NVIDIA Texture Tools exports DDS
Normal mapsset the BumpSampler image's color space to Non-Color
Embedded vs .ytdSet all Materials Embedded puts textures inside the .ydr (simplest); a .ytd shares them between models (Sollumz Tools > Texture Dictionaries), and the archetype's Texture Dictionary must name it
UV and color namesUV maps UVMap 0, UVMap 1; color attribute Color 1 (Face Corner, Byte Color); Sollumz warns about wrong names
Vertex colorsthe game uses them for lighting: red for outdoor props, green inside interiors; unpainted props glow pinkish red at night or turn black indoors
Convert existingShader Tools can convert a Principled BSDF material; other node setups fail on export

Watch for how the vertex color channels are painted and why an unpainted prop glows at night.

Sollumz Quick Tips: Vertex Colors (opens in a new tab) (Stumpy Mason, YouTube)

LODs & collision

TaskHow in Sollumz
Assign LOD meshesMesh Properties > Sollumz LODs: High, Medium, Low, Very Low (Very High only for vehicle _hi.yft)
Generate LODsSollumz Tools > Drawable > LOD Tools: decimates the High mesh by a step per level; check the result
Separate map LOD modelsa second, simpler drawable placed at the same spot in a parent .ymap (LOD hierarchy, set in CodeWalker or the Sollumz Maps panel)
LOD distanceper archetype in the .ytyp: how far away the model still draws
Embedded collisionCollisions > Create Bounds on the drawable: Bound Composite > Bound GeometryBVH (apply a Flag Preset) > Bound Poly Box, Poly Sphere, Poly Capsule or Poly Mesh children, each with a collision material
Static world collision (.ybn)model in world space, apply Location, Collisions > Create Bounds > Convert to Composite; composite empties at 0, 0, 0; rename the Bound Composite to the file name
Collision materialsper bound mesh: concrete, wood, metal, grass… (footsteps, bullet impacts, tire grip)
Interior roomsthe floor's collision material carries the Room ID used by the MLO

Primitive bounds (box, sphere, capsule) are cheaper and more robust than poly meshes: build collision from them where the shape allows. The classic mistake is a Bound GeometryBVH with no Flag Preset: nothing collides.

Budgets & limits

Community rules of thumb, not official numbers, except where a source is named.

ItemGuideline
Small prop, High LODup to about 5–10k triangles; each lower LOD roughly half the previous
Vehicle, highest LODabout 60–120k triangles, down to about 1k at the lowest LOD
Texturespower of two, 2048 max per the Sollumz FAQ, 1024 or smaller for small props; DXT compressed with mipmaps
Materials or geometries per file (Enhanced)128 at most; more crashes the game (Sollumz Enhanced conversion guide)
One streamed asset on FiveMthe server warns above 16 MiB of memory per asset and flags anything over 48 MiB as likely to cause streaming problems (FiveM source)
Many add-ons in single-playermemory pools can fill ("pool full" crashes); players raise pool sizes with community gameconfig mods
LOD distanceas short as looks right; long distances keep models and textures in memory

Common problems

SymptomLikely causeFix
Model invisible in gamearchetype not loaded (.ytyp missing or not in _manifest.ymf), archetype name mismatch, or LOD distance too shortregenerate _manifest.ymf; match names; raise LOD distance
Invisible even in CodeWalkerUV map or color attribute names wrongrename to UVMap 0 and Color 1, re-export
Purple, checkered or white surfacestextures not found: wrong texture dictionary name, non-DDS images, or not embeddedembed, or fix the archetype's Texture Dictionary; convert to DDS with mipmaps
Glows pink at night, black indoorsno vertex colorspaint Color 1 (red outside, green inside)
Walk or drive through itno collision, no Flag Preset on the Bound GeometryBVH, or a .ybn built at the wrong positionadd bounds, apply the flag preset, model .ybn in world space
Error or nothing on Sollumz exportobject has no Sollumz Type, or no Sollumz shader materialConvert to Drawable; create shader materials
Import failsoutdated Sollumz or a file type it doesn't support (some animal ped .yfts)update Sollumz
Enhanced: ERR_GFX_STATE crash entering a converted cara script_rt_ texture in the wrong formatre-save it as uncompressed RGBA8 without mipmaps
Enhanced: crash on spawnover 128 materials or geometriesround-trip through Sollumz to merge, or reduce materials
Legacy mod does nothing on Enhanced (or the reverse)Gen8 vs Gen9 filesexport for the right edition, or convert with CodeWalker's Asset Converter
MLO vanishes in first personwrong Room ID on the floor collision, or bad portalsfix Room IDs and portal assignments
It rains inside the MLOthe vanilla exterior's particle effects still applyedit the vanilla exterior .ytyp (Archetype Extension mode in CodeWalker)
FiveM console: "Oversized assets"textures too large for one assetdownscale textures, split the model, or move textures to a .ytd

Tools

ToolFor
Sollumz (opens in a new tab)Blender add-on: import/export of .ydr, .ydd, .yft, .ybn, .ytd, .ytyp, .ymap, .ycd
CodeWalker (opens in a new tab)explore the map and archives, place entities, edit .ymap/.ytyp, generate _manifest.ymf, convert Legacy ↔ Enhanced
OpenIV (opens in a new tab)Legacy archive editing and the mods folder
OpenRPF (opens in a new tab)mods folder loader for Enhanced
Script Hook V (opens in a new tab)script plugins in single-player
NVIDIA Texture Tools (opens in a new tab)DDS export with mipmaps
gta5-mods.com (opens in a new tab)the main mod hosting site; install guides and tools
FiveM docs (opens in a new tab)resources, streaming, the 3D asset beginner series, Enhanced migration

Recipes

A custom prop in the world

Use for a static object (crate, sign, bench) placed on the map: .ydr + .ytyp + .ymap.

  1. Model it at the origin, base on the ground plane, apply transforms; UV map UVMap 0, color attribute Color 1 painted red.
  2. Select it, V > Convert to Drawable; rename the Drawable empty to your prefixed name (zs_crate01).
  3. Shader Tools: create normal_spec; set DiffuseSampler, BumpSampler (Non-Color) and SpecSampler DDS textures; Set all Materials Embedded.
  4. LODs: assign or generate Medium and Low meshes; add embedded collision (Create Bounds, Flag Preset, a Bound Poly Box).
  5. Sollumz Tools > Archetype Definition: + a new .ytyp, select the drawable, Auto-Create From Selected; set LOD Distance (for example 100).
  6. V > Export RAGE Assets: Native, Gen8 (Legacy and FiveM) or Gen9 (Enhanced); export the .ytyp.
  7. CodeWalker: add the files to your RPF (or open them in a project), New Ymap > New Entity, Archetype zs_crate01, move it into place, Calculate Extents and Calculate All Flags, save the .ymap. Sollumz 2.9's Maps panel can also place entities in Blender.
  8. CodeWalker project > Tools > Manifest Generator > Generate, save _manifest.ymf.
  9. Ship zs_crate01.ydr, .ytyp, .ymap and _manifest.ymf in a FiveM stream/ folder (below) or your single-player RPF.

Replace or add a vehicle (outline)

Use to put your own car model in the game. Start from a vanilla car of the same type; building a vehicle rig from scratch is much harder.

  1. Import a vanilla name.yft with its name_hi.yft (Sollumz, native or via CodeWalker XML) and its textures.
  2. Fit your body parts to the vanilla skeleton; keep the vanilla bone names (chassis, wheel_lf, wheel_rf, door_dside_f, door_pside_f, bonnet, boot…) and weight each part to its bone.
  3. Use vehicle shaders (vehicle_paint1 for body paint, vehicle_tire, vehicle_lightsemissive with light IDs for lamps); windows are special glass children.
  4. Very High LOD goes into _hi.yft, High to Very Low into the base .yft (the Fragment export's Toggle LODs option writes both).
  5. Changed collision shapes: tick Auto Calculate Inertia and Auto Calculate Volume on export. New bones: Auto Calculate Bonetags.
  6. Replace: same file names as the vanilla car. Add-on: a new name plus vehicles.meta, carvariations.meta, carcols.meta and handling.meta copied from the vanilla car and renamed.
  7. Details: the Sollumz vehicle tutorial and Fragment > Vehicle Setup pages.

An interior (MLO, outline)

Use for an enterable building interior (MLO: "Milo", the game's interior system with rooms and portals).

  1. Pick a building; import its exterior from CodeWalker into Blender as a reference, in world coordinates.
  2. Plan the rooms and the portals (openings) between them and to the outside.
  3. Model the interior shell, props and decals; texture; vertex-color green inside.
  4. Build the collision .ybn with the right Room ID on each floor's collision material.
  5. In Sollumz Tools > Archetype Definition, create an MLO archetype: rooms and portals (from selected vertices), entities, entity sets.
  6. Export; create a .ymap with the MLO instance at the building's position; generate _manifest.ymf.
  7. Details: the Sollumz Creating Interiors tutorial.

Stream it on FiveM

Use to load map or model files on a FiveM server: everything in stream/ is streamed to players.

resources/[maps]/zs_crate/
├─ fxmanifest.lua
└─ stream/
   ├─ zs_crate01.ydr
   ├─ zs_crate01.ytyp
   ├─ zs_crate01.ymap
   └─ _manifest.ymf
fx_version 'cerulean'
game 'gta5'
lua54 'yes'
 
-- reloads map storage so .ymap placements appear
this_is_a_map 'yes'

For an add-on vehicle, the .yft, _hi.yft and .ytd go in stream/ and the meta files are registered:

fx_version 'cerulean'
game 'gta5'
 
files { 'data/*.meta' }
 
data_file 'HANDLING_FILE' 'data/handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'
data_file 'CARCOLS_FILE' 'data/carcols.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/carvariations.meta'

Add ensure zs_crate to server.cfg and restart. The server console lists assets that are too large.

Port a Legacy asset to Enhanced

Use when a mod made for Legacy should run on the Enhanced edition.

  1. CodeWalker dev48 or newer > RPF Explorer > Asset Converter.
  2. Pick the folder of Legacy .ydr, .yft, .ytd, .ydd files and an output folder; Process.
  3. Load the result with OpenRPF (single-player) or on a FiveM for GTAV Enhanced server (which uses Cfx.re's Alchemist for whole resources).
  4. For your own Blender sources, simply re-export from Sollumz as Gen9.

References