How to make a FiveM vehicle in Blender with Sollumz 2.9
A FiveM vehicle model is a fragment (.yft): an armature whose bones are the parts of the car, a drawable holding the meshes, and a set of collision bounds. In Blender with Sollumz you build those three, give the meshes vehicle shaders, and export .yft, _hi.yft and .ytd files. This guide follows Sollumz 2.9.0 on Blender 5.2, with the panel and button names as they appear in the add-on.
What do I need?
| Tool | Version | Used for |
|---|---|---|
| Blender | 4.2 or newer (Sollumz 2.9.0 sets 4.2 as its minimum; we use 5.2) | Modelling, rigging, export. |
| Sollumz | 2.9.0 | The add-on that reads and writes GTA V model files. |
| CodeWalker | Latest release | Browsing the game archives and extracting a stock vehicle to use as reference. |
| GTA V for PC | Source of the reference vehicle and the shared textures. |
Sollumz installs as a Blender extension. In Blender go to Preferences > Get Extensions > Repositories > +, choose Add Remote Repository and enter https://repo.sollumz.org/, then search for Sollumz and install it. On first start the add-on asks to install its dependencies. Accept: one of them, PyMateria, is what lets Sollumz write the game's binary files directly. What each tool is for is compared in CodeWalker vs Sollumz.
Where are the Sollumz tools in Blender?
The tools are in the sidebar of the 3D viewport (press N), in the tab Sollumz Tools. Properties of the selected thing are in the Properties editor, in panels named Sollumz.
| Where | Panel | What you do there |
|---|---|---|
| Sollumz Tools | General | Import RAGE Assets and Export RAGE Assets. The View sub-panel shows or hides collisions and switches the LOD level on screen. |
| Sollumz Tools | Drawables | Create Drawable Objects, Shader Tools, LOD Tools and Bone Tools. |
| Sollumz Tools | Collisions | Create Bounds and Create Collision Material. |
| Sollumz Tools | Fragments | Create Fragment Objects, Set Mass, Copy Bone Physics and Vehicle Tools (light IDs, wheel and window previews). |
| Properties > Object | Sollumz | The Sollumz type of the object and its settings. |
| Properties > Bone | Sollumz | Bone tag, bone flags and the Fragment Physics switch. |
| Properties > Data (mesh) | Sollumz LODs | Which mesh is used at each level of detail. |
| Properties > Material | Sollumz | Shader, textures and shader values. |
How is a vehicle structured in Blender?
Every object in a Sollumz scene has a Sollumz type. A vehicle is this tree:
mycar Armature, Sollumz type: Fragment (bones = the car's parts)
mycar.mesh Empty, Sollumz type: Drawable
chassis Mesh, Drawable Model (skinned to the bone "chassis")
bodyshell Mesh, Drawable Model
door_dside_f Mesh, Drawable Model
wheel_lf Mesh, Drawable Model, "Is Wheel Mesh" on
...
mycar.col Empty, Sollumz type: Bound Composite
chassis.col Bound Geometry, follows the bone "chassis"
wheel_lf.col Bound Disc, follows the bone "wheel_lf"
door_dside_f.col Bound Geometry, follows the bone "door_dside_f"
...
| Part | Blender object | Sollumz type |
|---|---|---|
| The vehicle | Armature | Fragment |
| Visible model | Empty, child of the armature | Drawable |
| Each mesh | Mesh, child of the drawable | Drawable Model |
| Collision | Empty, child of the armature | Bound Composite |
| Each collision shape | Child of the composite | Bound Geometry, Bound Disc, Bound Box and so on |
The root has to be the armature. The game does not find doors, wheels and seats by mesh name. It finds bones, and each bone carries a numeric tag that Sollumz derives from the bone name. That is why bone names have to be exact.
Why start from a stock vehicle?
Import the stock vehicle closest to yours with Import RAGE Assets and keep it in the scene while you work. Select the .yft; when the _hi.yft sits next to it, Sollumz merges the two on import. The stock vehicle is the specification: which bones exist, how they are named, which collision shapes it uses, what each part weighs and which shaders it has.
Two habits save time here:
- Rename the reference objects first, for example with a
ref_prefix. Blender keeps object names unique, so if the reference still owns the namechassis, your own mesh silently becomeschassis.001. - Copy the reference armature instead of creating bones by hand. The copy keeps bone tags, bone flags and physics settings. Then move the bones to fit your model and delete the ones you do not use.
Which bones does a vehicle need?
A car uses a fixed vocabulary of bone names. These are the common ones:
| Bone | Part |
|---|---|
chassis | Root of the vehicle. |
bodyshell | Body panels that never move. |
wheel_lf, wheel_rf, wheel_lr, wheel_rr | Wheels: left front, right front, left rear, right rear. |
door_dside_f, door_pside_f, door_dside_r, door_pside_r | Doors, driver side and passenger side, front and rear. |
bonnet, boot | Hood and trunk lid. |
bumper_f, bumper_r | Bumpers, which can fall off. |
seat_dside_f, seat_pside_f, seat_dside_r, seat_pside_r | Where each ped sits. |
steeringwheel | The steering wheel. |
windscreen, window_lf, window_rf | Glass panes. |
headlight_l, headlight_r, taillight_l, taillight_r, indicator_lf, brakelight_l, reversinglight_l | Where each light shines from. |
misc_a, misc_b, ... | Extra moving or detachable parts, such as a wing. |
Seats and entry points in vehiclelayouts.meta refer to these same bones. Positions that we measure on the model instead of guessing:
- Doors pivot on the bone, so the bone goes on the hinge line: the front edge of a normal door.
- Bonnet: rear edge. Boot: front edge.
- Steering wheel: the centre of the rim, not the centre of the whole object. With the steering column included, the bounding box centre was 46 cm off on one car we converted.
- Light bones: the middle of the faces that glow.
Each mesh has to follow its bone. Give it a vertex group named exactly like the bone with weight 1 on every vertex, and add an armature modifier. Bone Tools > Add Armature Modifier does the second part for the selected objects. To see or change a bone tag, select the bone and open Properties > Bone > Sollumz.
Which shaders do vehicle materials use?
Sollumz materials are game shaders. Create one in Drawables > Shader Tools with Create Shader Material, or turn an existing Blender material into the selected shader with the convert buttons in the same panel. These are the vehicle shaders we use and what for:
| Surface | Shader | Note |
|---|---|---|
| Body paint that players can respray | vehicle_paint1 and the other vehicle_paint shaders | The paint layer (primary, secondary, pearlescent, wheel, interior) is set in the material's Fragment (Vehicle Paint) panel. |
| Fixed colour or textured parts: livery, plastics, metal, interior | vehicle_mesh | Uses the diffuse texture as it is. |
| Tyres and rims | vehicle_tire | Use it for the whole wheel. Parts of a wheel on vehicle_mesh did not render in game in our tests. |
| Glass | vehicle_vehglass, vehicle_vehglass_inner | Outer and inner face of each pane. |
| Lamp lenses, neon | vehicle_lightsemissive | Glows when the matching light is on. |
| Stickers, nets, badges with transparency | vehicle_decal |
Two things that are not visible in Blender decide how the car looks in game:
- Vertex colour. On the mesh shaders the red channel of the first colour attribute multiplies the texture. A mesh with black vertex colour is black in game however good its texture is. Fill it with a colour whose red is 255.
- Light ID. On
vehicle_lightsemissivethe alpha channel of the vertex colour says which light the faces belong to. Set it in Fragments > Vehicle Tools > Light IDs: go to Edit Mode with face selection, select the faces, pick the light and press Set Light ID.
| Light ID | Light |
|---|---|
| 0 | Always on |
| 1, 2 | Left and right headlight |
| 3, 4 | Left and right taillight |
| 5, 6, 7, 8 | Indicators: front left, front right, rear left, rear right |
| 9, 10, 11 | Brake lights: left, right, centre |
| 12, 13 | Reversing lights: left and right |
| 14 to 17 | Extra lights |
For textures, keep the diffuse from your model and take specular, normal and dirt maps from the game's shared vehicle textures when you can. Sizes and formats are in optimising a FiveM vehicle.
How do wheels work?
The game draws one wheel model on every wheel. Model the wheel once as wheel_lf, centred on its bone, and tick Is Wheel Mesh in Properties > Object > Sollumz. Without that switch the wheel is exported as part of the body: the car shows up with one wheel floating in place and none on the other hubs. Vehicle Tools > Preview Wheel Instances shows the wheel on all four positions inside Blender.
Each wheel also needs its own collision disc so the car has something to roll on. That is covered in vehicle collision in Sollumz.
How do LODs and the _hi.yft file work in Sollumz?
Every Drawable Model can hold five meshes: Very High, High, Medium, Low and Very Low. They are listed in Properties > Data > Sollumz LODs. On export, Sollumz writes the Very High meshes to <name>_hi.yft and the other four to <name>.yft. There is nothing to split by hand: if any model has a Very High mesh, the _hi file is created.
How to generate the lower levels, and what to put in lodDistances, is in optimising a FiveM vehicle.
How do I export the .yft and .ytd?
Select the fragment (the armature) and press Export RAGE Assets in Sollumz Tools > General. The settings that matter for a vehicle:
| Setting | Value | Why |
|---|---|---|
| Target Formats | Native | Writes binary files the game loads directly. CW XML writes CodeWalker XML, a readable text version that is useful for checking the result. |
| Target Game Versions | Gen8 | Gen8 is GTA V Legacy and Gen9 is GTA V Enhanced. With both on, files go to gen8/ and gen9/ subfolders. |
| Limit to Selected | On | Exports only what is selected and visible. |
| Texture Dictionaries | On, Include: Selected | Writes the .ytd. With All you also get the dictionary of the reference vehicle. |
The result is mycar.yft, mycar_hi.yft and mycar.ytd. A hidden object cannot be selected, and Sollumz hides meshes when you switch LOD level, so if nothing is written or the log says "No Sollumz objects selected for export!", unhide the vehicle and select it again. After every export, look at the file time on disk before testing.
What should I check before testing in game?
- Every bone with Fragment Physics on has a collision. If one does not, the export warns: "Bone has physics enabled, but no associated collision!".
- No mesh has black vertex colour.
- Every texture a material uses is in the
.ytd, or comes from the game's shared vehicle textures on purpose. - The wheel mesh has Is Wheel Mesh on.
- Scale is applied: no scale left on the armature.
- Each file is within the server's size check. See the oversized asset warning.
How do I get the model into FiveM?
Put the three files in the stream folder of a resource. The quickest first test is to name them after a stock vehicle, for example sultan.yft, sultan_hi.yft and sultan.ytd: the game then draws your model wherever a Sultan spawns, with the Sultan's handling and seats, and you need no meta file yet.
When the model looks right, give it its own name and metas so it loads next to the stock cars. That part is in how to add an add-on vehicle to a FiveM server.
Frequently asked questions
- Which Blender version does Sollumz 2.9 need?
- Sollumz 2.9.0 sets Blender 4.2 as its minimum version. We use it on Blender 5.2.
- Can Sollumz export .yft files directly?
- Yes. With the Target Formats option set to Native, Sollumz writes binary .yft, .ydr and .ytd files the game loads directly. This needs the PyMateria dependency that the add-on offers to install. The CW XML option writes CodeWalker XML instead.
- Should I export Gen8 or Gen9 for FiveM?
- Gen8. In Sollumz, Gen8 means GTA V Legacy and Gen9 means GTA V Enhanced.
- How does Sollumz create the _hi.yft file?
- Automatically. Meshes in the Very High LOD slot are written to name_hi.yft and the High, Medium, Low and Very Low meshes to name.yft.
- Why is my vehicle black in game?
- Usually because the mesh has black vertex colour. On the vehicle mesh shaders the red channel of the vertex colour multiplies the texture, so paint the mesh with a colour whose red is 255.
Sources
Products from this guide
- Coil S-Cooter: FiveM Electric Scooter
- Hoverboard Pack: 3 FiveM Hoverboards
- Complete Bundle: FiveM Scooter + Hoverboards
All guides
- How to install a FiveM resource from Cfx.re Escrow (Granted Assets)
- How to add a custom vehicle to an ESX, QBCore or QBox server
- What are LODs in FiveM vehicles?
- How to add an add-on vehicle to a FiveM server
- vehicles.meta explained, field by field
- handling.meta explained: fields, units and flags
- carvariations.meta and carcols.meta explained
- vehiclelayouts.meta explained: seats, entry points and animations
- fxmanifest data_file reference for vehicles
- Vehicle model files (yft, _hi.yft, ytd) and the oversized asset warning
- FiveM add-on vehicle troubleshooting: causes and fixes
- How to fix "You lack the required entitlement" on a FiveM server
- How to convert a single-player GTA 5 car mod to a FiveM add-on
- How a FiveM hoverboard works without a script
- How to optimise a FiveM vehicle: polygons, LODs and texture budget
- How to set up vehicle collision in Sollumz
- Buying FiveM vehicles: what to check before you pay
- FiveM car packs vs single vehicles
- Real-brand cars on FiveM: allowed or not?
- CodeWalker vs Sollumz: which tool for FiveM vehicles?
