Navigation
API > API/Plugins > API/Plugins/ControlRigDynamics
The structs above here define the individual components that could go into a particle simulation
The structs/functions below here define what components are actually being used for a particular particle simulation (at the moment, one based on skeletal animation/simulation).
In order to turn this into a more general-purpose solver (i.e. one that isn't 100% tailored to our current implementation of control rig dynamics, we will want the simulation state, and the functions that use it, to be more adaptable, and able to specify their own particular structs, constraint types, and order of operations. At that point we can consider using FManagedArrayCollection to store the data, and the Simulate call below can then be supplied with a "recipe" for how the solve should proceed, and what it expects to find. This contains all of the simulation state, customized for a particular simulation setup. Currently, the "user" needs to make and hold this, and then call the functions below in a specific order/way, starting with the Updates, and then calling Simulate.
Each block of arrays must have matching sizes - they're separate so that data will be cached better
| Name | FSimulationState |
| Type | struct |
| Header File | /Engine/Plugins/Experimental/ControlRigDynamics/Source/ControlRigDynamics/Public/RigParticleSimulation.h |
| Include Path | #include "RigParticleSimulation.h" |
Syntax
struct FSimulationState
Variables
Public
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| Colliders | TArray< FShapeCollection > | Particles collide with colliders unless they opt out. | RigParticleSimulation.h | |
| ConeLimitInfos | TArray< FConeLimitInfo > | RigParticleSimulation.h | ||
| ConeLimits | TArray< FConeLimit > | RigParticleSimulation.h | ||
| Confiners | TArray< FShapeCollection > | Confiners share the FShapeCollection layout with Colliders. | RigParticleSimulation.h | |
| ConfinerStrengths | TArray< float > | RigParticleSimulation.h | ||
| HardDistanceConstraintInfos | TArray< FHardDistanceConstraintInfo > | RigParticleSimulation.h | ||
| HardDistanceConstraints | TArray< FHardDistanceConstraint > | RigParticleSimulation.h | ||
| ParticleColliders | TArray< FParticleCollider > | RigParticleSimulation.h | ||
| ParticleConfinement | TArray< FParticleConfinement > | RigParticleSimulation.h | ||
| ParticleInfos | TArray< FParticleInfo > | RigParticleSimulation.h | ||
| ParticleNoCollision | TArray< FParticleNoCollision > | RigParticleSimulation.h | ||
| Particles | TArray< FParticle > | RigParticleSimulation.h | ||
| ParticleTargets | TArray< FParticleTarget > | RigParticleSimulation.h | ||
| ParticleToParticleCollision | TArray< FParticleToParticleCollision > | RigParticleSimulation.h | ||
| PrevStepTime | float | Previous substep time, used for time-corrected Verlet integration at frame boundaries. | RigParticleSimulation.h | |
| SkeletalConstraintInfos | TArray< FHardDistanceConstraintInfo > | RigParticleSimulation.h | ||
| SkeletalConstraints | TArray< FHardDistanceConstraint > | RigParticleSimulation.h | ||
| SoftDistanceConstraintInfos | TArray< FSoftDistanceConstraintInfo > | RigParticleSimulation.h | ||
| SoftDistanceConstraints | TArray< FSoftDistanceConstraint > | RigParticleSimulation.h |