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

$collisionmodel: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
Line 22: Line 22:




 
; {{mono|$mass <[[float]]|kilograms>}}
; <code>$mass <[[float]]|kilograms></code>
: 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.}}
: 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.}}
;<code>$automass</code>
;{{mono|$automass}}
: Calculate the mass of the model based on the volume of the collision model and the material defined in its [[Prop Data|prop_data]].
: Calculate the mass of the model based on the volume of the collision model and the material defined in its [[Prop Data|prop_data]].
; <code>$concave </code>
; {{mono|$concave }}
: By default, studiomdl will generate a single [[Wikipedia:Convex|convex]] hull by 'shrinkwrapping' any [[Wikipedia:Concave polygon|concavities]]. You can create a [[Wikipedia:Concave|concave]] hull by including multiple convex shapes (potentially overlapping) in your collision model, '''smoothing the hulls’ shading''', and passing this command.
: By default, studiomdl will generate a single [[Wikipedia:Convex|convex]] hull by 'shrinkwrapping' any [[Wikipedia:Concave polygon|concavities]]. You can create a [[Wikipedia:Concave|concave]] hull by including multiple convex shapes (potentially overlapping) in your collision model, '''smoothing the hulls’ shading''', and passing this command.
;<code>$maxconvexpieces <[[int]]></code> {{{1|}}}{{#if: {{{1|}}} | &nbsp; }}{{since|{{src07}}}}
;{{mono|$maxconvexpieces <[[int]]>}} {{{1|}}}{{#if: {{{1|}}} | &nbsp; }}{{since|{{src07}}}}
: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 <code>-fullcollide</code> instead.}}{{warning|Going past a hundred or so pieces may begin to create server lag when multiple objects are touching the model.}}
: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 {{mono|-fullcollide}} instead.}}{{warning|Going past a hundred or so pieces may begin to create server lag when multiple objects are touching the model.}}
; <code>$masscenter <[[vector]]|offset></code>
; {{mono|$masscenter <[[vector]]|offset>}}
: Override the center of mass, in local coords.
: Override the center of mass, in local coords.
; <code>$inertia <[[normal]]></code>
; {{mono|$inertia <[[normal]]>}}
: Inertia scale. Higher values will make the physics object more sturdy, while lower values will make it more wobbly.
: Inertia scale. Higher values will make the physics object more sturdy, while lower values will make it more wobbly.
; <code>$damping <[[float]]></code>
; {{mono|$damping <[[float]]>}}
: Linear damping scale. Affects how quickly an object's velocity drops to zero.
: Linear damping scale. Affects how quickly an object's velocity drops to zero.
; <code>$rotdamping <[[float]]></code>
; {{mono|$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.}}
: 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.}}
; <code>$drag <[[normal]]></code>
; {{mono|$drag <[[normal]]>}}
: Scales air resistance. Essentially a more subtle version of $damping.  
: Scales air resistance. Essentially a more subtle version of $damping.  
; <code>$jointskip</code>
; {{mono|$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).
: 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).
; <code>$jointmerge</code>
; {{mono|$jointmerge}}
: Merges the vertex assignments for two joints.
: Merges the vertex assignments for two joints.
; <code>$jointinertia</code>
; {{mono|$jointinertia}}
: Like $inertia, but per-bone.
: Like $inertia, but per-bone.
; <code>$jointdamping</code>
; {{mono|$jointdamping}}
: Like $damping, but per-bone.
: Like $damping, but per-bone.
; <code>$jointmassbias</code>
; {{mono|$jointmassbias}}
: Mass is automatically distributed by volume, this lets you bias it per-bone.
: Mass is automatically distributed by volume, this lets you bias it per-bone.
; <code>$jointrotdamping</code>
; {{mono|$jointrotdamping}}
: Like $rotdamping, but per-bone.
: Like $rotdamping, but per-bone.
; <code>$jointcollide</code>
; {{mono|$jointcollide}}
: If any $jointcollide pairs are specified, only those joints collide with each other.
: If any $jointcollide pairs are specified, only those joints collide with each other.
; <code>[[$jointconstrain]]</code>
; {{mono|[[$jointconstrain]]}}
: The limits of the joint's movement.
: The limits of the joint's movement.
; <code>$rootbone</code>
; {{mono|$rootbone}}
: The parent-most bone that actually has collision geometry.
: The parent-most bone that actually has collision geometry.
; <code>$noselfcollisions</code>
; {{mono|$noselfcollisions}}
: Turns off all collisions between bones in this model.
: Turns off all collisions between bones in this model.
; <code>$animatedfriction</code>
; {{mono|$animatedfriction}}
: Used to animate the amount of friction on joints over time.
: Used to animate the amount of friction on joints over time.
; <code>$addconvexsrc <[[file]]> "offset pos[ <[[float]]> <[[float]]> <[[float]]> ] angle[ <[[float]]> <[[float]]> <[[float]]> ] scale[ <[[float]]> ] concave"</code> {{{1|}}}{{#if: {{{1|}}} | &nbsp; }}{{only|{{csgo}}}}
; {{mono|$addconvexsrc <[[file]]> "offset pos[ <[[float]]> <[[float]]> <[[float]]> ] angle[ <[[float]]> <[[float]]> <[[float]]> ] scale[ <[[float]]> ] concave"}} {{{1|}}}{{#if: {{{1|}}} | &nbsp; }}{{only|{{csgo}}}}
: 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!}}
: 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!}}
; <code>$remove2d</code>
; {{mono|$remove2d}}
: Used to remove flat shaded faces. Off by default.
: Used to remove flat shaded faces. Off by default.
; <code>$weldposition <[[float]]></code>
; {{mono|$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.
: The amount of distance tolerance to use when trying to merge vertices of separate concave pieces in order to create a single concave piece.
; <code>$weldnormal <[[float]]></code>
; {{mono|$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.
: 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.
; <code>$assumeworldspace</code>
; {{mono|$assumeworldspace}}
: Assumes the joints are positioned in world space.
: Assumes the joints are positioned in world space.



Revision as of 19:03, 24 January 2025

English (en)Translate (Translate)

$collisionmodel is a QC command available in all Source 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.

Warning.pngWarning:Collision meshes should have extremely few polygons. See Collision mesh for examples.
Note.pngNote:For collision meshes modeled in Blender Blender or Softimage Mod Tool Softimage Mod Tool, ensure that none of the edges are marked as hard/sharp. Hard/sharp edges generate errors in the physbox model.
Tip.pngTip:Set the Console Variable vcollide_wireframe 1 to view collision meshes in-game.

Syntax

$collisionmodel	<collision mesh SMD/DMX>
{
	<options>
}

Options

Stub

This article or section is a stub. You can help by expanding it.

Note.pngNote: Missing parameters for some options


kilograms>
Manually set the mass of the model, in kilograms.
Tip.pngTip: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 Source 2007)
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.pngNote:Introduced with the Orange Box. In the Ep1 engine, run studiomdl with -fullcollide instead.
Warning.pngWarning: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.pngWarning: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 Counter-Strike: Global Offensive)
Adds a convex model onto the collision model with the specified position, angle, and scale. The "concave" option is optional.
Note.pngNote: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
}

See also