OBJ to SMD Converter
Drop an .obj (and its .mtl) to get a reference .smd for Source or GoldSrc, with an idle .smd and a starter .qc, ready to compile with studiomdl or Crowbar. The model is turned from Y-up to Source's Z-up, scaled to Source units if you like, and its materials are named after your textures. It runs in your browser, so the model is never uploaded.
How to convert OBJ to SMD
- 1
Export an OBJ
From Blender, 3ds Max, Maya, SketchUp or any app. Triangulated or not, with UVs; select the .mtl too so materials get their texture names.
- 2
Check the preview
The model is shown as Source will see it, Z up. Fix the scale (Blender works in metres, Source in units of about an inch) and the up axis if it lies on its side.
- 3
Name the materials
Each SMD material name must match a VMT in your $cdmaterials folder. Take them from the MTL texture files or from the OBJ material names.
- 4
Download and compile
Save the ZIP with model.smd, model_idle.smd and model.qc, put them in a folder and compile the .qc with Crowbar or studiomdl.
What goes into the SMD and QC
| Reference SMD | version 1, one bone named "root", a one-frame skeleton and every triangle with its material, position, normal and UV. |
|---|---|
| Idle SMD | A one-frame animation of the same bone. studiomdl needs at least one $sequence to compile. |
| QC | $modelname, $body, $cdmaterials, $surfaceprop, $staticprop, $sequence idle and a $collisionmodel block as a starting point. |
| Axis | OBJ is Y-up; Source and GoldSrc are Z-up. The default turn (x, y, z) to (x, -z, y) stands the model up the right way. |
| Scale | x1, or metres, centimetres or millimetres to Source units (1 unit is about 1 inch). |
| Normals | Kept from the OBJ, or recalculated smooth or flat. Missing normals are filled in smooth. |
| Polygons | Quads and n-gons are split into triangles, since SMD only stores triangles. |
| Not converted | Bones, weights and animations: OBJ has none. Rig the model in Blender with Blender Source Tools for characters. |
Why Source models start as SMD
Source and GoldSrc games do not load OBJ or FBX. Models must be compiled into MDL files by studiomdl, and studiomdl reads SMD (Studiomdl Data), a plain text format of bones and triangles, together with a QC script that lists the files and options. Crowbar puts a friendly window around studiomdl. This page makes the SMD and QC from your OBJ, which is the step most people install Blender plugins for.
Getting textures to show up
Each material name in the SMD becomes a VMT lookup in the folder $cdmaterials points at, inside materials/. If the SMD says crate and the QC says models/custom, the game loads materials/models/custom/crate.vmt. Make the VTF and VMT with the PNG to VTF and PNG to VMT tools, using the VertexLitGeneric shader for models. For GoldSrc, tick the .bmp option: Half-Life's studiomdl reads 8-bit BMP textures named in the SMD.
Need a new model or texture for your mod?
Make a 3D model from a photo or a short text prompt with AI, or generate a seamless texture, then bring it into your Source or GoldSrc project with these free converters.
More free 3D converters
OBJ to SMD questions
Valve, Source, Garry's Mod, Team Fortress 2 and Counter-Strike are trademarks of Valve Corporation, named only to describe file compatibility; The3DAI is not affiliated with or endorsed by Valve.