This document describes the demos in the Samples application (currently compiles only under Windows). When you run the samples application the application will initially start paused, press P to unpause it. The menu is accessible through pressing ESC, it has the following options:
- Select Test - This allows you to select between the different types of physics tests
- Test Settings - Some tests will allow extra configuration, if not this setting will be greyed out
- Restart Test (R) - When selecting this, the test will go back to its initial state
- Run All Tests - This will run every tests for 10 seconds before proceeding to the next. This is a good way of visually inspecting the simulation before commiting a code change.
- Next Test (N) - When running all tests, this option can be used to quickly skip to the next test.
- Physics Settings - This menu contains all physics configuration.
- Drawing Options - This menu shows all the options for drawing the internal state of the physics simulation.
- Mouse Probe - This allows you to switch between various collision detection modes to test the different collision detection algorithms
- Shoot Object - A sample application is not complete without being able to shoot some balls at the simulation (B key). This menu allows additional settings.
- Help - A quick help text.
General Controls
- Use the Mouse and WSAD keys to move around, hold Shift to speed up and Ctrl to slow down
- Hold the Space key to pick up an object in the center of the screen and move it around with the mouse and WSAD.
- P - Pause / unpause simulation.
- O - Single step the simulation.
- , - Step back (only when Physics Settings / Record State for Playback is on).
- . - Step forward (only when Physics Settings / Record State for Playback is on).
- Shift + , - Play reverse (only when Physics Settings / Record State for Playback is on).
- Shift + . - Replay forward (only when Physics Settings / Record State for Playback is on).
- T - Dump frame timing information to profile_*.html (when JPH_PROFILE_ENABLED defined).
The Tests
Note that you can watch all movies below in a single YouTube playlist.
Vehicles
This categories shows vehicles created through the VehicleConstraint. These vehicles use ray- or shape casts to detect collision with the ground and simulate a vehicle with an engine, gearbox, differentials and suspension.
|
A wheeled vehicle. |
|
Demonstrates a tracked vehicle with a turret constrained to the main body with hinge constraints. |
|
Demonstrates a motor cycle. |
|
Applying a custom gravity override to a vehicle to create weird gameplay. |
Rig (Ragdolls)
This category demonstrates how ragdolls can be made and controlled using keyframing or motors.
|
A ragdoll set to kinematic mode (infinite mass, simulated using velocities only) interacting with dynamic objects. |
|
Demonstrating a humanoid ragdoll driven by motors which are trying to match a sprint animation in local space (green sticks). |
|
An animation is played back on a high detail skeleton ('Animation') and then mapped onto a low detail ragdoll skeleton ('Reversed Mapped'). This animation is used to drive the motors of the ragdoll. The resulting pose is mapped back to the high detail skeleton ('Mapped'). Note that the skeletons are drawn offset to make them clearer.. |
|
160 Ragdolls being dropped on a scene from Horizon Zero Dawn. |
|
160 Ragdolls dropping on a pile, simulated using the Jolt Physics engine. Yellow means the ragdoll is simulated, red means the simulation is sleeping. |
|
A pile of ragdolls that are driven to a specific animated death pose. This gives the ragdolls 'stiffness'. |
Soft Body
|
Demonstrates Soft Body physics as simulated by Jolt Physics. Soft body physics can be used for things like cloth and soft balls. |
|
Demonstrates the use of soft body contact listeners. You can use these to affect the collision response between a soft body and a rigid body by e.g. artificially making the mass of one of the two higher so that the other is less affected by the collision. Finally you can also turn a contact into a sensor contact which means you get the contact points but there will not be any collision response.. |
|
This video shows the effect of bend constraints on a wrinkled cloth. The left most patch has no constraints to preserve the wrinkles, the middle uses distance constrains ('sticks') to preserve the wrinkles and the last one uses dihedral angle constraints to preserve the angle between two triangles on their shared edge. |
|
This demo shows a soft body that is connected to a skinned mesh via distance constraints. Each simulated vertex can deviate from its skinned position by a fixed length. The green lines indicate the animated joints of the skinned mesh. |
Character
This category shows how you can simulate a (humanoid) character using a capsule.
|
A demonstration of a game Character. Demonstrates moving, sliding against the environment, crouching and jumping. |
Water
This category shows how you can implement a water simulation in your game.
|
Water buoyancy and friction simulation. Demonstrates how various shapes and compound shapes behave in the water. The right most object has a lowered center of mass. |
Constraints
This category shows the various constraints that are supported. Constraints connect two or more bodies together and limit the relative movement.
|
Showing the path constraint in action. |
|
Demonstrates a chain of swing-twist constraints (usable for humanoid shoulders). The green cones show the swing limit and the pink pie shows the twist limit. |
|
Demonstrates a gear constraint. Note that the gears can be placed at any relative angle of each other, so you could e.g. create a bevel or worm gear. |
|
Demonstrates a rack and pinion constraint. |
|
Shows two boxes connected through a pulley constraint. In this case the constraint is configured as a block and tackle with and advantage of 2: the right block moves 2x as slow as the left block. |
General
This category contains general simulation tests. It demonstrates things like friction, restitution, damping, modifying gravity and continuous collision detection. Some highlights:
|
A YouTube video showing stability of a pile of boxes. |
|
Demonstrates objects sliding along a polygon mesh. Internal mesh edges are ignored and do not cause objects to bounce off. |
|
1000 random shapes in a funnel. |
|
We will automatically split up the simulation in islands of non-interacting bodies and distribute the work across multiple threads. Each island has its own color. |
|
Shows the difference between compiling Jolt Physics in single precision and double precision (define JPH_DOUBLE_PRECISION). |
|
A demo of setting the surface velocity of a body to create a conveyor belt. The boxes have decreasing friction from front to back (last one has zero friction so slowly slides down the ramp). |
Shapes & Scaled Shapes
These categories show off all of the supported shapes and how they can be scaled at run-time.
|
A height field shape using various scales in Jolt Physics: Uniform, Non uniform, Mirrored, Inside out |