How SFM Compile Works Step by Step?
Bringing a custom 3D model into Source Filmmaker (SFM) involves a systematic compilation process. Below is a complete, detailed walkthrough of how SFM Compile works, following your outline in full detail with no extra unrelated content.
1. Prepare Your Assets
The first stage is preparation. Every asset must be properly organized and formatted before compilation.
Asset Organization
-
-
You must create separate folders for each type of asset. For example:
-
A models folder to hold the geometry files (.SMD, .FBX, .DMX).
-
A textures folder for all material textures.
-
An animations folder for any animation files.
-
A QC files folder (or the same folder) for the QC scripts.
-
-
You must ensure consistent naming conventions so references in QC files and paths match exactly (case-sensitive in many cases).
-
Exporting from 3D Software
-
From Blender or Maya, export your model(s) into one of these accepted formats:
-
.SMD
-
.FBX
-
.DMX
-
-
Each exported file should correspond to what you reference in the QC file later.
-
You may need to configure the exporter settings (scale, axis orientation, normals, skeleton) so the model behaves correctly in SFM.
By the end of this stage, you should have a clear directory layout and working exported files that mirror what your QC file expects.
2. Write or Edit QC File
The QC file is central to the compile process. It instructs the compiler how to build the model, where resources are, and what animations to include.
What a QC File Defines
Inside the QC file, these elements must be defined:
-
Model name: the output name of the compiled model (the
.mdl
file). -
Texture directory: where the compiler will look for textures (relative paths).
-
Bone structure: linking mesh to skeleton, assigning correct bones.
-
Animation references: pointing to sequences (idle, walk, etc.), with frame rate values and file names.
Example QC File with Detail
Here is the sample QC script with all references:
$modelname "my_model.mdl"
$cdmaterials "models\my_textures"
$body "Body" "my_model_ref.smd"
$sequence "idle" "my_model_idle.smd" fps 30
-
$modelname "my_model.mdl"
: This tells the compiler to name the resulting model filemy_model.mdl
. -
$cdmaterials "models\my_textures"
: This specifies that textures will be located undermodels\my_textures
relative to game paths. -
$body "Body" "my_model_ref.smd"
: Indicates the mesh part called “Body” uses the filemy_model_ref.smd
. -
$sequence "idle" "my_model_idle.smd" fps 30
: Defines an animation sequence named “idle” coming frommy_model_idle.smd
and playing at 30 frames per second.
You might include multiple $sequence
lines for different animations (walk, run, jump), but for our outline, one sequence is shown.
3. Compile the Model
Once assets and the QC file are ready, you run the compile step. This transforms your source files into SFM-ready output.
Tools Used for Compilation
-
Crowbar: A GUI tool many use for compiling because it simplifies some command-line complexity.
-
Command-line
studiomdl
: The underlying compiler that reads QC and source files.
Inputs and Outputs
-
Inputs to the compiler:
-
The QC file you created
-
The referenced
.SMD
,.FBX
, or.DMX
files -
Textures and material files referred to in QC
-
-
Outputs generated by the compile:
-
.MDL
file (the main model) -
.VTX
file (vertex-level data) -
.PHY
file (physics definitions) -
Possibly
.ANI
or other related files if you have animations
-
When compilation succeeds, you get a set of output files ready to be used in SFM.
4. Check and Fix Errors
Compilation often produces errors or warnings. You must inspect and correct them before using the model.
Steps for Error Handling
-
Open the log file generated by the compiler (Crowbar or
studiomdl
provides this). -
Read through all error messages, such as:
-
“File not found” (texture, mesh, or QC reference)
-
Typographical errors in file names or paths
-
Syntax issues in QC directives
-
Missing bones or mismatched skeleton references
-
-
For each error, modify your QC file, file names, or folder placement to resolve the issue.
-
After corrections, re-run the compilation until there are no critical errors.
The log file is your guide, it pinpoints what’s broken and where.
5. Load into SFM
Once the model compiles cleanly, you bring it into Source Filmmaker for use.
Placement of Compiled Files
-
Move the
.MDL
,.VTX
,.PHY
, and other outputs into SFM’s model folder, e.g.Steam/steamapps/common/SourceFilmmaker/game/usermod/models/
Spawning the Model in SFM
-
Launch Source Filmmaker.
-
Use the Animation Set Editor.
-
Click Create Animation Set for New Model.
-
Type the compiled model’s name (for instance,
my_model.mdl
). -
The model spawns in your scene, ready for animation and interaction.
Important Reminder
Compilation is not always smooth. Even a single typo or missing texture will break the process. Always use the compiler logs to spot mistakes and recompile after fixes. Logs are your best friend in this process.
FAQ – SFM Compile Step-by-Step
These frequently asked questions will help clarify common issues and concerns during the SFM model compilation process.
Q1: What is the purpose of the QC file in SFM Compile?
A: The QC file is the instruction manual for the compiler. It tells it what your model is called, where to find textures, which mesh and animation files to use, and how to build the model. Without a QC file, you cannot compile anything.
Q2: Which formats can I export from Blender or Maya?
A: You can export your models and animations in the following formats for SFM compile:
-
.SMD
(preferred for Source) -
.FBX
-
.DMX
Q3: What tools are required for compiling models?
A: The most commonly used tools include:
-
Crowbar: a user-friendly interface for compiling and decompiling models.
-
studiomdl.exe: the command-line tool used behind the scenes for compilation.
Q4: My model compiled, but doesn’t appear in SFMcompile. What went wrong?
A: This usually happens due to:
-
Incorrect file placement in
game/usermod/models/
-
Misspelled the model name when spawning
-
Missing
.MDL
or dependent files (.VTX
,.PHY
)
Check that all compiled files are correctly located and named.
Q5: How do I fix missing textures in SFM?
A: Ensure your QC file includes the correct $cdmaterials
path. Also, confirm:
-
Textures are converted to
.VTF
-
Material files (
.VMT
) reference the right texture paths -
Files are placed in the correct subdirectory inside
materials/
Q6: What does the “$sequence” line in the QC file do?
A: It defines an animation sequence. For example:
$sequence "idle" "my_model_idle.smd" fps 30
This sets an “idle” animation using my_model_idle.smd
playing at 30 frames per second.
Q7: What are the output files of the SFM compile process?
A:
-
.MDL
– Main model file -
.VTX
– Vertex information -
.PHY
– Physics data (for ragdolls, collisions) -
Optional:
.ANI
,.VVD
, etc.
These files must be placed together for the model to work in SFM.
Q8: Where do I put compiled files to load them into SFM?
A: Place them in:
Steam/steamapps/common/SourceFilmmaker/game/usermod/models/
Subfolders are fine; match them in the model browser.
Q9: How do I debug compile errors?
A: Always check the compile log:
-
Look for missing files
-
Check for syntax errors in the QC
-
Ensure file names and paths are correct
Fix the issue and recompile.
Q10: Can I use animations from other models?
A: Yes, but only if:
-
The skeletons are compatible
-
The bone names and hierarchy match
Otherwise, animations may break or not apply at all.