TPBDRigidClustering

PDBRigidClustering

Windows
MacOS
Linux

References

Module

Chaos

Header

/Engine/Source/Runtime/Experimental/Chaos/Public/Chaos/PBDRigidClustering.h

Include

#include "Chaos/PBDRigidClustering.h"

Syntax

template<class FPBDRigidEvolution, class FPBDCollisionConstraint, class T, int d>
class TPBDRigidClustering

Remarks

PDBRigidClustering

Constructors

Name Description

Public function

TPBDRigidClustering

(
    FPBDRigidEvolution& InEvolution,
    TPBDRigidClusteredParticles < T, d >...
)

Destructors

Name Description

Public function

~TPBDRigidClustering()

Functions

Name Description

Public function

void

 

AddToClusterUnion

(
    int32 ClusterID,
    TPBDRigidClusteredParticleHandle < T...
)

Public function

void

 

AdvanceClustering

(
    const T dt,
    FPBDCollisionConstraint& Collision...
)

Operational AdvanceClustering Advance the cluster forward in time; ...

Public function

TMap < TPBDRi ...

 

BreakingModel

(
    TMap < TGeometryParticleHandle < T, d...
)

BreakingModel Implements the promotion breaking model, where strain impulses are summed onto the cluster body, and released if greater than the encoded strain.

Protected function

void

 

ComputeStrainFromCollision

(
    const FPBDCollisionConstraint& Col...
)

Protected function

void

 

ConnectNodes

Protected function

void

 

ConnectNodes

(
    TPBDRigidParticleHandle < T, d >...,
    TPBDRigidParticleHandle < T, d >...
)

Public function

Chaos::TPBDR ...

 

CreateClusterParticle

(
    const int32 ClusterGroupIndex,
    TArray < Chaos::TPBDRigidParticleHan ...,
    const FClusterCreationParameters < T...,
    TSharedPtr < Chaos::FImplicitObject ,...,
    const TRigidTransform < T, d >*...
)

Initialization Initialize a cluster with the specified children.

Public function

Chaos::TPBDR ...

 

CreateClusterParticleFromClusterChildren

(
    TArray < TPBDRigidParticleHandle < T,...,
    TPBDRigidClusteredParticleHandle < T...,
    const TRigidTransform < T, d >& Clu...,
    const FClusterCreationParameters < T...
)

CreateClusterParticleFromClusterChildren Children : Rigid body ID to include in the cluster.

Public function

TSet < TPBDRi ...

 

DeactivateClusterParticle

Releasing DeactivateClusterParticle Release all the particles within the cluster particle

Protected function

void

 

DisableCluster

Protected function

void

 

DisableParticleWithBreakEvent

(
    Chaos::TPBDRigidParticleHandle < flo...
)

Protected function

void

 

FixConnectivityGraphUsingDelaunayTriangulation

Public function

void

 

GenerateConnectionGraph

Public function

TPBDRigidPar ...

 

GetActiveClusterIndex

(
    TPBDRigidParticleHandle < T, d >...
)

GetActiveClusterIndex Get the current childs active cluster.

Public function Const

const TArray ...

 

GetAllClusterBreakings()

Public function Const

const TClust ...

 

GetBufferedData()

Access

Public function

FClusterMap ...

 

GetChildrenMap()

GetParentToChildren The parent to children map stores the currently active cluster ids (Particle Indices) as the keys of the map.

Public function Const

const FClust ...

 

GetChildrenMap()

Public function Const

const TArray ...

 

GetChildToParentMap()

GetChildToParentMap This map stores the relative transform from a child to its cluster parent.

Public function

TArrayCollec ...

 

GetClusterGroupIndexArray()

GetClusterGroupIndexArray The group index is used to automatically bind disjoint clusters.

Public function Const

const TArray ...

 

GetClusterIdsArray()

Public function

TArrayCollec ...

 

GetClusterIdsArray()

GetClusterIdsArray The cluster ids provide a mapping from the rigid body index to its parent cluster id.

Public function Const

const TArray ...

 

GetConnectivityEdges()

GetConnectivityEdges Provides a list of each rigid body's current siblings and associated strain within the cluster.

Public function Const

const TArray ...

 

GetInternalClusterArray()

GetInternalClusterArray The internal cluster array indicates if this cluster was generated internally and would no be owned by an external source.

Public function Const

const TArray ...

 

GetMultiChildProxyDataArray()

If multi child proxy is used, this is the data needed

Public function Const

const TArray ...

 

GetMultiChildProxyIdArray()

Indicates if the child geometry is approximated by a single proxy

Public function

TArrayCollec ...

 

GetStrainArray()

GetStrainArray The strain array is used to store the maximum strain allowed for a individual body in the simulation.

Public function

TSet < Chaos: ...

 

GetTopLevelClusterParents()

Public function Const

const TSet < ...

 

GetTopLevelClusterParents()

Public function

T

 

PromoteStrains

(
    TPBDRigidParticleHandle < T, d >...
)

PromoteStrains Sums the strains based on the cluster hierarchy.

Public function Const

void

 

ReleaseBufferedData()

Public function

TSet < TPBDRi ...

 

ReleaseClusterParticles

(
    TPBDRigidClusteredParticleHandle < T...,
    const TMap < TGeometryParticleHandle ...,
    bool bForceRelease
)

ReleaseClusterParticles (BasedOnStrain) Release clusters based on the passed in ExternalStrainArray_, or the particle handle's current CollisionImpulses()_ value.

Public function

TSet < TPBDRi ...

 

ReleaseClusterParticles

(
    TArray < TPBDRigidParticleHandle < T,...
)

ReleaseClusterParticles Release all rigid body IDs passed,

Protected function

void

 

RemoveNodeConnections

Protected function

void

 

RemoveNodeConnections

(
    TPBDRigidParticleHandle < T, d >...
)

Public function

void

 

ResetAllClusterBreakings()

Protected function

void

 

ResetCollisionImpulseArray()

Public function

void

 

SetClusterConnectionFactor

(
    float ClusterConnectionFactorIn
)

GenerateConnectionGraph Creates a connection graph for the given index using the creation parameters.

Public function

void

 

SetClusterUnionConnectionType

(
    typename FClusterCreationParameters ...
)

Public function

void

 

SetGenerateClusterBreaking

(
    bool DoGenerate
)

Public function

void

 

SwapBufferedData()

Public function

void

 

UnionClusterGroups()

UnionClusterGroups Clusters that share a group index should be unioned into a single cluster prior to simulation.

Protected function

void

 

UpdateConnectivityGraphUsingDelaunayTriangulation

Protected function

void

 

UpdateConnectivityGraphUsingPointImplicit

Connectivity

Protected function

void

 

UpdateGeometry

Public function

void

 

UpdateKinematicProperties

(
    Chaos::TPBDRigidParticleHandle < flo...
)

Process the kinematic state of the clusters.

Protected function

void

 

UpdateMassProperties

(
    Chaos::TPBDRigidClusteredParticleHa ...,
    TSet < TPBDRigidParticleHandle < T, d...,
    const TRigidTransform < T, d >*...
)

Ryan - do we still need this? void InitTopLevelClusterParents(const int32 StartIndex) { if (!StartIndex) { TopLevelClusterParents.Reset(); } for (uint32 i = StartIndex; i < MParticles.Size(); ++i) { if (MParticles.ClusterIds(i).Id == INDEX_NONE && !MParticles.Disabled(i) ) { TopLevelClusterParents.Add(i); } } }

Typedefs

Name

Description

FClusterMap

Parent to children

FCollisionConstraintHandle

FPointContactConstraint

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback