$collisionmodel: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
Line 18: Line 18:
; <code>$mass <[[float]]|kilograms></code>
; <code>$mass <[[float]]|kilograms></code>
: Manually set the mass of the model.
: Manually set the mass of the model.
:{{todo|Presumably this has some use outside physics simulation?}}
; <code>$automass </code>
; <code>$automass </code>
: 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.
: Tells StudioMDL to calculate the mass of the model (based on the volume of the collision SMD and the density/thickness of the material defined in its <!--[[$surfaceprop]] and/or--> [[Prop Data|prop_data]]).
; <code>$concave </code>
; <code>$concave </code>
: By default StudioMDL will generate a single [[Wikipedia:Convex|convex]] hull by bridging any [[Wikipedia:Concave|concavities]] in a collision model SMD. You can create a [[Wikipedia:Concave|concave]] hull by including multiple, overlapping convex meshes in your SMD, and using the $concave command to tell StudioMDL that you want it to preserve concavities.
: By default StudioMDL 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 using the $concave command to tell StudioMDL to 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, 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.
: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 complex collision model.
:{{note|Introduced with the Orange Box. In the Ep1 engine, run studiomdl with <code>-fullcollide</code> when compiling instead.}}
:{{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 <[[int]]|scale></code>
; <code>$inertia <[[int]]|scale></code>

Revision as of 07:28, 28 April 2008

The QC command $collisionmodel is used to embed a non-animated collision mesh in a model, for use in VPhysics calculations.

Tip.pngTip:Use vcollide_wireframe 1 to view collision meshes in-game.
Tip.pngTip:If your model has moving parts that need to collide, including ragdoll limbs, use $collisionjoints.
Warning.pngWarning:Collision meshes should be extremely low-poly in comparison to body meshes, and even lod meshes. See collision mesh.

Usage

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

Options

$mass <float|kilograms>
Manually set the mass of the model.
$automass
Tells StudioMDL to calculate the mass of the model (based on the volume of the collision SMD and the density/thickness of the material defined in its prop_data).
$concave
By default StudioMDL 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 using the $concave command to tell StudioMDL to preserve concavities by using multiple convex pieces. The resulting hull structure is a bit like a Rigid ragdoll.
$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 complex collision model.
Note.pngNote: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 <int|scale>
Inertia scale.
$damping <int|scale>
Linear damping scale.
$rotdamping <int|scale>
Rotational damping scale.
$drag <int|scale>
Scales air resistance.

Example

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

See also