$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: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.
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
Tip:Set the Console Variable 
 Note:Introduced with the Orange Box. In the Ep1 engine, run StudioMDL with
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.
 Note:If your model has moving parts that may affect collisions, such as ragdoll limbs, use
Note:If your model has moving parts that may affect collisions, such as ragdoll limbs, use $collisionjoints instead. Note:Collision meshes should be extremely lo-poly in comparison to reference meshes, and even lod meshes. See collision mesh.
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
Tip:Set the Console Variable 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 $concavewill 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.
 Note:Introduced with the Orange Box. In the Ep1 engine, run StudioMDL with
Note:Introduced with the Orange Box. In the Ep1 engine, run StudioMDL with -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 $jointcollidepairs 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
}