Tutorial: Create your own models
Home > Tutorial: Create your own models
Limitations and features of HL2 models
You can use 32 different textures on one model and up to eight different LOD models.
Faces without texture specified will be ignored while compiling.
Textures must be defined with VMT files as VertexLitGeneric.
You can add static entities in your model, such as smokeemitters.
Programs / Files you'll need
1. You need at least one textured model in the SMD format.
2. Your textures with a power of 2 saved as VTF.
3. A QC file, can be created with any texteditor like notepad. Some model editors can create the .QC file for you, but i haven't tested it yet.
4. studiomdl.exe , install source SDK to get this file.
How to create your own models for Empires
Setup
Set up a folder to place your project files and materials. I used VTFEdit and converted the .VTF 's to TGA 's, because your model editor may don't know the VTF format. Make sure you used the same filenames (except the ending, like .TGA ). To compile the model you don't need the VTF's, but you need them for proper rendering ingame.
Brushes and models use different texture shaders, and models can only use VertexLitGeneric shaders. Each texture has an individual VMT file that contains information about the shader to use, which is always the first line. If parts of your model are invisible and you getting warnings in the console your possible not using VertexLitGeneric.
Create your model
You can use any model editors like
- 3D Studio Max (Commercial)
- XSI (Freeware)
- Milkshape (Shareware)
- Misfit Model 3D (Freeware)
- Blender (Open Source)
- Google Sketchup with Playup Tools (Freeware) (Untested. Please give feedback or opinions on the forum)
but you need to convert your model to a SMD file at the end. Try to get plugins if you don't have native SMD support in your editor.
Create your model and texture all faces. Faces without a proper texture mapping will be ignored while compiling and won't occur in game. If you don't care about texturing, apply any name, HL2 wont find the texture and will apply the deafult purple-black chess texture. Finally save your model as SMD-file.
What your SMD-file should look like:
texturename1 0 101.417053 -13.837116 6.270448 -0.673222 0.446155 0.589677 0.000000 1.000000 0 0 106.823196 -11.187776 6.270448 -0.161431 0.795829 0.583607 0.000000 0.000000 0 0 101.342369 -13.836076 2.145702 -0.652646 0.757568 0.012008 1.000000 0.000000 0 texturename2 0 106.823196 -11.187776 6.270448 -0.161431 0.795829 0.583607 0.000000 1.000000 0 0 106.748520 -11.186735 2.145702 0.074252 0.997239 -0.001093 0.000000 0.000000 0 0 101.342369 -13.836076 2.145702 -0.652646 0.757568 0.012008 1.000000 0.000000 0
What your SMD-file look like if your faces have no texture:
0 101.417053 -13.837116 6.270448 -0.673222 0.446155 0.589677 0.000000 1.000000 0 0 106.823196 -11.187776 6.270448 -0.161431 0.795829 0.583607 0.000000 0.000000 0 0 101.342369 -13.836076 2.145702 -0.652646 0.757568 0.012008 1.000000 0.000000 0 0 106.823196 -11.187776 6.270448 -0.161431 0.795829 0.583607 0.000000 1.000000 0 0 106.748520 -11.186735 2.145702 0.074252 0.997239 -0.001093 0.000000 0.000000 0 0 101.342369 -13.836076 2.145702 -0.652646 0.757568 0.012008 1.000000 0.000000 0
Valve developer tutorial - Model Creation
Valve developer tutorial - How to export models
Prepare for compiling
|
|
|
|
example content of Empires.qc
//modelname and folder $modelname "NF/Buildings/radar/NF_radar.mdl" //LOD $model "base" "reference.smd" $lod 300 { replacemodel "reference" "lod1_reference" } $model "inside" "inside.smd" $lod 100 { replacemodel "inside" "lod1_inside" } $lod 300 { replacemodel "inside" "lod2_inside" } $model "crates" "crates.smd" $lod 100 { replacemodel "crates" "lod1_crates" } $lod 300 { replacemodel "crates" "lod2_crates" } $cdmaterials "NF\Buildings\" $cdmaterials "Common\Glass\" $cdmaterials "\common\props" $cdmaterials "NF\Props\" $cdmaterials "NF\Buildings\Radar\" $cdmaterials "\" $cdmaterials "\metal" //hitbox $hboxset "default" $hbox 0 "static_prop" -351.416 -352.793 -140.800 379.501 351.355 405.290 //attached entities $attachment "build" "static_prop" 0.00 0.00 0.00 rotate 0.00 90.00 0.00 $attachment "smoke_damage_1" "static_prop" -176.00 -38.50 198.00 rotate 0.00 90.00 0.00 $attachment "smoke_damage_2" "static_prop" -0.00 299.20 132.00 rotate 0.00 90.00 0.00 $attachment "smoke_damage_3" "static_prop" 19.80 -88.00 330.00 rotate 0.00 90.00 0.00 $surfaceprop "default" $illumposition 14.043 -0.719 132.245 //animation sequence $sequence idle "idle" fps 1.00 $collisionmodel "phymodel.smd" { $concave $mass 180.0 $inertia 1.00 $damping 0.00 $rotdamping 0.00 } //scale the model by this factor $scale 1.0
explanation of Empires.qc
$modelname is the path and name of your model as mdl. The model nf_radar.mdl will be placed in .\Steam\steamapps\SourceMods\Empires\nf\buildings\radar\nf_radar.mdl after compiling.
$cdmaterials is the path to your materials (VTF 's) in the .\materials folder. If you use more than 1 folder, you can use the '$cdmaterials' command again to set the remaining folders (this includes subfolders).
$scale Scales your model by this factor.
$body main-smd
$sequence smd with animation
$collisionmodel smd file with a collisionmodel
Compile your model
Execute your created shortcut to studiomdl. studiomdl will read the Empires.qc and compile your smdfile to mdl format and place it in the specified folder. To see the output of studiomdl.exe open the command shell and drag&drop the shotcut to it.
Links
http://developer.valvesoftware.com/wiki/Compiling_Models_Basics
http://developer.valvesoftware.com/wiki/Model_Creation_Overview
http://developer.valvesoftware.com/wiki/Exporting_a_model
http://developer.valvesoftware.com/wiki/3D_Modeling_Programs