This article's documentation is for anything that uses the Source engine. Click here for more information.

$staticprop: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
mNo edit summary
No edit summary
 
(23 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{lang|$staticprop|title=<code>$staticprop</code>}}
{{LanguageBar}}
{{this is a|QC command|name=$staticprop}} It tells the model compiler that this model is not intended to have any moving parts. This will cause the compiler to strip away the skeleton & animations to just a single, unmoving bone named <code>static_prop</code>.


The [[:Category:QC_Commands|QC command]] <code>[[$staticprop]]</code> specifies that the model being compiled does not have any moving parts.
A model flagged with <code>$staticprop</code> is ''not'' necessarily limited to just being used with the <code>[[prop_static]]</code> [[point entity]]. <code>[[prop_static]]</code> will not function unless the model was compiled with this command. This command is also recommended for [[physics prop]]s, since physics props have animation forcibly disabled.


==Intended Usage==
{{bug|If the model being compiled has a bone named <code>static_prop</code> already, it can cause the physics model for the prop to be misaligned, should the bone not be oriented how the model compiler expects it to be.}}
Using the command is primarily meant to optimize props meant for ''maps'', as it provides benefits to [[lightmap]] shadows during [[VRAD]] compiles and the commands for it such as <code>-staticproplighting</code> or <code>-staticproppolys</code> commands.


It will also allow the prop to be used as a <code>[[prop_static]]</code> [[point entity]] in maps, as using props without the flag on standard compilers will remove it when [[VBSP]] is run.
{{bug|[[$bodygroup|Bodygroups]] do not play well with this command. <code>prop_static</code> does not actually support bodygroups anyway, and therefore always defaults to whatever the default bodygroup state is.
 
* The <code>blank</code> keyword will outright fail compilation with an EXCEPTION_ACCESS_VIOLATION error.
===Caveats===
* If used as a prop_static, VRAD will generate lightmaps for each bodygroup, if they're present, even though this is entirely useless.
Using the static flag command will cause issues in certain circumstances.
Bodygroups can still be reliably used with $staticprop on entities other than prop_static, as long as none of the bodies are blank.}}
 
It will remove all bones, and replace all weighted vertices' weights to a new "dummy" bone created during compile named <code>static_prop</code>. If used on a model that has multiple [[$animation|animations]] or [[$sequence|sequences]], it will remove all of them. Be aware of this if the prop is intended to be animated, and use <code>[[prop_dynamic]]</code> instead.
 
Using the static flag will also cause models to be error prone at times. Models with large numbers of [[$bodygroup|body groups]] will potentially crash the game, throw an error when compiled, and break the <code>blank</code> command in body groups.
 
Essentially, ''do not'' use <code>$staticprop</code> unless the model is meant for a map or otherwise static prop, as it can cause issues when used on a prop meant to be used in-game.


==Example==
==Example==
$modelname props_junk/metal_paintcan001a.mdl
  $staticprop
  $staticprop
$body body metal_paintcan001a_lod0
[...]
==See also==
* [[prop_static]]
* [[prop_physics]]


[[Category:Modeling]]
[[Category:Modeling]]
[[Category:QC_Commands]]
[[Category:Source]]
[[Category:Glossary]]

Latest revision as of 17:52, 3 August 2025

English (en)Русский (ru)Translate (Translate)

$staticprop is a QC command available in all Source Source games. It tells the model compiler that this model is not intended to have any moving parts. This will cause the compiler to strip away the skeleton & animations to just a single, unmoving bone named static_prop.

A model flagged with $staticprop is not necessarily limited to just being used with the prop_static point entity. prop_static will not function unless the model was compiled with this command. This command is also recommended for physics props, since physics props have animation forcibly disabled.

Icon-Bug.pngBug:If the model being compiled has a bone named static_prop already, it can cause the physics model for the prop to be misaligned, should the bone not be oriented how the model compiler expects it to be.  [todo tested in ?]
Icon-Bug.pngBug:Bodygroups do not play well with this command. prop_static does not actually support bodygroups anyway, and therefore always defaults to whatever the default bodygroup state is.
  • The blank keyword will outright fail compilation with an EXCEPTION_ACCESS_VIOLATION error.
  • If used as a prop_static, VRAD will generate lightmaps for each bodygroup, if they're present, even though this is entirely useless.
Bodygroups can still be reliably used with $staticprop on entities other than prop_static, as long as none of the bodies are blank.  [todo tested in ?]

Example

$modelname props_junk/metal_paintcan001a.mdl
$staticprop
$body body metal_paintcan001a_lod0
[...]

See also