$collisionjoints: Difference between revisions
Jump to navigation
Jump to search
Tip:Use
Tip:If your model has no moving parts that need to collide, use
Note:Collision meshes should be extremely low-poly in comparison to reference meshes, and even lod meshes. See collision mesh.
Note:
Confirm:There can be up to 25 collision joints in a ragdoll.
TomEdwards (talk | contribs) (corrections and cleaning) |
Shawnolson (talk | contribs) (→Options: Added confirm notice for the All item... I've found the $masscenter causing a compile error when using $collisionjoints) |
||
Line 24: | Line 24: | ||
; All <code>[[$collisionmodel]]</code> options, ''except <code>$concave</code>'' | ; All <code>[[$collisionmodel]]</code> options, ''except <code>$concave</code>'' | ||
: Each individual bone's collision mesh is convex. Only concavity ''between'' bones is permitted. | : Each individual bone's collision mesh is convex. Only concavity ''between'' bones is permitted. | ||
: {{confirm|Is $masscenter allowed?}} | |||
; $rootbone <[[string]]|bone> | ; $rootbone <[[string]]|bone> | ||
: Overrides the SMD's root bone. | : Overrides the SMD's root bone. |
Revision as of 11:48, 14 February 2011
The QC command $collisionjoints
is used to define a jointed collision model for a ragdoll. A jointed collision model is used by VPhysics to detect collisions and animate the model's Skeleton accordingly.
Jointed collision models are most often used for ragdolls, but also work for animated movement.

vcollide_wireframe 1
to view collision meshes in-game.
$collisionmodel
.


Syntax
$collisionjoints <collision mesh SMD> { <options> }
Options
- All
$collisionmodel
options, except$concave
- Each individual bone's collision mesh is convex. Only concavity between bones is permitted.
Confirm:Is $masscenter allowed?
- $rootbone <string|bone>
- Overrides the SMD's root bone.
- Todo: Purpose.
- $jointskip <string|bone>
- Eliminates a joint in the skeleton that you don't want to use in collisions.
$jointmerge <string|bone1> <string|bone2>
- Merges the vertex assignments for two joints.
$jointconstrain <string|bone> <axis> <allow_option> <min_angle> <max_angle> <friction>
- Limits of the a bone's movement relative to its parent bone. See $jointconstrain for a full description.
$jointinertia <string|bone> <float|scale>
- Per-bone
$inertia
. $jointdamping <string|bone> <float|scale>
- Per-bone
$damping
. $jointrotdamping <string|bone> <float|scale>
- Per-bone
$rotdamping
. $jointmassbias <string|bone> <float|bias>
- Mass is automatically distributed by volume, this lets you bias it per-bone.
- Todo: Difference from a $weightlist.
$noselfcollisions
- Disables collisions between bones in the same collision model for performance.
Warning:Results in arms clipping through torsos and other weirdness if used improperly!
$jointcollide <string|bone1> <string|bone2>
- If any
$jointcollide
pairs are specified, only those joints collide with each other. $animatedfriction <float|FrictionTimeIn> <float|FrictionTimeOut> <float|FrictionTimeHold> <float|MinAnimatedFriction> <float|MaxAnimatedFriction>
- Used to animate the amount of friction on joints over time.
Example
$collisionjoints "bip01_phys.smd"
{
$mass 115.0
$inertia 2.00
$damping 0.01
$rotdamping 0.40
$rootbone "bip01_pelvis"
$jointmerge "bip01_pelvis" "bip01_spine"
$jointmassbias "bip01_l_arm2" 2.00
$jointconstrain "bip01_l_arm2" x limit 0.00 0.00 0.00
$jointconstrain "bip01_l_arm2" y limit 0.00 0.00 0.00
$jointconstrain "bip01_l_arm2" z limit -120.00 4.00 0.20
$jointrotdamping "bip01_head" 5.00
$jointconstrain "bip01_head" x limit -20.00 20.00 0.00
$jointconstrain "bip01_head" y limit -25.00 25.00 0.04
$jointconstrain "bip01_head" z limit -13.00 30.00 0.04
}