$collisionmodel
		
		
		
		Jump to navigation
		Jump to search
		
$collisionmodel  is a   QC command  available in all 
 Source games.
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
- 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. - offset>
 - Override the center of mass, in local coords.
 - $inertia <normal>
 - Inertia scale. Higher values will make the physics object more sturdy, while lower values will make it more wobbly.
 - $damping <float>
 - Linear damping scale. Affects how quickly an object's velocity drops to zero.
 - $rotdamping <float>
 - Rotational damping scale. Affects how quickly an object's angular velocity drops to zero. 
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
 - Used to remove flat shaded faces. Off by default.
 - $weldposition <float>
 - 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>
 - 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
 - Assumes the joints are positioned in world space.
 
Example
$collisionmodel "tree_deciduous_01a_physbox"
{
	$mass 350.0
	$concave
}