Navigation
API > API/Runtime > API/Runtime/Chaos
| Name | FRigidClustering |
| Type | class |
| Header File | /Engine/Source/Runtime/Experimental/Chaos/Public/Chaos/PBDRigidClustering.h |
| Include Path | #include "Chaos/PBDRigidClustering.h" |
Syntax
class FRigidClustering
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FRigidClustering
(
FRigidEvolution& InEvolution, |
Chaos/PBDRigidClustering.h |
Destructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
~FRigidClustering() |
Chaos/PBDRigidClustering.h |
Structs
| Name | Remarks |
|---|---|
| FMomentumRestoringData |
Typedefs
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| FClusterHandle | FPBDRigidClusteredParticleHandle * | Chaos/PBDRigidClustering.h | |
| FClusterMap | TMap< FClusterHandle, FRigidHandleArray > | Chaos/PBDRigidClustering.h | |
| FParticleIsland | TArray< FPBDRigidParticleHandle * > | Chaos/PBDRigidClustering.h | |
| FRigidEvolution | FPBDRigidsEvolutionGBF | Chaos/PBDRigidClustering.h | |
| FRigidHandle | FPBDRigidParticleHandle * | Chaos/PBDRigidClustering.h | |
| FRigidHandleArray | TArray< FRigidHandle > | Chaos/PBDRigidClustering.h | |
| FVisitorFunction | TFunction< void(FRigidClustering &, FRigidHandle)> | Chaos/PBDRigidClustering.h |
Variables
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| AdvanceCount | uint32 | Cluster release stats for debugging with CVar p.Chaos.Clustering.DumpClusterAndReleaseStats. | Chaos/PBDRigidClustering.h | |
| ClusterUnionManager | FClusterUnionManager | The old cluster union map has been replaced by the cluster union manager to allow for more dynamic behavior of adding and removing particles from a cluster instead of being just restricted to unioning particles together at construction. | Chaos/PBDRigidClustering.h | |
| CrumbledSinceLastUpdate | TSet< FPBDRigidClusteredParticleHandle * > | Chaos/PBDRigidClustering.h | ||
| DestructionSettings | FChaosSolverDestructionSettings | Chaos/PBDRigidClustering.h | ||
| DoGenerateBreakingData | bool | Breaking data. | Chaos/PBDRigidClustering.h | |
| EmptyInternalClustersPerProxy | TMap< IPhysicsProxyBase *, TArray< FPBDRigidClusteredParticleHandle * > > | Chaos/PBDRigidClustering.h | ||
| FrameProcessedClusters | uint32 | Chaos/PBDRigidClustering.h | ||
| FrameReleasedChildren | uint32 | Chaos/PBDRigidClustering.h | ||
| MAllClusterBreakings | TArray< FBreakingData > | Chaos/PBDRigidClustering.h | ||
| MAllClusterCrumblings | TArray< FCrumblingData > | Chaos/PBDRigidClustering.h | ||
| MChildren | FClusterMap | Cluster data. | Chaos/PBDRigidClustering.h | |
| MClusterConnectionFactor | FReal | Chaos/PBDRigidClustering.h | ||
| MClusterUnionConnectionType | FClusterCreationParameters::EConnectionMethod | Chaos/PBDRigidClustering.h | ||
| MCollisionImpulseArrayDirty | bool | Collision Impulses. | Chaos/PBDRigidClustering.h | |
| MEvolution | FRigidEvolution & | Chaos/PBDRigidClustering.h | ||
| MomentumRestoringDataByParticle | TMap< FPBDRigidParticleHandle *, FMomentumRestoringData > | This map stores the momentum information a particle had when colliding with a breaking clustered particle this allow the colliding particle to keep going if the clustered particle break depsite the fact that the collision constraint resolution stopped it | Chaos/PBDRigidClustering.h | |
| MParticles | FPBDRigidClusteredParticles & | Chaos/PBDRigidClustering.h | ||
| StrainModifiers | const TArray< ISimCallbackObject * > * | Sim callback objects which implement cluster modification steps. | Chaos/PBDRigidClustering.h | |
| TopLevelClusterParents | TSet< Chaos::FPBDRigidClusteredParticleHandle * > | Chaos/PBDRigidClustering.h | ||
| TopLevelClusterParentsStrained | TMap< Chaos::FPBDRigidClusteredParticleHandle *, int64 > | Chaos/PBDRigidClustering.h | ||
| TotalProcessedClusters | uint32 | Chaos/PBDRigidClustering.h | ||
| TotalReleasedChildren | uint32 | Chaos/PBDRigidClustering.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
void AddParticlesToCluster
(
FPBDRigidClusteredParticleHandle* Cluster, |
Manually add a set of particles to a cluster after the cluster has already been created. | Chaos/PBDRigidClustering.h | |
void AdvanceClustering
(
const FReal dt, |
Operational AdvanceClustering Advance the cluster forward in time; ... | Chaos/PBDRigidClustering.h | |
void ApplySettings
(
const FChaosSolverConfiguration& Settings |
Chaos/PBDRigidClustering.h | ||
bool BreakCluster
(
FPBDRigidClusteredParticleHandle* ClusteredParticle |
BreakCluster Breaks a cluster (internal or not) by applying max external strain to all its children | Chaos/PBDRigidClustering.h | |
bool BreakClustersByProxy
(
const IPhysicsProxyBase* Proxy |
BreakClustersByProxy Breaks clusters (internal or not) own by a specific proxy by applying max external strain to all its children | Chaos/PBDRigidClustering.h | |
bool BreakingModel
(
TArrayView< FPBDRigidClusteredParticleHandle* > InParticles |
Chaos/PBDRigidClustering.h | ||
void BreakingModel
(
TArray< FPBDRigidClusteredParticleHandle* >& InParticles |
Chaos/PBDRigidClustering.h | ||
void BreakingModel () |
BreakingModel Implements the promotion breaking model, where strain impulses are summed onto the cluster body, and released if greater than the encoded strain. | Chaos/PBDRigidClustering.h | |
void BuildConvexOptimizer
(
FPBDRigidClusteredParticleHandle* Particle |
BuildConvexOptimizer Create the convex optimizer unique ptr and loop over the particle geometry to simplify all the convexes within the hierarchy | Chaos/PBDRigidClustering.h | |
void CleanupInternalClustersForProxies
(
TArrayView< IPhysicsProxyBase* > Proxies |
CleanupInternalClustersForProxies For a given set of physics proxies, cleanup any tracked internal clusters that we've marked as being empty. | Chaos/PBDRigidClustering.h | |
void ClearConnectionGraph
(
FPBDRigidClusteredParticleHandle* Parent |
Chaos/PBDRigidClustering.h | ||
Chaos::FPBDRigidClusteredParticleHandle * CreateClusterParticle
(
const int32 ClusterGroupIndex, |
Initialization Initialize a cluster with the specified children. | Chaos/PBDRigidClustering.h | |
Chaos::FPBDRigidClusteredParticleHandle * CreateClusterParticle
(
const int32 ClusterGroupIndex, |
Chaos/PBDRigidClustering.h | ||
Chaos::FPBDRigidClusteredParticleHandle * CreateClusterParticleFromClusterChildren
(
TArray< FPBDRigidParticleHandle* >&& Children, |
CreateClusterParticleFromClusterChildren Children : Rigid body ID to include in the cluster. | Chaos/PBDRigidClustering.h | |
void CreateNodeConnection
(
ParticleHandleTypeA* A, |
Chaos/PBDRigidClustering.h | ||
void CreateNodeConnection
(
FPBDRigidClusteredParticleHandle* A, |
Chaos/PBDRigidClustering.h | ||
TSet< FPBDRigidParticleHandle * > DeactivateClusterParticle
(
FPBDRigidClusteredParticleHandle* ClusteredParticle |
Releasing DeactivateClusterParticle Release all the particles within the cluster particle | Chaos/PBDRigidClustering.h | |
FPBDRigidClusteredParticleHandle * DestroyClusterParticle
(
FPBDRigidClusteredParticleHandle* ClusteredParticle, |
DestroyClusterParticle Disable the cluster particle and remove from all internal clustering structures. | Chaos/PBDRigidClustering.h | |
void DisableCluster
(
FPBDRigidClusteredParticleHandle* ClusteredParticle |
Chaos/PBDRigidClustering.h | ||
void DisableParticle
(
FPBDRigidParticleHandle* ParticleToDisable, |
Disable a particle and make sure the related internal structure are up to date | Chaos/PBDRigidClustering.h | |
TArray< FPBDRigidParticleHandle * > FindChildrenWithinRadius
(
const FPBDRigidClusteredParticleHandle* ClusteredParticle, |
FindChildrenWithinRadius Find the children of an active cluster from a world position and a radius current implementation will pick the closest based on the distance from the center future implementation may expose option for more precise queries if bAlwaysReturnClosest is checked this will always return the closest from the location even if the radius does not encompass any center of mass | Chaos/PBDRigidClustering.h | |
FPBDRigidParticleHandle * FindClosestChild
(
const FPBDRigidClusteredParticleHandle* ClusteredParticle, |
FindClosestChild Find the closest child of an active cluster from a world position current implementation will pick the closest based on the distance from the center future implementation may expose option for more precise queries | Chaos/PBDRigidClustering.h | |
void ForceReleaseChildParticleAndParents
(
FPBDRigidClusteredParticleHandle* ChildClusteredParticle, |
Force Release a particle at any level by making sure their parent particles are also release if necessary @Warning this will force all particles including the ones in the parent chain to be made breakable | Chaos/PBDRigidClustering.h | |
void GenerateConnectionGraph
(
const TArray< FPBDRigidParticleHandle* >& Particles, |
Chaos/PBDRigidClustering.h | ||
void GenerateConnectionGraph
(
Chaos::FPBDRigidClusteredParticleHandle* Parent, |
Chaos/PBDRigidClustering.h | ||
FPBDRigidParticleHandle * GetActiveClusterIndex
(
FPBDRigidParticleHandle* Child |
GetActiveClusterIndex Get the current childs active cluster. | Chaos/PBDRigidClustering.h | |
const TArray< FBreakingData > & GetAllClusterBreakings() |
Cluster Break Data The cluster breaks can be used to seed particle emissions. | Chaos/PBDRigidClustering.h | |
const TArray< FCrumblingData > & GetAllClusterCrumblings() |
Cluster crumbling Data triggered when all the children of a cluster are released all at once event is generated only if the owning proxy allows it | Chaos/PBDRigidClustering.h | |
const FClusterMap & GetChildrenMap () |
Chaos/PBDRigidClustering.h | ||
FClusterMap & GetChildrenMap () |
GetParentToChildren The parent to children map stores the currently active cluster ids (Particle Indices) as the keys of the map. | Chaos/PBDRigidClustering.h | |
const TArrayCollectionArray< FRigidTransform3 > & GetChildToParentMap() |
GetChildToParentMap This map stores the relative transform from a child to its cluster parent. | Chaos/PBDRigidClustering.h | |
TArrayCollectionArray< int32 > & GetClusterGroupIndexArray () |
GetClusterGroupIndexArray The group index is used to automatically bind disjoint clusters. | Chaos/PBDRigidClustering.h | |
| GetClusterIdsArray The cluster ids provide a mapping from the rigid body index to its parent cluster id. | Chaos/PBDRigidClustering.h | ||
const TArrayCollectionArray< ClusterId > & GetClusterIdsArray () |
Chaos/PBDRigidClustering.h | ||
FClusterCreationParameters::EConnectionMethod GetClusterUnionConnectionType() |
Chaos/PBDRigidClustering.h | ||
| Chaos/PBDRigidClustering.h | |||
const FClusterUnionManager & GetClusterUnionManager () |
Chaos/PBDRigidClustering.h | ||
const TArrayCollectionArray< TArray< TConnectivityEdge< FReal > > > & GetConnectivityEdges() |
GetConnectivityEdges Provides a list of each rigid body's current siblings and associated strain within the cluster. | Chaos/PBDRigidClustering.h | |
const FChaosSolverDestructionSettings & GetDestructionSettings() |
Chaos/PBDRigidClustering.h | ||
bool GetDoGenerateBreakingData() |
Chaos/PBDRigidClustering.h | ||
FRigidEvolution & GetEvolution () |
Chaos/PBDRigidClustering.h | ||
const FRigidEvolution & GetEvolution () |
Chaos/PBDRigidClustering.h | ||
const TArrayCollectionArray< FRigidClusteredFlags > & GetRigidClusteredFlagsArray() |
GetRigidClusteredFlagsArray The RigidClusteredFlags array contains various flag related to clustered particles | Chaos/PBDRigidClustering.h | |
const TArrayCollectionArray< FRealSingle > & GetStrainArray () |
Chaos/PBDRigidClustering.h | ||
TArrayCollectionArray< FRealSingle > & GetStrainArray () |
GetStrainArray The strain array is used to store the maximum strain allowed for a individual body in the simulation. | Chaos/PBDRigidClustering.h | |
TSet< Chaos::FPBDRigidClusteredParticleHandle * > & GetTopLevelClusterParents () |
Chaos/PBDRigidClustering.h | ||
const TSet< Chaos::FPBDRigidClusteredParticleHandle * > & GetTopLevelClusterParents () |
Chaos/PBDRigidClustering.h | ||
const TSet< Chaos::FPBDRigidClusteredParticleHandle * > & GetTopLevelClusterParentsStrained() |
Chaos/PBDRigidClustering.h | ||
TSet< FPBDRigidParticleHandle * > HandleConnectivityOnReleaseClusterParticle
(
FPBDRigidClusteredParticleHandle* ClusteredParticle, |
Handles leveraging the connectivity edges on the children of the clustered particle to produce the desired effects. | Chaos/PBDRigidClustering.h | |
TSet< FPBDRigidParticleHandle * > ReleaseClusterParticles
(
FPBDRigidClusteredParticleHandle* ClusteredParticle, |
ReleaseClusterParticles (BasedOnStrain) Release clusters based on the passed in ExternalStrainArray_, or the particle handle's current CollisionImpulses()_ value. |
Chaos/PBDRigidClustering.h | |
TSet< FPBDRigidParticleHandle * > ReleaseClusterParticles
(
TArray< FPBDRigidParticleHandle* > ChildrenParticles, |
ReleaseClusterParticles Release all rigid body IDs passed, | Chaos/PBDRigidClustering.h | |
TSet< FPBDRigidParticleHandle * > ReleaseClusterParticlesNoInternalCluster
(
FPBDRigidClusteredParticleHandle* ClusteredParticle, |
Chaos/PBDRigidClustering.h | ||
void RemoveFilteredNodeConnections
(
FPBDRigidClusteredParticleHandle* ClusteredChild, |
Chaos/PBDRigidClustering.h | ||
void RemoveNodeConnections
(
FPBDRigidParticleHandle* Child |
Remove connectivity edges for specified particles. | Chaos/PBDRigidClustering.h | |
void RemoveNodeConnections
(
FPBDRigidClusteredParticleHandle* Child |
Chaos/PBDRigidClustering.h | ||
void RemoveParticlesFromCluster
(
FPBDRigidClusteredParticleHandle* Cluster, |
Manually remove a set of particles from the cluster. | Chaos/PBDRigidClustering.h | |
void ResetAllClusterBreakings() |
Chaos/PBDRigidClustering.h | ||
void ResetAllClusterCrumblings() |
Chaos/PBDRigidClustering.h | ||
void ResetAllEvents() |
Reset all events ( this include breaking, crumbling event and tracking data | Chaos/PBDRigidClustering.h | |
void SetClusterConnectionFactor
(
FReal ClusterConnectionFactorIn |
GenerateConnectionGraph Creates a connection graph for the given index using the creation parameters. | Chaos/PBDRigidClustering.h | |
void SetClusterUnionConnectionType
(
FClusterCreationParameters::EConnectionMethod ClusterConnectionType |
Chaos/PBDRigidClustering.h | ||
void SetExternalStrain
(
FPBDRigidClusteredParticleHandle* Particle, |
Chaos/PBDRigidClustering.h | ||
void SetGenerateClusterBreaking
(
bool DoGenerate |
Chaos/PBDRigidClustering.h | ||
void SetInternalStrain
(
FPBDRigidClusteredParticleHandle* Particle, |
Chaos/PBDRigidClustering.h | ||
bool ShouldThrottleParticleRelease() |
Chaos/PBDRigidClustering.h | ||
void ThrottleReleasedParticlesIfNecessary
(
TSet< FPBDRigidParticleHandle* >& Particles |
Chaos/PBDRigidClustering.h | ||
void ThrottleReleasedParticlesIfNecessary
(
TArray< FPBDRigidParticleHandle* >& Particles |
Chaos/PBDRigidClustering.h | ||
void UnionClusterGroups () |
UnionClusterGroups Clusters that share a group index should be unioned into a single cluster prior to simulation. | Chaos/PBDRigidClustering.h | |
void Visitor
(
FClusterHandle Cluster, |
Access Visitor Walk all the decendents of the current cluster and execute FVisitorFunction. | Chaos/PBDRigidClustering.h |
Protected
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
void ApplyStrainModifiers
(
const TArray< FPBDRigidClusteredParticleHandle* >& StrainedParticles |
Chaos/PBDRigidClustering.h | ||
void ComputeStrainFromCollision
(
const FPBDCollisionConstraints& CollisionRule, |
Chaos/PBDRigidClustering.h | ||
| Chaos/PBDRigidClustering.h | |||
TArray< FParticleIsland > FindIslandsInChildren
(
const FPBDRigidClusteredParticleHandle* ClusteredParticle, |
Chaos/PBDRigidClustering.h | ||
void FixConnectivityGraphUsingDelaunayTriangulation
(
const TArray< FPBDRigidParticleHandle* >& Particles, |
Chaos/PBDRigidClustering.h | ||
void FixConnectivityGraphUsingDelaunayTriangulation
(
Chaos::FPBDRigidClusteredParticleHandle* Parent, |
Chaos/PBDRigidClustering.h | ||
TSet< FPBDRigidParticleHandle * > ReleaseClusterParticlesImpl
(
FPBDRigidClusteredParticleHandle* ClusteredParticle, |
Chaos/PBDRigidClustering.h | ||
void RemoveChildFromParent
(
FPBDRigidParticleHandle* Child, |
Chaos/PBDRigidClustering.h | ||
void RemoveChildFromParentAndChildrenArray
(
FPBDRigidParticleHandle* Child, |
Chaos/PBDRigidClustering.h | ||
void RemoveFromMomentumRestoringStructures
(
const FPBDRigidParticleHandle* ParticleToRemove |
Chaos/PBDRigidClustering.h | ||
void ResetCollisionImpulseArray() |
Chaos/PBDRigidClustering.h | ||
void RestoreBreakingMomentum() |
Restore some percentage of momenta for objects which were involved in collisions with destroyed GCs | Chaos/PBDRigidClustering.h | |
void SendBreakingEvent
(
FPBDRigidClusteredParticleHandle* ClusteredParticle, |
Chaos/PBDRigidClustering.h | ||
void SendCrumblingEvent
(
FPBDRigidClusteredParticleHandle* ClusteredParticle |
Chaos/PBDRigidClustering.h | ||
void TrackBreakingCollision
(
FPBDRigidClusteredParticleHandle* ClusteredParticle |
When a body has broken due to contact resolution, record an entry in a set for the collision and the particle who's momentum should be restored. | Chaos/PBDRigidClustering.h | |
void UpdateClusterParticlePropertiesFromChildren
(
FPBDRigidClusteredParticleHandle* Cluster, |
This function is a bit more versatile than the name suggests. | Chaos/PBDRigidClustering.h | |
void UpdateConnectivityGraphUsingDelaunayTriangulation
(
const Chaos::FPBDRigidClusteredParticleHandle* Parent, |
Chaos/PBDRigidClustering.h | ||
void UpdateConnectivityGraphUsingDelaunayTriangulation
(
const TArray< FPBDRigidParticleHandle* >& Particles, |
Chaos/PBDRigidClustering.h | ||
void UpdateConnectivityGraphUsingDelaunayTriangulationWithBoundsOverlaps
(
const TArray< FPBDRigidParticleHandle* >& Particles, |
Chaos/PBDRigidClustering.h | ||
void UpdateConnectivityGraphUsingDelaunayTriangulationWithBoundsOverlaps
(
const Chaos::FPBDRigidClusteredParticleHandle* Parent, |
Chaos/PBDRigidClustering.h | ||
void UpdateConnectivityGraphUsingPointImplicit
(
const TArray< FPBDRigidParticleHandle* >& Particles, |
Connectivity | Chaos/PBDRigidClustering.h | |
void UpdateConnectivityGraphUsingPointImplicit
(
Chaos::FPBDRigidClusteredParticleHandle* Parent, |
Chaos/PBDRigidClustering.h | ||
void UpdateTopLevelParticle
(
FPBDRigidClusteredParticleHandle* Particle |
Chaos/PBDRigidClustering.h |
Static
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
static FPBDRigidParticleHandle * FindClosestParticle
(
const TArray< FPBDRigidParticleHandle* >& Particles, |
FindClosest Find the closest particle from an array of particle current implementation will pick the closest based on the distance from the center future implementation may expose option for more precise queries | Chaos/PBDRigidClustering.h | |
| FindParticlesWithinRadius Find the closest particle from an array of particle from a world position and a radius current implementation will pick the closest based on the distance from the center future implementation may expose option for more precise queries if bAlwaysReturnClosest is checked this will always return the closest from the location even if the radius does not encompass any center of mass | Chaos/PBDRigidClustering.h | ||
static bool ShouldUnionsHaveCollisionParticles() |
Chaos/PBDRigidClustering.h |