steel:rigid_body_angular_damping | body | 0.05 | 1/s | physxRigidBody:angularDamping | damps the angular velocity of free bodies and floating bases as w *= max(1 - d dt, 0) each step (physxRigidBody:angularDamping, default 0.05, as SolverFeatherstone); joints with a parent body are not damped. Fill the attribute for one value on every body. |
steel:rigid_body_linear_damping | body | 0.0 | 1/s | physxRigidBody:linearDamping | damps the COM velocity of the same bodies as v *= max(1 - d dt, 0) each step (physxRigidBody:linearDamping, default 0). Keep it nonnegative. |
steel:rigid_body_max_linear_velocity | body | float('inf') | m/s | physxRigidBody:maxLinearVelocity | bound the velocity of free bodies (physxRigidBody:maxLinearVelocity and physxRigidBody:maxAngularVelocity, default unbounded). |
steel:rigid_body_max_angular_velocity | body | float('inf') | rad/s | physxRigidBody:maxAngularVelocity | bound the velocity of free bodies (physxRigidBody:maxLinearVelocity and physxRigidBody:maxAngularVelocity, default unbounded). |
steel:min_torsional_patch_radius | shape | 0.0 | m | physxCollision:minTorsionalPatchRadius | is the effective spin radius of the shape's contacts (physxCollision:minTorsionalPatchRadius, default 0, no torsion). PhysX also scales a radius with the penetration depth through physxCollision:torsionalPatchRadius; this solver does not. |
steel:condim | shape | 3 | | newton:steel:condim | (default 3) borrows MuJoCo's 3/4/6 convention; other values raise ValueError. At 4 a shape contributes shape_material_mu_torsional [m] to a spin row bounded by that coefficient times the normal load; at 6 also shape_material_mu_rolling [m] to a rolling pair. A contact takes the larger coefficient of its two shapes, regardless of the other shape's condim. Only contacts between free bodies, and free bodies on static or kinematic geometry, read it. USD reads it only from an explicitly authored newton:steel:condim; the MJCF importer leaves it to SolverMuJoCo's mujoco:condim. Under friction patches, contacts share a patch only if their angular coefficients match. A contact with angular rows takes up to 6 free-body rows instead of 3; raise free_body_constraint_max if constraint_overflow reports dropped rows. The solver reads steel:condim at construction and, on a solver built with the rows, at notify_model_changed with SHAPE_PROPERTIES; a solver built without any condim above 3 ignores the attribute and must be rebuilt to gain the rows. A negative or non-finite coefficient that a shape's condim enables raises ValueError at the same points. |
steel:adhesion | shape | 0.0 | N | newton:steel:adhesion MJCF adhesion | (default 0) is the pull of each contact point of the shape, MuJoCo's geom adhesion, which the MJCF importer reads. A contact pulls with the sum of its two shapes' values while it is within the pair's gap, so a gap makes shapes attract at a distance. The solver applies the pull A dt to the contact's normal row and solves its impulse in the unchanged contact cone, so the net normal impulse can reach -A dt, friction is bounded by mu times the net normal impulse plus A dt, and resting penetration is unchanged. Pull-off grows with the number of contact points of the pair. Within the gap, friction stays bounded by the solved impulse, which is zero until the pull would close the gap within the step (MuJoCo removes friction there). contact_f and body_parent_f report the net force. The solver reads the values every step, so writing zero releases a contact and writing the value engages it again, also between graph replays (a captured step keeps the array it was captured with, so recapture after replacing it); a solver built without a positive value ignores the attribute and must be rebuilt to gain adhesion. Construction and notify_model_changed with SHAPE_PROPERTIES raise ValueError for a negative or non-finite value. Adhesion keeps the dense mass factors and raises NotImplementedError with enable_sleeping, contact_compliance, contact_regularization > 0 and contact torsion. Experimental.steel:adhesion, its USD name newton:steel:adhesion and its contact law may change without the normal deprecation period. |
steel:rigid_body_max_depenetration_velocity | body | float('inf') | m/s | physxRigidBody:maxDepenetrationVelocity | bounds the contact correction velocity of free bodies (physxRigidBody:maxDepenetrationVelocity, default unbounded). |
steel:joint_friction_load_coefficient | joint dof | 0.0 | | newton:steel:jointFrictionLoadCoefficient | adds c (|F| + |T|) to the DOF's joint_friction (default 0). F [N] and T [N·m] are the force and the torque about the child body's center of mass that the joint transmits to its child's subtree under the step's free dynamics: gravity, applied body and joint forces, velocity-dependent terms and the resulting accelerations, before contacts, limits, friction and drive_mode="rows" drives act. T keeps its component about the joint axis, so a joint's own applied effort raises its friction. This is the joint friction law of PhysX articulations before PhysX 5.6, and the sum mixes units as it does there. USD reads it only from an explicitly authored newton:steel:jointFrictionLoadCoefficient, not from physxJoint:jointFriction, because the rows interact with drives differently from PhysX. The earlier spelling newton:steel:joint_friction_load_coefficient is read with a NewtonDeprecationWarning when the current name is not authored. Experimental.steel:joint_friction_load_coefficient, its USD name newton:steel:jointFrictionLoadCoefficient and its load law may change without the normal deprecation period. |