Go to: Synopsis. Return value. Related. Flags. Python examples.
rigidSolver([autoTolerances=boolean], [bounciness=boolean], [cacheData=boolean], [collide=boolean], [collisionTolerance=float], [contactData=boolean], [create=boolean], [current=boolean], [deleteCache=boolean], [displayCenterOfMass=boolean], [displayConstraint=boolean], [displayVelocity=boolean], [dynamics=boolean], [friction=boolean], [interpenetrate=boolean], [interpenetrationCheck=boolean], [rigidBodies=boolean], [rigidBodyCount=boolean], [showCollision=boolean], [showInterpenetration=boolean], [solverMethod=int], [startTime=float], [state=boolean], [statistics=boolean], [stepSize=float], [velocityVectorScale=float])
Note: Strings representing object names and arguments must be separated by commas. This is not depicted in the synopsis.
rigidSolver is undoable, queryable, and editable.
This command sets the attributes for the rigid solver
None
In query mode, return type is based on queried flag.
constrain, rigidBody
autoTolerances, bounciness, cacheData, collide, collisionTolerance, contactData, create, current, deleteCache, displayCenterOfMass, displayConstraint, displayVelocity, dynamics, friction, interpenetrate, interpenetrationCheck, rigidBodies, rigidBodyCount, showCollision, showInterpenetration, solverMethod, startTime, state, statistics, stepSize, velocityVectorScale
Long name (short name) |
Argument types |
Properties |
|
autoTolerances(at)
|
boolean
|
|
|
Turns the auto tolerance calculation on and off. The auto tolerances
calculation will override the default or user defined values of the
step size and collision tolerance value that is calculated based
on the objects in the scene.
Default: 0 (off)
|
|
bounciness(b)
|
boolean
|
|
|
Turns bounciness on and off for the an the objects in the
simulation.
Default value: on
|
|
cacheData(cd)
|
boolean
|
|
|
Turns the cache on fall all rigid bodies in the system.
Default value: off
|
|
collide(c)
|
boolean
|
|
|
Disallows the interpenetration of the two rigid bodies listed.
Default: Collide is on for all bodies.
|
|
collisionTolerance(ct)
|
float
|
|
|
Sets the collision tolerance. This is the error at which two objects
are considered to have collided.
Range: 0.0005 - 1.000
Default: 0.02
|
|
contactData(ctd)
|
boolean
|
|
|
Turns the contact data information on/off for all rigid bodies.
Default value: off
|
|
create(cr)
|
boolean
|
|
|
Creates a new rigid solver.
|
|
current(cu)
|
boolean
|
|
|
Sets rigid solver as the current solver.
|
|
deleteCache(deleteCache)
|
boolean
|
|
|
Deletes the cache for all rigid bodies in the system.
|
|
displayCenterOfMass(dcm)
|
boolean
|
|
|
Displays the center of mass icon.
Default value: on
|
|
displayConstraint(dc)
|
boolean
|
|
|
Displays the constraint vectors.
Default value: on
|
|
displayVelocity(dv)
|
boolean
|
|
|
Displays the velocity vectors.
Default value: off
|
|
dynamics(d)
|
boolean
|
|
|
Turns dynamics on and off for the an the objects in the simulation.
Default value: on
|
|
friction(f)
|
boolean
|
|
|
Turns friction on and off for the an the objects in the simulation.
Default value: on
|
|
interpenetrate(i)
|
boolean
|
|
|
Allows the two rigid bodies listed to interpenetrate.
Default: interpenetration is off for all bodies.
|
|
interpenetrationCheck(ic)
|
boolean
|
|
|
Checks for interpenetrating rigid bodies in the scene.
|
|
rigidBodies(rb)
|
boolean
|
|
|
Returns a list of rigid bodies in the solver.
|
|
rigidBodyCount(rbc)
|
boolean
|
|
|
Returns the number of rigid bodies in the solver.
|
|
showCollision(sc)
|
boolean
|
|
|
Displays the colliding objects in a different color.
|
|
showInterpenetration(si)
|
boolean
|
|
|
Displays the interpenetrating objects in a different color.
|
|
solverMethod(sm)
|
int
|
|
|
Sets the solver method. The choices are 0 | 1 | 2.
0 = Euler (fastest/least acurate),
1 = Runge-Kutta ( slower/more acurate),
2 = adaptive Runge-Kutta
(slowest/most acurate).
The default is 2 (adaptive Runge-Kutta)
|
|
startTime(stt)
|
float
|
|
|
Sets the start time for the solver.
|
|
state(st)
|
boolean
|
|
|
Turns the rigid solver on or off.
|
|
statistics(sta)
|
boolean
|
|
|
Turns the statistic information on/off for all rigid bodies.
Default value: off
|
|
stepSize(s)
|
float
|
|
|
Sets the solvers step size. This is the maximum size of a single step
the
solver will take at one time.
Range: 0.0004 - 0.100
Default: 0.0333
|
|
velocityVectorScale(vs)
|
float
|
|
|
scales the velocity vector display.
Default value: 1.0
|
|
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
# Set the playback time range to [1, 100]
cmds.playbackOptions(min=1, max=100)
# Create a poly cube named "floor"
cmds.polyCube(w=10, h=0.10, d=10, sx=10, sy=1, sz=10, ax=(0, 1, 0), name='floor')
# Create a poly sphere named "ball", then move it to 0 9 0
cmds.polySphere(r=1, sx=20, sy=20, ax=(0, 1, 0), name='ball')
cmds.move(0, 9.0, 0, r=True)
# Create a new rigid body solver
cmds.rigidSolver(create=True, name='rigidSolver1')
# Set the floor to passive rigid body
cmds.select('floor')
cmds.rigidBody(passive=True, solver='rigidSolver1', name='passiveRigidBody')
# Set the ball to active rigid body
cmds.select('ball')
cmds.rigidBody(active=True, solver='rigidSolver1', name='activeRigidBody')
# Add a gravity field, and connect it to ball
cmds.gravity(pos=(0, 0, 0), m=9.8, dx=0, dy=-1, dz=0, name='gravityField')
cmds.connectDynamic('activeRigidBody', f='gravityField')
# Play
cmds.play(w=True)
# Set the rigid solver to allow the ball to interpenetrate the floor, then replay
cmds.currentTime(1, e=True)
cmds.rigidSolver('passiveRigidBody', 'activeRigidBody', 'rigidSolver1', e=True, interpenetrate=True)
cmds.play(w=True)
# Set the rigid solver to disallow the ball to interpenetrate the floor, replay
cmds.currentTime(1, e=True)
cmds.rigidSolver('passiveRigidBody', 'activeRigidBody', 'rigidSolver1', e=True, collide=True)
cmds.play(w=True)
# Set the rigid solver to turn off the bounciness, replay
cmds.currentTime(1, e=True)
cmds.rigidSolver('rigidSolver1', e=True, bounciness=False)
cmds.play(w=True)