$collisionmodel: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
mNo edit summary
No edit summary
Line 1: Line 1:
The [[QC command]] [[$collisionmodel]] is used to setup the physbox, collision hull, or [[collision model]].
The [[QC command]] <code>[[$collisionmodel]]</code> is used to generate a [[collision model]].  
{{note|[[Jointed collision model]]s use [[$collisionjoints]] instead of [[$collisionmodel]].}}
* See also [[NPC Hull]].
* See also [[Physics and Ragdolls]].


{{note|[[Jointed collision model]]s use <code>[[$collisionjoints]]</code>.}}


== Example Syntax==
== Example Syntax==
  [[$collisionmodel]] "tree_deciduous_01a_physbox.smd"
  [[$collisionmodel]] "tree_deciduous_01a_physbox.smd"
  {
  {
Line 11: Line 10:
     [[$concave]]
     [[$concave]]
  }
  }
* Straight after $collisionmodel you specify the name of the .SMD to use as a collision model.
 
* You should always create an efficient _physbox.smd rather than just using the _reference.smd as a collision model.  
You should always create a low-detail collision SMD, as a body mesh is almost always far too complex to be used. See [[Collision model#Build_a_collision_model]].


==Options==
==Options==


; [[$mass]] <kilograms>
; <code>[[$mass]] <[[float]]|kilograms></code>
: Manually set the mass, in kilograms, of the model.  
: Manually set the mass of the model.
:* This is applicable when the object is a physics prop, rather than simply a static prop. Make certain to set this correctly, otherwise your object will behave unrealistically.
:{{todo|Presumably this has some use outside physics simulation?}}
 
; <code>[[$automass]] </code>
; [[$automass]]  
: Automatically compute the mass of the model. The calculation takes into account the density/thickness of the material defined by [[$surfaceprop]] and/or [[Prop Data|prop_data]], as well as the volume of the collision SMD itself.
: Automatically compute the mass of the model.
; <code>[[$concave]] </code>
:* Derived from the density/thickness of the material defined by [[$surfaceprop]] and/or [[Prop Data|prop_data]] and the volume of the [[$collisionmodel]] itself.
: A collision model must be a [[Wikipedia:Convex|convex]] shape, but you can create [[Wikipedia:Concave|concave]] shapes by including multiple meshes in the same model. $concave tells studiomdl that this is what you want it to do, rather than make a single convex hull by bridging any gaps.
 
;<code>[[$maxconvexpieces]] <[[int]]></code>
; [[$masscenter]] <X Y Z offset?>
:By default, studiomdl 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]] <X Y Z offset?></code>
: Override the center of mass, in local coords.  
: Override the center of mass, in local coords.  
 
; <code>[[$inertia]] <scale?></code>
; [[$inertia]] <scale?>
: Inertia scale.
: Inertia scale.
 
; <code>[[$damping]] <scale?></code>
; [[$damping]] <scale?>
: Linear damping scale.  
: Linear damping scale.  
 
; <code>[[$rotdamping]] <scale?></code>
; [[$rotdamping]] <scale?>
: Rotational damping scale.
: Rotational damping scale.
; <code>[[$drag]] <scale?></code>
: Scales air resistance.


; [[$drag]] <scale?>
==See also==
: Scales the air resistance.
*[[NPC Hull]]
 
*[[Physics and Ragdolls]]
; [[$concave]]  
*[[$collisionjoints]]
: The vphysics [[collision model]] is made up of individual separate convex hulls (separate pieces), and not just one big hull. 
:* If not set, it'll make a single convex hull out of whatever geometry you give it.
 


[[Category:QC Commands]]
[[Category:QC Commands]]

Revision as of 12:42, 21 April 2008

The QC command $collisionmodel is used to generate a collision model.

Note.pngNote:Jointed collision models use $collisionjoints.

Example Syntax

$collisionmodel "tree_deciduous_01a_physbox.smd"
{
    $mass 350.0
    $concave
}

You should always create a low-detail collision SMD, as a body mesh is almost always far too complex to be used. See Collision model#Build_a_collision_model.

Options

$mass <float|kilograms>
Manually set the mass of the model.
Todo: Presumably this has some use outside physics simulation?
$automass
Automatically compute the mass of the model. The calculation takes into account the density/thickness of the material defined by $surfaceprop and/or prop_data, as well as the volume of the collision SMD itself.
$concave
A collision model must be a convex shape, but you can create concave shapes by including multiple meshes in the same model. $concave tells studiomdl that this is what you want it to do, rather than make a single convex hull by bridging any gaps.
$maxconvexpieces <int>
By default, studiomdl 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.pngNote:Introduced with the Orange Box. In the Ep1 engine, run studiomdl with -fullcollide when compiling instead.
$masscenter <X Y Z offset?>
Override the center of mass, in local coords.
$inertia <scale?>
Inertia scale.
$damping <scale?>
Linear damping scale.
$rotdamping <scale?>
Rotational damping scale.
$drag <scale?>
Scales air resistance.

See also