Advanced PhysX Parameters
In the physX Dynamics Operator property editor, there are Advanced parameters available for those who are using the physX engine at an advanced level. For example, you may need these parameters for when you’re developing games, so that you can have the same settings here as in your game engine.
To open the physX Dynamics Operator property editor, choose Modify > Rigid Body > Edit Simulation Properties from the Simulate toolbar.
In the explorer, open the Operators folder for the current rigid body simulation Environment and click the Dynamics Operator icon.
|Table of contents|
You can activate the built-in gravity of the physX dynamics engine. This is different from the gravity force found within XSI.
- Amplitude: Strength of the gravity force. The amplitude is the acceleration due to the gravity vector. If your scene’s Softimage units are set to meters, this equals to about a 9.8 magnitude on earth. The force that is applied at each rigid body’s center of mass is this acceleration vector multiplied by the rigid body’s mass.
When a rigid body does not move for a period of time, it is assumed that it will remain immobile until an external force changes its state. This state of immobility is called sleeping. Sleeping means that the rigid body is not being simulated, which saves calculation time.
The simplest method used to determine if a rigid body can be sleeping is to set its linear and angular velocity thresholds. For a rigid body to be sleeping, it must have a linear velocity lower than its Sleeping > Squared Linear Velocity Threshold value and an angular velocity lower than its Sleeping > Squared Angular Velocity Threshold.
- Squared Linear Velocity Threshold: The default linear velocity, squared, below which the rigid bodies start going to sleep. Range is 0 to infinity.
- Squared Angular Velocity Threshold: The default angular velocity, squared, below which the rigid bodies start going to sleep. Range is 0 to infinity.
Continuous collision detection is useful for fast moving objects. With traditional collision detection, fast moving objects can pass through other objects during a single time step. Imagine a bullet travelling towards a thin metal plate: in the first time step it would be on one side, and in the next time step it would be on the other. The physX engine would never detect a collision, so it would not know that it needs to change the motion of the bullet.
To deal with this problem, you can select the Continuous Collision option. Instead of testing for collision at discrete points, it tests an extruded volume which represents the object’s motion during the whole time step. If a collision is detected, the time of impact can be computed and the object’s motion is modified appropriately.
- Continuous Collision: Activates continuous collision detection calculations which are useful for collisions with fast-moving objects.
- Bounce Threshold: Sets the threshold value for when a rigid body will not bounce. All rigid bodies with a relative velocity below this value will not bounce.
The range is -infinity to 0. This value is negative because the velocity is a relative velocity, which is basically a closing velocity between the rigid body and the object with which it is colliding.
This parameter is useful for stopping objects that are prone to bouncing repeatedly until there is little visible or physical result from their bouncing, like a basketball vibrating on the ground after it has been dropped. These are usually high-restitution objects.
When you stack rigid bodies, the physX engine deals with inaccuracy by letting them slightly interpenetrate each other. You can determine the amount of interpenetration that is permitted at a scene level by setting the Skin Width value. Too much interpenetration can make a collision look incorrect, but not enough interpenetration can be worse: objects may repel each other to the point where they separate, and then fall back down on each other in a subsequent time frame. This leads to jittering.
The amount of interpenetration that works best in your scene depends on many things, such as the size of the objects and the stability of the simulation. The stability is usually determined by the gravity, as well as the time step size: lower gravity and smaller time steps typically result in more stable simulations.
- Skin Width: Specifies how much rigid bodies can interpenetrate as opposed to how much they are separated. Object penetration depth directly affects how reactive objects are to collisions, which also affects how easily they are awakened from their sleeping state.
Global Body Controls
You can scale the magnitude of static and dynamic friction of all the rigid bodies in your scene at once using the Dynamic Friction Scaling and Static Friction Scaling parameters.
Static friction is the force that opposes a rigid body from changing its state from resting to motion. For instance, if you place a ball on an sloped plane, the static friction determines how easily the ball begins its initial slide or roll down the plane. Static friction has little or no effect after an object is moving.
Dynamic friction (also known as kinetic friciton) is how much a moving rigid body resists movement against another rigid body’s surface. This is the force that tends to slow down a rigid body in motion. This force is generally proportional to any force that has been applied to the rigid body, so you can think of it as the ratio of frictional force to the applied force on the rigid body.
Setting these two parameters halves the static and dynamic friction values on all materials in the simulation (the default for both parameters is 1). An example use for this scaling might be in a racing game: you can gradually make all rigid bodies slippery if conditions become wet or icy, then gradually return them to their default values as conditions return to normal.
- Dynamic Friction Scaling: Scales the magnitude of the dynamic friction applied to all rigid bodies in the scene. Range is 0 to infinity.
- Static Friction Scaling: Scales the magnitude of the static friction applied to all rigid bodies in the scene. Range is 0 to infinity.
- Maximum Angular Velocity: Sets the maximum angular velocity that is applied to all rigid bodies in the scene.