Compiling a model: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(otherlang2; new player model sources; admin env var issue fixed)
Line 1: Line 1:
{{otherlang2
| fr = Compiling a model:fr
| ru = Compiling Models Basics:ru
}}
{{template:toc-right}}
{{template:toc-right}}


Line 11: Line 16:
The only step you need to take before compiling (assuming your SMDs have exported OK) is choosing the current [[VPROJECT]] folder. This is the game that is being compiled for, and defines where studiomdl will write out the compiled model. You can configure it:
The only step you need to take before compiling (assuming your SMDs have exported OK) is choosing the current [[VPROJECT]] folder. This is the game that is being compiled for, and defines where studiomdl will write out the compiled model. You can configure it:


#Globally, by selecting your game/mod in the SDK launcher's drop-down list. {{bug|This won't work for studiomdl (or any other command-line tool) unless you have admin permissions.}}
#Globally, by selecting your game/mod in the SDK launcher's drop-down list.
#For studiomdl only, by running it with <code>-game "<full path to your [[gameinfo.txt]] folder>"</code> {{tip|Most SDK tools accept <code>-game</code>.}}
#For studiomdl only, by running it with <code>-game "<full path to your [[gameinfo.txt]] folder>"</code> {{tip|Most SDK tools accept <code>-game</code>.}}


Line 30: Line 35:


<div style="margin-left:1em;padding:1em;float:right;width:22em;border:1px solid #aaa;background:#EFEFEF;-moz-border-radius:.5em;-webkit-border-radius:.5em;">
<div style="margin-left:1em;padding:1em;float:right;width:22em;border:1px solid #aaa;background:#EFEFEF;-moz-border-radius:.5em;-webkit-border-radius:.5em;">
<h4 style="margin:0;padding:0;">File locations</h4>
<strong style="font-size:1.2em;color:#555555;">File locations</strong>


The default location for SMDs is the same folder as the QC file. You can access other locations:
The default location for SMDs is the same folder as the QC file. You can access other locations:
Line 52: Line 57:
You will be able to use this as a template to compile your own model, so swap in your own SMDs and see what happens.
You will be able to use this as a template to compile your own model, so swap in your own SMDs and see what happens.


{{note|All models must have at least one <code>$sequence</code>, even if they aren't actually animated.}}
{{note|All models must have at least one <code>$sequence</code>, even if they aren't actually animated!}}


=== Tutorials ===
=== Tutorials ===


*For physically-simulated objects, see '''<code>[[Prop Data|prop_data]]</code>'''
* For physically-simulated objects, see '''<code>[[Prop Data|prop_data]]</code>'''
*For characters or player models, see '''[[Compiling a character model]]'''
* For characters or player models, see '''[[Compiling a character model]]'''
*For [[viewmodel]]s, see '''[[Compiling a viewmodel]]'''
* For [[viewmodel]]s, see '''[[Compiling a viewmodel]]'''
*For vehicles, see '''[[Compiling a vehicle model]]'''
* For vehicles, see '''[[Compiling a vehicle model]]'''
*For general help with compiling models, see '''[[:Category:QC Commands]]'''
* For general help with compiling models, see '''[[:Category:QC Commands]]'''


== Compiling ==
== Compiling ==
Line 68: Line 73:
The easiest way to compile a model is with the built-in launch features of advanced text editors.
The easiest way to compile a model is with the built-in launch features of advanced text editors.


*[[Notepadpp VDF languages#Compiling QC files|With Notepad++]]
* [[Notepadpp VDF languages#Compiling QC files|With Notepad++]]
*[[Highlighting and Compiling QCs with ConTEXT|With ConTEXT]]
* [[Highlighting and Compiling QCs with ConTEXT|With ConTEXT]]


=== With a batch file ===
=== With a batch file ===
Line 84: Line 89:
== Common errors == <!-- linked to from [[studiomdl]] -->
== Common errors == <!-- linked to from [[studiomdl]] -->


*<code>Error opening <model>! (Check for write enable)</code>
* <code>Error opening <model>! (Check for write enable)</code>
*:Studiomdl won't create folders that don't exist; you must manually create a path to your .mdl before compiling.
: Studiomdl won't create folders that don't exist; you must manually create a path to your .mdl before compiling.
*<code>[[Costly collision model]]</code>
* <code>[[Costly collision model]]</code>
*<code>[[Duplicate weightlist pelvisonly]]</code>
* <code>[[Duplicate weightlist pelvisonly]]</code>
*<code>[[Short conversion out of range]]</code>
* <code>[[Short conversion out of range]]</code>
*<code>[[WARNING: (4768124) : ERROR: 'EXCEPTION ACCESS VIOLATION' (assert: 1)]]</code>
* <code>[[WARNING: (4768124) : ERROR: 'EXCEPTION ACCESS VIOLATION' (assert: 1)]]</code>
*:If you receive <code>EXCEPTION_ACCESS_VIOLATION</code> without an error code, try compiling with [[HLMV]] running.
: If you receive <code>EXCEPTION_ACCESS_VIOLATION</code> without an error code, try compiling with [[HLMV]] running.
*<code>WARNING: Bad collision model, check your smoothing groups!!!</code>
* <code>WARNING: Bad collision model, check your smoothing groups!!!</code>
*:if you created the collision model with XSI then you need to turn off Geometry Approximation's Automatic Discontinuity (Explorer -> Your Mesh -> Geometry Approximation -> Discontinuity -> Untick Automatic) for the smoothing groups to be exported properly.
: If you created the collision model with XSI then you need to turn off Geometry Approximation's Automatic Discontinuity (Explorer -> Your Mesh -> Geometry Approximation -> Discontinuity -> Untick Automatic) for the smoothing groups to be exported properly.


== SDK samples ==
== SDK samples ==
Line 98: Line 103:
The SDK has numerous sample models, including several fully-articulated characters and players. They can be found at <code>sourcesdk_content\<game>\modelsrc\</code>.
The SDK has numerous sample models, including several fully-articulated characters and players. They can be found at <code>sourcesdk_content\<game>\modelsrc\</code>.


; <code>sdk</code>
: ''Complete'' SMD sources for both player models in [[Day of Defeat: Source|DODS]]!
; <code>generic</code>
: A tweaked [[ValveBiped]] rig (no meshes)
; <code>cstrike</code>
; <code>cstrike</code>
: "Urban CT" player model
: "Urban CT" player model
: Several static props
: Several static props
; <code>generic</code>
: A tweaked [[ValveBiped]] rig (no meshes)
; <code>hl2</code>
; <code>hl2</code>
: [[Airboat]] and [[Buggy]]
: [[Airboat]] and [[Buggy]]
Line 117: Line 124:
== See also ==
== See also ==
* [[Qc|QC]]
* [[Qc|QC]]
*[[:Category:QC Commands]]
* [[:Category:QC Commands]]
* [[studiomdl]]
* [[studiomdl]]
* [[Studiocompiler]], a graphical interface for studiomdl
** [[Studiocompiler]], a graphical interface for studiomdl
* [[GUIStudioMDL]], another graphical interface
** [[GUIStudioMDL]], another graphical interface
* [[Highlighting and Compiling QCs with ConTEXT]]
* [[Highlighting and Compiling QCs with ConTEXT]]
* [[Notepadpp VDF languages|Notepad++ VDF languages]]
* [[Notepad++ VDF languages]]
 
{{otherlang:en}}
{{otherlang:en:fr|Compiling_a_model:fr}}
{{otherlang:en:ru|Compiling_Models_Basics:ru}}


[[Category:Modeling]]
[[Category:Modeling]]
[[Category:Tutorials]]
[[Category:Tutorials]]

Revision as of 02:48, 24 July 2009

Template:Otherlang2

Models need to be compiled before they can be used in a game. There are three components of a compile:

  1. A set of SMD files describing a model. See Exporting a model if you don't have any.
  2. A QC file that defines, in a manner not too dissimilar to a texture's VMT, how the SMD files should be interpreted.
  3. Studiomdl, the SDK program that consumes the QC and spits out (hopefully!) a compiled model.

Setting up

The only step you need to take before compiling (assuming your SMDs have exported OK) is choosing the current VPROJECT folder. This is the game that is being compiled for, and defines where studiomdl will write out the compiled model. You can configure it:

  1. Globally, by selecting your game/mod in the SDK launcher's drop-down list.
  2. For studiomdl only, by running it with -game "<full path to your gameinfo.txt folder>"
    Tip.pngTip:Most SDK tools accept -game.

Syntax highlighting

Editing a QC file becomes much easier when you use an advanced text editor with support for syntax highlighting. There are two editors with QC highlighting rules at the moment:

Creating a QC

A QC file is simply a text file with the extension .qc. You can create it anywhere and name it anything, but it's best to be organised and store it with your SMDs in a folder with the same name as the destination model file.

Inside it should be a list of commands that tell studiomdl about the location of the model's various SMDs, where the compiled files should be written to (relative to VPROJECT), how to process animations, and potentially much, much more. You will find all known commands listed at Category:QC Commands.

Example

File locations

The default location for SMDs is the same folder as the QC file. You can access other locations:

  • With an absolute path (e.g. C:\modelsrc\my_model\)
  • With a relative path (e.g. .\subfolder or ..\)
    Tip.pngTip:A single period is the current folder. Two periods is the one above it. ..\..\ goes two levels up.
  • With $pushd and $popd.

Here is a very simple QC file for a solid model without any animation or special properties (click on each command for details):

$modelname	"props_sdk\myfirstmodel.mdl"
$body mybody	"myfirstmodel-ref.smd"
$staticprop
$surfaceprop	combine_metal
$cdmaterials	"models\props_sdk"

$sequence idle	"myfirstmodel-idle.smd" loop fps 15

$collisionmodel	"myfirstmodel-phys.smd" { $concave }

You will be able to use this as a template to compile your own model, so swap in your own SMDs and see what happens.

Note.pngNote:All models must have at least one $sequence, even if they aren't actually animated!

Tutorials

Compiling

With your text editor

The easiest way to compile a model is with the built-in launch features of advanced text editors.

With a batch file

If you can't (or don't want to) use an advanced text editor, you will be compiling QCs by dragging them onto studiomdl in Windows. You can find the executable file in sourcesdk/bin/[orangebox|ep1]/bin/.

The process will be easier if you create a .cmd file somewhere more accessible to automate it. This is simply a renamed .txt file containing something like this:

"%sourcesdk%/bin/orangebox/bin/studiomdl" "%1"
pause

Drop your QC file onto the CMD as you would studiomdl itself; it's essentially a shortcut to the executable.

Common errors

  • Error opening <model>! (Check for write enable)
Studiomdl won't create folders that don't exist; you must manually create a path to your .mdl before compiling.
If you receive EXCEPTION_ACCESS_VIOLATION without an error code, try compiling with HLMV running.
  • WARNING: Bad collision model, check your smoothing groups!!!
If you created the collision model with XSI then you need to turn off Geometry Approximation's Automatic Discontinuity (Explorer -> Your Mesh -> Geometry Approximation -> Discontinuity -> Untick Automatic) for the smoothing groups to be exported properly.

SDK samples

The SDK has numerous sample models, including several fully-articulated characters and players. They can be found at sourcesdk_content\<game>\modelsrc\.

sdk
Complete SMD sources for both player models in DODS!
generic
A tweaked ValveBiped rig (no meshes)
cstrike
"Urban CT" player model
Several static props
hl2
Airboat and Buggy
Antlion Guard
Male citizen (only has a few animations)
Some CS stuff that is probably a duplicate of \cstrike's content
Viewmodels for all HL2 weapons
hl2mp
All with multiplayer animations only:
Combine soldier
Metrocop
Male rebel

See also