UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CollectionMuscleActivationFacade.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
10
11namespace Chaos
12{
13 class FLinearCurve;
14}
15
17{
18 //Activation data for each muscle
20 {
21 int32 GeometryGroupIndex; //Geometry group index of the muscle
22 TArray<int32> MuscleActivationElement; //Contractible tetrahedra
23 FIntVector2 OriginInsertionPair; //Muscle origin point and insertion point (to determine muscle length)
24 float OriginInsertionRestLength; //Muscle origin-insertion rest length
25 TArray<Chaos::PMatrix33d> FiberDirectionMatrix; //Per-element fiber direction orthogonal matrix: [v, w1, w2], v is the fiber direction
26 TArray<float> ContractionVolumeScale; // Per-element volume scale for muscle contraction. Muscles gain volume during contraction if > 1. Volume-preserving if 1.
27 float FiberLengthRatioAtMaxActivation = 0.5f; // How much muscle fibers shorten at max activation 1. A smaller value means more contraction in the fiber direction.
28 float MuscleLengthRatioThresholdForMaxActivation = 0.75f; // Muscle length ratio (defined by origin-insertion distance) below this threshold is considered to reach max activation 1.
29 float InflationVolumeScale = 1.f; // Increases muscle rest volume if > 1 and decreases muscle rest volume if < 1.
30 TArray<TArray<FVector3f>> FiberStreamline; //Fiber streamline(s) for inverse dynamics
31 TArray<float> FiberStreamlineRestLength; //Fiber streamline rest length(s)
32 };
33
35 {
36 public:
37
52
55
58
60 bool IsConst() const { return Collection == nullptr; }
61
63 CHAOS_API bool IsValid() const;
64
65 //
66 // Skeletal Mesh Bone Bindings
67 //
69 CHAOS_API bool UpdateMuscleActivationData(const int32 DataIndex, const FMuscleActivationData& InputData);
71 bool IsValidGeometryIndex(const int32 Index) const { return 0 <= Index && Index < ConstCollection.NumElements(FGeometryCollection::GeometryGroup); };
72 bool IsValidElementIndex(const int32 Index) const { return 0 <= Index && Index < ConstCollection.NumElements("Tetrahedral"); };
73 int32 NumMuscles() const { return MuscleActivationElementAttribute.Num(); }
74 bool IsValidMuscleIndex(const int32 Index) const { return 0 <= Index && Index < NumMuscles(); };
77 CHAOS_API FString FindMuscleName(const int32 MuscleIndex) const;
98 CHAOS_API int32 AssignCurveName(const FString& CurveName, const FString& MuscleName);
99 CHAOS_API TArray<int32> FindMuscleIndexByCurveName(const FString& CurveName) const;
100 private:
101 const FManagedArrayCollection& ConstCollection;
102 FManagedArrayCollection* Collection = nullptr;
103 TManagedArrayAccessor<int32> GeometryGroupIndexAttribute;
104 TManagedArrayAccessor<TArray<int32>> MuscleActivationElementAttribute;
105 TManagedArrayAccessor<FIntVector2> OriginInsertionPairAttribute;
106 TManagedArrayAccessor<float> OriginInsertionRestLengthAttribute;
107 TManagedArrayAccessor<TArray<Chaos::PMatrix33d>> FiberDirectionMatrixAttribute;
108 TManagedArrayAccessor<TArray<float>> ContractionVolumeScaleAttribute;
109 TManagedArrayAccessor<float> FiberLengthRatioAtMaxActivationAttribute;
110 TManagedArrayAccessor<float> MuscleLengthRatioThresholdForMaxActivationAttribute;
111 TManagedArrayAccessor<float> InflationVolumeScaleAttribute;
112 TManagedArrayAccessor<TArray<TArray<FVector3f>>> FiberStreamlineAttribute;
113 TManagedArrayAccessor<TArray<float>> FiberStreamlineRestLengthAttribute;
114 TManagedArrayAccessor<FString> MuscleActivationCurveNameAttribute;
115 TManagedArrayAccessor<Chaos::FLinearCurve> LengthActivationCurveAttribute;
116 };
117}
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition Curve.h:24
static CHAOS_API const FName GeometryGroup
Definition GeometryCollection.h:101
Definition NameTypes.h:617
Definition CollectionMuscleActivationFacade.h:35
CHAOS_API int32 RemoveInvalidMuscles()
Definition CollectionMuscleActivationFacade.cpp:219
CHAOS_API Chaos::FLinearCurve GetLengthActivationCurve(int32 MuscleIndex) const
Definition CollectionMuscleActivationFacade.cpp:463
static CHAOS_API const FName MuscleActivationElement
Definition CollectionMuscleActivationFacade.h:40
CHAOS_API int32 MuscleVertexOffset(const int32 MuscleIndex) const
Definition CollectionMuscleActivationFacade.cpp:153
static CHAOS_API const FName FiberStreamline
Definition CollectionMuscleActivationFacade.h:48
static CHAOS_API const FName FiberLengthRatioAtMaxActivation
Definition CollectionMuscleActivationFacade.h:45
static CHAOS_API const FName MuscleLengthRatioThresholdForMaxActivation
Definition CollectionMuscleActivationFacade.h:46
static CHAOS_API const FName ContractionVolumeScale
Definition CollectionMuscleActivationFacade.h:44
CHAOS_API bool SetUpMuscleActivation(const TArray< int32 > &Origin, const TArray< int32 > &Insertion, float ContractionVolumeScale=1.f)
Definition CollectionMuscleActivationFacade.cpp:237
bool IsValidMuscleIndex(const int32 Index) const
Definition CollectionMuscleActivationFacade.h:74
static CHAOS_API const FName GroupName
Definition CollectionMuscleActivationFacade.h:38
bool IsValidElementIndex(const int32 Index) const
Definition CollectionMuscleActivationFacade.h:72
static CHAOS_API const FName FiberStreamlineRestLength
Definition CollectionMuscleActivationFacade.h:49
CHAOS_API void UpdateGlobalMuscleActivationParameters(float InGlobalContractionVolumeScale, float InGlobalFiberLengthRatioAtMaxActivation, float InGlobalMuscleLengthRatioThresholdForMaxActivation, float InGlobalInflationVolumeScale)
Definition CollectionMuscleActivationFacade.cpp:406
CHAOS_API FString FindMuscleName(const int32 MuscleIndex) const
Definition CollectionMuscleActivationFacade.cpp:173
int32 NumMuscles() const
Definition CollectionMuscleActivationFacade.h:73
bool IsValidGeometryIndex(const int32 Index) const
Definition CollectionMuscleActivationFacade.h:71
CHAOS_API int32 NumMuscleVertices(const int32 MuscleIndex) const
Definition CollectionMuscleActivationFacade.cpp:163
static CHAOS_API const FName MuscleActivationCurveName
Definition CollectionMuscleActivationFacade.h:50
CHAOS_API TArray< TArray< TArray< FVector3f > > > BuildStreamlines(const TArray< int32 > &Origin, const TArray< int32 > &Insertion, int32 NumLinesMultiplier, int32 MaxStreamlineIterations, int32 MaxPointsPerLine)
Definition CollectionMuscleActivationFacade.cpp:472
CHAOS_API TArray< int32 > FindMuscleIndexByCurveName(const FString &CurveName) const
Definition CollectionMuscleActivationFacade.cpp:755
CHAOS_API void UpdateLengthActivationCurve(int32 MuscleIndex, const Chaos::FLinearCurve &InLengthActivationCurve)
Definition CollectionMuscleActivationFacade.cpp:454
CHAOS_API FMuscleActivationData GetMuscleActivationData(const int32 DataIndex) const
Definition CollectionMuscleActivationFacade.cpp:133
static CHAOS_API const FName GeometryGroupIndex
Definition CollectionMuscleActivationFacade.h:39
CHAOS_API bool IsValid() const
Definition CollectionMuscleActivationFacade.cpp:74
CHAOS_API bool UpdateMuscleActivationParameters(int32 MuscleIndex, float InContractionVolumeScale, float InFiberLengthRatioAtMaxActivation, float InMuscleLengthRatioThresholdForMaxActivation, float InInflationVolumeScale)
Definition CollectionMuscleActivationFacade.cpp:424
CHAOS_API int32 FindMuscleIndexByName(const FString MuscleName) const
Definition CollectionMuscleActivationFacade.cpp:188
static CHAOS_API const FName OriginInsertionRestLength
Definition CollectionMuscleActivationFacade.h:42
CHAOS_API void DefineSchema()
Definition CollectionMuscleActivationFacade.cpp:82
CHAOS_API int32 FindMuscleGeometryIndex(const int32 MuscleIndex) const
Definition CollectionMuscleActivationFacade.cpp:210
CHAOS_API int32 AddMuscleActivationData(const FMuscleActivationData &InputData)
Definition CollectionMuscleActivationFacade.cpp:100
CHAOS_API int32 AssignCurveName(const FString &CurveName, const FString &MuscleName)
Definition CollectionMuscleActivationFacade.cpp:744
CHAOS_API bool UpdateMuscleActivationData(const int32 DataIndex, const FMuscleActivationData &InputData)
Definition CollectionMuscleActivationFacade.cpp:112
static CHAOS_API const FName InflationVolumeScale
Definition CollectionMuscleActivationFacade.h:47
static CHAOS_API const FName LengthActivationCurve
Definition CollectionMuscleActivationFacade.h:51
static CHAOS_API const FName FiberDirectionMatrix
Definition CollectionMuscleActivationFacade.h:43
static CHAOS_API const FName OriginInsertionPair
Definition CollectionMuscleActivationFacade.h:41
CHAOS_API void UpdateGlobalLengthActivationCurve(const Chaos::FLinearCurve &InGlobalLengthActivationCurve)
Definition CollectionMuscleActivationFacade.cpp:445
bool IsConst() const
Definition CollectionMuscleActivationFacade.h:60
Definition Array.h:670
Definition SkeletalMeshComponent.h:307
Definition CollectionBoundsFacade.cpp:13
U16 Index
Definition radfft.cpp:71
Definition ManagedArrayCollection.h:56
CHAOS_API int32 NumElements(FName Group) const
Definition ManagedArrayCollection.cpp:236
Definition CollectionMuscleActivationFacade.h:20
float InflationVolumeScale
Definition CollectionMuscleActivationFacade.h:29
TArray< Chaos::PMatrix33d > FiberDirectionMatrix
Definition CollectionMuscleActivationFacade.h:25
float MuscleLengthRatioThresholdForMaxActivation
Definition CollectionMuscleActivationFacade.h:28
TArray< float > ContractionVolumeScale
Definition CollectionMuscleActivationFacade.h:26
float FiberLengthRatioAtMaxActivation
Definition CollectionMuscleActivationFacade.h:27
TArray< TArray< FVector3f > > FiberStreamline
Definition CollectionMuscleActivationFacade.h:30
FIntVector2 OriginInsertionPair
Definition CollectionMuscleActivationFacade.h:23
float OriginInsertionRestLength
Definition CollectionMuscleActivationFacade.h:24
TArray< int32 > MuscleActivationElement
Definition CollectionMuscleActivationFacade.h:22
TArray< float > FiberStreamlineRestLength
Definition CollectionMuscleActivationFacade.h:31
int32 GeometryGroupIndex
Definition CollectionMuscleActivationFacade.h:21
Definition ManagedArrayAccessor.h:20
int32 Num() const
Definition ManagedArrayAccessor.h:196