$collisionmodel: Difference between revisions
Jump to navigation
Jump to search

Warning:Collision meshes should have extremely few polygons. See Collision mesh for examples.
Note:For collision meshes modeled in
Blender or
Softimage Mod Tool, ensure that none of the edges are marked as hard/sharp. Hard/sharp edges generate errors in the physbox model.
Tip:Set the Console Variable
Note: Missing parameters for some options
SirYodaJedi (talk | contribs) m (→Example) |
SirYodaJedi (talk | contribs) |
||
Line 22: | Line 22: | ||
; {{mono|$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.}} | : 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.}} | ||
; | ;{{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]]. | ||
; | ; {{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. | ||
; | ;{{mono|$maxconvexpieces <[[int]]>}} {{{1|}}}{{#if: {{{1|}}} | }}{{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 | :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.}} | ||
; | ; {{mono|$masscenter <[[vector]]|offset>}} | ||
: Override the center of mass, in local coords. | : Override the center of mass, in local coords. | ||
; | ; {{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. | ||
; | ; {{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. | ||
; | ; {{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.}} | ||
; | ; {{mono|$drag <[[normal]]>}} | ||
: Scales air resistance. Essentially a more subtle version of $damping. | : Scales air resistance. Essentially a more subtle version of $damping. | ||
; | ; {{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). | ||
; | ; {{mono|$jointmerge}} | ||
: Merges the vertex assignments for two joints. | : Merges the vertex assignments for two joints. | ||
; | ; {{mono|$jointinertia}} | ||
: Like $inertia, but per-bone. | : Like $inertia, but per-bone. | ||
; | ; {{mono|$jointdamping}} | ||
: Like $damping, but per-bone. | : Like $damping, but per-bone. | ||
; | ; {{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. | ||
; | ; {{mono|$jointrotdamping}} | ||
: Like $rotdamping, but per-bone. | : Like $rotdamping, but per-bone. | ||
; | ; {{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. | ||
; | ; {{mono|[[$jointconstrain]]}} | ||
: The limits of the joint's movement. | : The limits of the joint's movement. | ||
; | ; {{mono|$rootbone}} | ||
: The parent-most bone that actually has collision geometry. | : The parent-most bone that actually has collision geometry. | ||
; | ; {{mono|$noselfcollisions}} | ||
: Turns off all collisions between bones in this model. | : Turns off all collisions between bones in this model. | ||
; | ; {{mono|$animatedfriction}} | ||
: Used to animate the amount of friction on joints over time. | : Used to animate the amount of friction on joints over time. | ||
; | ; {{mono|$addconvexsrc <[[file]]> "offset pos[ <[[float]]> <[[float]]> <[[float]]> ] angle[ <[[float]]> <[[float]]> <[[float]]> ] scale[ <[[float]]> ] concave"}} {{{1|}}}{{#if: {{{1|}}} | }}{{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!}} | ||
; | ; {{mono|$remove2d}} | ||
: Used to remove flat shaded faces. Off by default. | : Used to remove flat shaded faces. Off by default. | ||
; | ; {{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. | ||
; | ; {{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. | ||
; | ; {{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


$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 }