$collisionmodel/en
Language subpage
This subpage is used on the $collisionmodel page to display content in English.
If you have edited the language subpage, do not forget to purge the base page by clicking on the button on the right. Otherwise, its contents will not be updated.
Contents
It is used to embed a static collision mesh in a model for use in VPhysics calculations. Animated models (including ones that will become ragdolls) should use $collisionjoints
instead.




vcollide_wireframe 1
to view collision meshes in-game.Syntax
$collisionmodel <collision mesh SMD/DMX> { <options> }
Options

$mass <float|kilograms>
- Manually set the mass of the model, in kilograms.
Tip:By default, the Player can +USE pick up 35KG max. The gravgun can pick up 250KG max. The portal gun can pick up 85KG max.
$automass
- Calculate the mass of the model based on the volume of the collision model and the material defined in its prop_data.
$concave
- By default, studiomdl will generate a single convex hull by 'shrinkwrapping' any concavities. You can create a concave hull by including multiple convex shapes (potentially overlapping) in your collision model, smoothing the hulls’ shading, and passing this command.
$maxconvexpieces <int>
(in all games since)
- By default, the model compiler limits a concave collision model to twenty convex pieces. This command can be used to override the limit if you are creating a Costly collision model.
Note:Introduced with the Orange Box. In the Ep1 engine, run studiomdl with
-fullcollide
instead.Warning:Going past a hundred or so pieces may begin to create server lag when multiple objects are touching the model.
$masscenter <vector|offset>
- Override the center of mass, in local coords.
$inertia <normal>
- Inertia scale. Lower values make the physics model fall 'harder'.
$damping <float>
- Linear damping scale.
$rotdamping <float>
- Rotational damping scale.
Warning:This affects the pull of gravity on the model and if abused can make it appear to float gently through the air. Valve recommends using "friction" instead.
$drag <normal>
- Scales air resistance. Essentially a more subtle version of $damping.
$jointskip
- Rarely used. Eliminates a joint in the collision model that you don't want to use. (i.e. if you were using a render model as a ragdoll, and it has bones you don't want).
$jointmerge
- Merges the vertex assignments for two joints.
$jointinertia
- Like $inertia, but per-bone.
$jointdamping
- Like $damping, but per-bone.
$jointmassbias
- Mass is automatically distributed by volume, this lets you bias it per-bone.
$jointrotdamping
- Like $rotdamping, but per-bone.
$jointcollide
- If any $jointcollide pairs are specified, only those joints collide with each other.
$jointconstrain
- The limits of the joint's movement.
$rootbone
- The parent-most bone that actually has collision geometry.
$noselfcollisions
- Turns off all collisions between bones in this model.
$animatedfriction
- Used to animate the amount of friction on joints over time.
$addconvexsrc <file> "offset pos[ <float> <float> <float> ] angle[ <float> <float> <float> ] scale[ <float> ] concave"
(only in)
- Adds a convex model onto the collision model with the specified position, angle, and scale. The "concave" option is optional.
Note:It must be formatted EXACTLY like this!
$remove2d
(only in)
- Used to remove flat shaded faces. Off by default.
$weldposition <float>
(only in)
- The amount of distance tolerance to use when trying to merge vertices of separate concave pieces in order to create a single concave piece.
$weldnormal <float>
(only in)
- The amount of tolerance to check if the vertice normal is similar enough to consider merging to a unique vertice. Used in conjunction with $weldposition.
$assumeworldspace
(only in)
- Assumes the joints are positioned in world space.
Example
$collisionmodel "tree_deciduous_01a_physbox.smd" { $mass 350.0 $concave }