Physics
Physics in SKYREAL VR allows you to apply realistic physical behaviors to your virtual models, including collision handling and gravity simulation. By default, SKYREAL provides an intuitive way to manage physics through the default Physics VR Sub-Menu. You can also configure the physical properties of individual parts to personalize the behavior of your simulation, or use the advanced XDE Workbench for complex multi-physics scenarios.
How to Use
Simple Physics (VR)
Simple physics is available through the default Physics VR Sub-Menu. This menu allows you to choose which parts will be physicalized (i.e., which parts will be affected by collisions and gravity). When you physicalize a part using this menu, both gravity and collisions are activated for that part.
[IMAGE: Default physics menu — original at /pictures/all_v1.13_skyreal_commands_physics_default.png]
If you wish to set advanced physical properties with XDE, refer to the Advanced Physics section below.
Grab Behavior with Physics
When you grab a physicalized part, you can make it collide with other physicalized parts in your simulation. In simple physics mode, all parts are frozen by default. This means only the part you [have] grabbed will move once you release it. The other parts (the ones you [have not] grabbed) will not move, even if they [are] part of a collision. This allows you to easily observe collisions without pushing other parts.
When you drop the part and remain in the Grab command, the part will freeze once it reaches a stable position. If you [exit] the Grab command, the part will freeze even if it [has not] reached a stable position.
Per-Part Physical Properties
You can set specific physical properties for each individual part. These properties include:
-
Physics: Whether or not the part is physicalized (i.e., when active on a part, physics allows it to collide with other parts that also have physics turned on).
-
Gravity: Whether or not the part is subject to gravity.
-
Freeze: Whether or not the part is frozen (when frozen, the part cannot be moved, even if gravity and physics are turned on; it will, however, [still] support collisions with other parts).
To access and modify these properties for each part, you can go to:
-
The Physics tab in the Command menu: select the part you want to configure in the viewport and modify its properties.
-
The State menu's Selection tab: select the part you want to configure in the viewport and modify its properties.
-
The full pie menu in VR: the default VR pie menu only gives you access to the simple physics commands. You can add the more advanced physics commands to your VR pie menu by changing or customizing your Pie Menu.
Below is a custom VR Physics Menu, which gives you access to all of the physics-related commands in SKYREAL VR. You will need to customize your Pie Menu to access some of these commands.
[IMAGE: Full physics menu — original at /pictures/all_v1.12_skyreal_commands_physics_full.png]
Scene-Related Commands
These commands allow you to toggle the global physical properties for your scene.
Toggle Physics
[IMAGE: Toggle Physics icon — original at /icons/T_Physic_Scene_Physic_Check.png]
When used, this command will toggle physics [on or off] in the scene, just like in simple physics mode.
Toggle Gravity
[IMAGE: Toggle Gravity icon — original at /icons/T_Physic_Scene_Gravity_Check.png]
When used, this command will toggle gravity [on or off] in the scene, just like in simple physics mode.
Part-Related Commands
These commands allow you to set the physical properties for individual or groups of parts.
Physics Indicator
[IMAGE: Physics Indicator icon — original at /icons/T_Physic_Parts_Physic_Check.png]
When activated, this command will display all physicalized parts in green and all non-physicalized parts in red. Click on a part to toggle physicalization on it.
Gravity Indicator
[IMAGE: Gravity Indicator icon — original at /icons/T_Physic_Parts_Gravity_Check.png]
When activated, this command will display all parts that are subject to gravity in green and all parts that are not subject to gravity in red. Click on a part to toggle gravitation on it.
Freeze Indicator
[IMAGE: Freeze Indicator icon — original at /icons/T_Physic_Parts_Freeze_Check.png]
When activated, this command will display all frozen parts in green and all non-frozen parts in red. Click on a part to toggle freeze on it.
Simple Physics Video Summary
To fully understand how you can use Simple Physics in SKYREAL VR, please watch the video below, which recaps all of the above explanations:
[VIDEO: Simple Physics tutorial — original at /videos/physics2_tuto_480p.mp4]
Simple Physics Custom Parameters
|
Command |
Parameters |
|---|---|
|
Physic indicator |
- |
|
Gravity indicator |
- |
|
Freeze indicator |
- |
|
Toggle gravity |
- |
|
Toggle physics |
- |
Advanced Physics (XDE)
The Advanced Physics module is based on XDE Physics, the interactive multi-physics simulation engine designed by CEA List (Laboratory for Integration of Systems and Technology), stemming from 20 years of CEA research in the nuclear field.
Integrated into SKYREAL's immersive solutions, it delivers an unparalleled level of realism in virtual and extended reality. By combining the power of Unreal Engine and SKYREAL, the Advanced Physics module meets the demands of high-precision physical simulations for complex industrial projects.
Advanced Physics [supports]:
-
Complex Collision
-
Cable Simulation
-
Kinematic [Joints]
XDE Workbench
The XDE Workbench is the dedicated command for creating advanced XDE physics simulations. It is the place to:
-
Create [kinematic] constraints
-
Specify [flexible] behavior
-
Configure physical properties on parts (mass, collisions, friction, etc.)
Setup
The XDE Workbench command is included with the Extension "Advanced Physics (beta)." To use it, you need to:
-
Add this extension to your experience [through the Marketplace].
-
Activate the XDE Physics module through the experience settings and ensure you have access to an XDE license.
-
If it is the first time you [have added] the extension, you must add the "Xde Workbench" command to your desktop menu.
[IMAGE: XDE Left Menu — original at /pictures/v1.21/leftMenuXDE.png]
Overview
Use Cases with XDE
Complex Collision
-
Complex shape collision
-
Force monitoring
-
Haptic [feedback]
-
Path finding
Cable Simulation (1D Elastic)
-
Mechanical [parameters]
-
Flexible (Lifting sling)
-
Effort distribution
-
Stranded cable
Kinematic [Joints]
-
[Degrees of freedom] with limits
-
Force and damping
-
Hard and soft joints
Controls
-
User grab and [movement]
-
Sequence / Process
User Interface
The user interface of the XDE Workbench is composed of two panels. The left panel is dedicated to listing objects (hierarchy, groups, constraints, cables, assemblies, etc.). The right panel is dedicated to displaying properties.
[IMAGE: XDE Workbench interface — original at /pictures/v1.21/xde-workbench.png]
[IMAGE: XDE Menu — original at /pictures/v1.21/MenuXDE.png]
Groups
Groups can be created from the Hierarchy panel or from the Group panel. In both cases, the group is created from the current selection. The hierarchy can help [you select] multiple parts.
The Group panel shows all created groups. A group behaves exactly [like] a part, so groups share the same properties. [Clicking] on a group displays its properties in the right panel.
[IMAGE: XDE Groups view — original at /pictures/v1.21/xde-groups.png]
[IMAGE: XDE Properties view — original at /pictures/v1.21/xde-properties.png]
Part Properties
These properties are also applicable to groups, which can be considered as parts for physics purposes. A part has the following states:
-
Simulated: If not simulated, the part is not in the physics engine. Therefore, it cannot move, collide, or be attached to [a] constraint or cable.
-
Fixed: The part is fixed to the world, except if the user manipulates it with a Grab method.
-
Selectable: Not directly linked to physics; this is a way to [prevent] the user [from] manipulating the part.
A part [has] the following physical properties:
-
Mass (kg): Can be computed from the default density and the volume (if computed).
-
Collision group: "Part" by default; used to remove collision from certain parts or split [collisions] into multiple groups for optimization [purposes].
-
Contact material: Defines the material type. Contact laws describe the interaction between different materials (friction, reaction).
-
[Ambient] damping: Fluid friction between the part and the [ambient] fluid (air, water, [or other fluids]).
[IMAGE: Groups XDE — original at /pictures/v1.21/GroupsXDE.png]
Constraints
Constraints can be created from the Constraints tab. Once created, you can edit [their] properties in the right panel. Constraints are automatically grouped under "chain" items if the parts they link form a kinematic chain.
[IMAGE: XDE Constraints view — original at /pictures/v1.21/xde-constraints.png]
Creation Process
-
Create a new constraint from the left panel.
-
Choose the type.
-
Set Parent/Child by clicking on the target icon.
-
Fix one of them if necessary by clicking on the anchor icon.
-
Edit advanced properties if needed (this can also be done later).
-
Place the constraint by clicking on the blue button.
Attachment
A constraint must reduce degrees of freedom between two parts. This attachment is done through the "Parent" and "Child" properties.
Rule [for choosing] parent vs. child:
In general: A part can be [a] child [of] only one [constraint].
Exception: This can be done using the compliant property on a constraint. If a part is [the] child of N constraints, you need N-1 constraints with [the] compliant property enabled.
Joint Types
|
Joint Type |
Description |
Properties |
|---|---|---|
|
Hinge |
Only one rotation allowed |
Is Compliant, Angular limit min (degrees), Angular limit max (degrees), Damping, Dry friction |
|
Prismatic |
Only one translation allowed |
Is Compliant, Angular limit min (degrees), Angular limit max (degrees), Damping, Dry friction |
|
Cylindrical |
One rotation and one translation (same axis) allowed |
Is Compliant, Limit min (mm), Limit max (mm), Angular limit min (degrees), Angular limit max (degrees), Damping, Dry friction |
|
Helical |
One rotation and one translation coupled (one degree of freedom [total]) |
Lead (mm): displacement for 360-degree rotation, Limit min (mm), Limit max (mm), Damping, Dry friction |
|
Planar |
Two translations allowed; the constraint placement is an axis [describing] the normal to the plane |
No properties |
|
Ball |
Three rotations allowed; the constraint placement is a point |
Is Compliant, Damping |
|
Cardan |
Two [rotations] allowed; the constraint placement is an axis [describing] the normal to the plane |
No properties |
|
Point on Line |
One translation and three rotations allowed; the constraint placement is an axis [describing] the translation axis |
No properties |
Cables
You can simulate flexible cables with realistic physical behavior. Cables can be created from SKYREAL's cables feature. They support real-time physics for bending, collisions, and deformation, making it easy to design and test cable routing.
Cable Properties
-
Radius: The cable radius.
-
Total Length: The current length of the cable; this can be updated live.
-
Nodes per meter: Controls simulation resolution.
-
Attach Points: Define start, end, and intermediate cable fixation points.
-
Material: Custom physical properties:
-
Density: Impacts cable mass.
-
Young modulus: Impacts flexibility and stiffness.
-
Collision Group: Enables interaction with other physicalized objects.
-
Golden Rules
Groups
-
A group corresponds to a rigid assembly of parts.
-
Groups are not mandatory; XDE objects can interact directly with parts.
-
You can split a rigid assembly into multiple groups to [separate] the Collision Group parameters.
Kinematics
-
A part can be the child of multiple constraints, but one of those constraints must be set as compliant.
-
A compliant constraint [cannot enforce] limits and damping.
-
Collisions are disabled between two parts linked by a constraint.
-
When a part or group is linked to a constraint, it is automatically simulated and takes the default properties.
[Advice]
-
A correct setup of Parent and Child is necessary for the simulation to compute. For [good] readability, you should start from a fixed part (root of the mechanism) and [work] down.
-
Check [that] there is at least one compliant [constraint] per closed loop.
[IMAGE: Kinematics diagram — original at /pictures/v1.21/Kinematics.png]
Tips
-
Start with Simple Physics to familiarize yourself with basic collision and gravity behavior before moving to the XDE Workbench.
-
Use the Physics, Gravity, and Freeze indicators to quickly visualize the state of all parts in your scene.
-
When working with the XDE Workbench, always verify your Parent/Child constraint setup before running the simulation.
-
For complex mechanisms with closed kinematic loops, ensure at least one constraint in each loop is set to compliant.
-
Group related parts into rigid assemblies to simplify constraint management and improve simulation performance.