$collisionmodel: Difference between revisions
Jump to navigation
Jump to search
Note:If your model has moving parts that may affect collisions, such as ragdoll limbs, use
Note:Collision meshes should be extremely lo-poly in comparison to reference meshes, and even lod meshes. See collision mesh.
Tip:Set the Console Variable
Note:Introduced with the Orange Box. In the Ep1 engine, run StudioMDL with
TomEdwards (talk | contribs) mNo edit summary |
(more options) |
||
Line 7: | Line 7: | ||
{{tip|Set the Console Variable <code>vcollide_wireframe 1</code> to view collision meshes in-game.}} | {{tip|Set the Console Variable <code>vcollide_wireframe 1</code> to view collision meshes in-game.}} | ||
== | == Syntax == | ||
[[$collisionmodel]] "<collision mesh SMD>.smd" | [[$collisionmodel]] "<collision mesh SMD>.smd" | ||
Line 14: | Line 14: | ||
} | } | ||
==Options== | == Options == | ||
; <code>$mass <[[float]]|kilograms></code> | ; <code>$mass <[[float]]|kilograms></code> | ||
: Manually set the mass of the model. | : Manually set the mass of the model, in kilograms. | ||
; <code>$automass </code> | |||
: | ;<code>$automass</code> | ||
: 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> | ; <code>$concave </code> | ||
: By default | : By default, the model compiler will generate a single [[Wikipedia:Convex|convex]] hull by bridging any [[Wikipedia:Concave|concavities]] in a collision SMD. You can create a [[Wikipedia:Concave|concave]] hull by including multiple, overlapping convex meshes in your SMD, and adding the <code>$concave</code> will preserve concavities by using multiple convex pieces. The resulting hull structure is a bit like a ''rigid'' [[$collisionjoints|ragdoll]]. | ||
;<code>$maxconvexpieces <[[int]]></code> | ;<code>$maxconvexpieces <[[int]]></code> | ||
:By default, | :By default, the model compiler limits a concave collision model to twenty convex pieces. This command can be used to override the limit - for instance if you are creating an unusually large model. | ||
{{note|Introduced with the Orange Box. In the Ep1 engine, run StudioMDL with <code>-fullcollide</code> when compiling instead.}} | |||
; <code>$masscenter <[[vector]]|offset></code> | ; <code>$masscenter <[[vector]]|offset></code> | ||
: Override the center of mass, in local coords. | : Override the center of mass, in local coords. | ||
; <code>$inertia <[[float]]|scale></code> | ; <code>$inertia <[[float]]|scale></code> | ||
: Inertia scale. | : Inertia scale. | ||
; <code>$damping <[[float]]|scale></code> | ; <code>$damping <[[float]]|scale></code> | ||
: Linear damping scale. | : Linear damping scale. | ||
; <code>$rotdamping <[[float]]|scale></code> | ; <code>$rotdamping <[[float]]|scale></code> | ||
: Rotational damping scale. | : Rotational damping scale. | ||
; <code>$drag <[[float]]|scale></code> | ; <code>$drag <[[float]]|scale></code> | ||
: Scales air resistance. | : Scales air resistance. | ||
;<code>$jointskip</code> | |||
: 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> | |||
: Merges the vertex assignments for two joints. | |||
;<code>$rootbone</code> | |||
: The parent-most bone that actually has collision geometry. | |||
;<code>$jointconstrain</code> | |||
: The limits of the joint's movement. | |||
;<code>$jointinertia</code> | |||
: Like <code>$inertia</code>, but per-bone. | |||
;<code>$jointdamping</code> | |||
: Like <code>$damping</code>, but per-bone. | |||
;<code>$jointrotdamping</code> | |||
: Like <code>$rotdamping</code>, but per-bone. | |||
;<code>$jointmassbias</code> | |||
: Mass is automatically distributed by volume, this lets you bias it per-bone. | |||
;<code>$noselfcollisions</code> | |||
: Turns off all collisions between bones in this model, usually for perf. | |||
;<code>$jointcollide</code> | |||
: If any <code>$jointcollide</code> pairs are specified, only those joints collide with each other. | |||
;<code>$animatedfriction</code> | |||
: Used to animate the amount of friction on joints over time. | |||
== Example == | == Example == | ||
Line 50: | Line 91: | ||
*[[$collisionjoints]] | *[[$collisionjoints]] | ||
[[Category:QC Commands| | [[Category:QC Commands|collisionmodel]] |
Revision as of 15:04, 28 April 2008
The QC command $collisionmodel
is used to embed a non-animated collision mesh in a model, for use in VPhysics calculations.

$collisionjoints
instead.

vcollide_wireframe 1
to view collision meshes in-game.Syntax
$collisionmodel "<collision mesh SMD>.smd" { <options> }
Options
$mass <float|kilograms>
- Manually set the mass of the model, in kilograms.
$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, the model compiler will generate a single convex hull by bridging any concavities in a collision SMD. You can create a concave hull by including multiple, overlapping convex meshes in your SMD, and adding the
$concave
will preserve concavities by using multiple convex pieces. The resulting hull structure is a bit like a rigid ragdoll.
$maxconvexpieces <int>
- By default, the model compiler limits a concave collision model to twenty convex pieces. This command can be used to override the limit - for instance if you are creating an unusually large model.

-fullcollide
when compiling instead.$masscenter <vector|offset>
- Override the center of mass, in local coords.
$inertia <float|scale>
- Inertia scale.
$damping <float|scale>
- Linear damping scale.
$rotdamping <float|scale>
- Rotational damping scale.
$drag <float|scale>
- Scales air resistance.
$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.
$rootbone
- The parent-most bone that actually has collision geometry.
$jointconstrain
- The limits of the joint's movement.
$jointinertia
- Like
$inertia
, but per-bone.
$jointdamping
- Like
$damping
, but per-bone.
$jointrotdamping
- Like
$rotdamping
, but per-bone.
$jointmassbias
- Mass is automatically distributed by volume, this lets you bias it per-bone.
$noselfcollisions
- Turns off all collisions between bones in this model, usually for perf.
$jointcollide
- If any
$jointcollide
pairs are specified, only those joints collide with each other.
$animatedfriction
- Used to animate the amount of friction on joints over time.
Example
$collisionmodel "tree_deciduous_01a_physbox.smd" { $mass 350.0 $concave }