Skip to content

rdConstraint

image

Reference sheet for the rdConstraint node type.

from maya import cmds
cmds.createNode("rdConstraint")


Attributes

Attribute Description Keyable Type Default
.angularDriveDamping Angular damping of the drive. ✔️ float 1000.0
.angularDriveStiffness Angular stiffness of the drive. ✔️ float 10000.0
.angularLimit Amount of rotational offset before the limit kicks in. angle3 0.0
0.0
0.0
.angularLimitDamping Damping of contacts with the limit. It is an opposing force to whatever direction a contact is applied. A low value produces a springy appearance, whereas a high value resists any and all motion. ✔️ float 10000.0
.angularLimitStiffness Stiffness of contacts with the angular limit. A low value makes limits appear soft. Values are relative the mass of your rigid and the amount of force being applied by contacts and other constraints. But with a mass of 1.0 and under normal gravity, the default value should produce a somewhat hard response. ✔️ float 1000000.0
.childFrame Transform relative the child that a parent is attached. The inverse of the parentFrame, this attribute establishes a point and orientation within the child that the parent rigid attaches to. matrix identity
.childRigid One of two constrained rigids, the 'child'. int -1
.currentState The scene pulls this attribute on every frame to update itself on attributes that can be animated, such as the linear and angular damping. int 0
.currentTime This attribute is meant to be dirtied whenever time changes; it's how a constraint keeps an eye on what Maya is up to. The actual value isn't used. time 0.0
.disableCollision Disable collision between constrained rigids. This is generally desirable, as connected rigids are typically limbs or a character, e.g. upper and lower arm, and you generally want some overlap between these rigids. However unless you disable collisions, the overlap would cause a conflict in the solver, where it wouldn't know whether to keep them connected or split them apart due to their contact. For objects without overlap, this attribute is better left off. bool True
.drawChildFrame Visualise the childFrame attribute. bool True
.drawConnection Visualise the connection between the parentRigid and childRigid. bool True
.drawDrive Visualise the drive. bool True
.drawLimit Visualise the limit of this constraint. bool True
.drawParentFrame Visualise the parentFrame attribute. bool True
.drawScale The scale at which to visualise things. double 1.0
.driveEnabled Whether or not to try and follow the driveMatrix attribute. Drives (a.k.a. Guides) are used to follow an input animation by applying forces relative the delta between your animation and the simulation. The further your animation is from the current state of the simulation, the stronger the force. It's a spring-like force. ✔️ bool False
.driveMatrix A target position and orientation for the childRigid, relative the parentFrame. The constraint can apply a spring-like force to both parent and child to try and match this matrix as though the childRigid was an actual child of the parentRigid. ✔️ matrix identity
.driveSpringType Whether to use force or acceleration to compute the drive. Acceleration takes masses of connected rigids into account and is generally easier to tune. enum 1
.driveStrength Multipler to linearDriveStiffness, linearDriveDamping, angularDriveStiffness and angularDriveDamping. This is a convenience attribute to simplify manipulation (and animation) of the overall drive behaviour. The same result can be achieved by manually multiplying these values. The equation is strength * strength * stiffness and the same for damping. ✔️ float 1.0
.limitEnabled Whether any of the specified limits are enabled or not. Think of this as a convenience override for linear (position) and angular (rotation) limits. You can achieve the same effect by setting each limit to a value of 0. ✔️ bool False
.limitStrength Multiplier for the linearLimitStiffness, linearLimitDamping, angularLimitStiffness and angularLimitDamping attributes. ✔️ float 1.0
.linearDriveDamping Linear damping of the drive. A high value produces a slimy, slow-moving motion. ✔️ float 100.0
.linearDriveStiffness Linear stiffness of the drive. If you think of the drive as a spring, then the stiffness determines the thickness of the coil of that spring. A thick coil yields a fast, springy motion. ✔️ float 1000.0
.linearLimit Amount of positional offset before the limit kicks in. distance3 0.0
0.0
0.0
.linearLimitDamping Damping factor for contacts with the limit. ✔️ float 10000.0
.linearLimitStiffness Stiffness of contacts with linear limit. Whenever the linear limit is hit, this attribute determines how soft/hard to response should be. A low value (e.g. 10) yields a soft appearance, whereas a high (e.g. 1'000'000) yields a metal-versus-marble contact. ✔️ float 1000000.0
.nextState This attribute is pulled whenever the constraint needs to fetch information from the constraint. int 0
.parentFrame Transform relative the parent that a child is attached. If the child rigid was a child of the parent, then this transform represents a point under the parent where the child is connected. The driveMatrix attribute is relative this frame. If they are equal, the rigid is driven towards the restMatrix. matrix identity
.parentRigid One of two constrained rigids, the 'parent'. int -1
.ragdollId Internal identifier for this node in the solver. int 0
.startState The scene pulls on this attribute at the start frame to set-up the initial state of the constraint, including its parent and child frames and drive attributes. int 0
.type Internal attribute used to record which type this constraint was originally intended as. Because all 'types' are really just an rdConstraint with various values set, there is no specific type. This is merely intended as a hint for scripts and tools to use. enum 0
.version Version of Ragdoll used to create this node. Saved with scene to keep track of what version of Ragdoll the node was created with. int 0

Last update: 2021-01-17