Go to: Synopsis. Return value. Related. Flags. Python examples.
collision(
[objects]
, [friction=float], [name=string], [resilience=float])
Note: Strings representing object names and arguments must be separated by commas. This is not depicted in the synopsis.
collision is undoable, queryable, and editable.
The collision command causes particles to collide with geometry.
It also allows you to specify values for the surface properties
(friction and resilience) of the collision. These values are stored
in the geoConnector node for the geometry object. Unlike earlier versions
of Maya, there is no separate "collision node."
If a soft object is in the selection list, the collision command assumes
that you want to make it a collider. In order to make the soft object
collide with something use, use connectDynamic -c. The collision menu
option sorts this out using the lead object rule and issues the necessary
commands.
On creation, this command returns a string array of the geometry names that were setup for particle collision.
When the command is used to query information, there are several possible return types.
These include:
- If the -resilience or -friction flag is passed on the command line
and a single collision geometry is either selected or on the command
line, then resilience or friction value for that collision geometry is
returned as a single float value.
- If the -resilience or -friction flag is passed on the command
line and a single collision geometry and a single particle object are
either selected or on the command line, then two results might occur.
If the particle object is not set up to collide with the geometry,
then an error is displayed stating that. If the objects are set up to
collide with each other, then the resilience or friction value that
the particle object is using for collisions with the geometry is
returned as a single float value. This can be different than
the geometry's resilience and friction, because the user may break the
connection from the geometry's geoConnector node's resilience or
friction to the particle, and set a different value in the particle's
collisionResilience, collisionFriction or collisionOffset attribute
that is used for that geometry. This allows the user to make each
particle respond to the same surface differently.
- If neither flag is pass on the command line and a single geometry
and single particle object are either selected or on the command line,
then a single integer value of 1 is returned if the objects are
set up to collide with each other, and 0 is returned if they are
not.
- Lastly, if no flags are passed on the command line and a single
particle object is either selected or on the command line, then a
string array with the names of all geometries that the particle
object will collide against and the multiIndex that the geometries are
connected to is returned. The array is formatted as follows:
pPlaneShape1:0 pPlaneShape2:2 nurbsSphereShape1:3
...where the number following the ":" is the multiIndex.
string[] | Geometry names that were setup for particle collision. |
In query mode, return type is based on queried flag.
event, particle
friction, name, resilience
Long name (short name) |
Argument types |
Properties |
|
friction(f)
|
float
|
|
|
Friction of the surface. This is the amount of the colliding particle's
velocity parallel to the surface which is removed when the particle collides.
A value of 0 will mean that no tangential velocity is lost, while a value
of 1 will cause the particle to reflect straight along the normal of
the surface.
|
|
name(n)
|
string
|
|
|
This flag is obsolete. In maya 2.0, there is no longer a separate "collision node,"
thus there is nothing to name. See the collision documentation. This flag is
included only to allow scripts written with older versions of Maya to run.
It will give you a warning message but will not do anything.
|
|
resilience(r)
|
float
|
|
|
Resilience of the surface. This is the amount of the colliding particle's
velocity reflected along the normal of the surface. A value of 1 will
give perfect reflection, while a value of 0 will have no reflection along
the normal of the surface.
|
|
Flag can appear in Create mode of command
|
Flag can appear in Edit mode of command
|
Flag can appear in Query mode of command
|
Flag can have multiple arguments, passed either as a tuple or a list.
|
import maya.cmds as cmds
cmds.collision( 'nurbsSphere1', 'particle1', r=.75, f=.1 )
# Causes particles of particle1 to collide with nurbsSphere1,
# and sets a resilience value of 0.75 and a friction value of 0.1
# for the surface.
cmds.collision( 'nurbsSphere1', q=True, f=1 )
# Returns the friction value stored in the geoConnector for nurbsSphere1.
cmds.collision( 'particleShape1', 'nurbsSphere1', q=True, f=1 )
# Returns the friction value that particleShape1 is using for collisions
# against nurbsSphere1. This may be the same as the friction stored in
# nurbsSphere1's geoConnector. Or, if the user broke that connection,
# then it is whatever value is in the particleShape1's collisionFriction
# attribute that is used for collision with nurbsSphere1.
cmds.collision( 'nurbsSphere1', 'particleShape1', q=True )
# Returns whether or not particleShape1 is checking for collisions
# against nurbsSphere1.
cmds.collision( 'particleShape1', q=True )
# Returns all of the geometries that particleShape1 is colliding with.