Free · runs in your browser · nothing is uploaded

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.

Loading the OBJ to SMD converter...

How to convert OBJ to SMD

  1. 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. 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. 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. 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 SMDversion 1, one bone named "root", a one-frame skeleton and every triangle with its material, position, normal and UV.
Idle SMDA 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.
AxisOBJ 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.
Scalex1, or metres, centimetres or millimetres to Source units (1 unit is about 1 inch).
NormalsKept from the OBJ, or recalculated smooth or flat. Missing normals are filled in smooth.
PolygonsQuads and n-gons are split into triangles, since SMD only stores triangles.
Not convertedBones, 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

Drop the .obj and .mtl on this page, check the preview and settings, and download the ZIP. It holds the reference SMD, an idle SMD and a QC. Nothing is uploaded.
Put the SMDs and QC in one folder, open Crowbar, choose your game on the Compile tab and compile the .qc. Crowbar runs the game's studiomdl and writes the MDL, VVD and VTX files.
Use the Scale setting. Blender exports metres by default, so pick metres to Source units (x39.37). A Source player is about 72 units tall.
Your OBJ is already Z-up (some apps export it that way). Turn off Y-up to Z-up and download again.
No. OBJ files do not store bones or animation, so the SMD has a single root bone. For characters, rig the model in Blender and export with Blender Source Tools.
Yes. The SMD format is the same. Tick the GoldSrc option so material names end in .bmp, and write a GoldSrc QC ($cd, $cdtexture, $body) for its studiomdl.

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.