UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MassProperties.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Chaos/Core.h"
5#include "Chaos/Defines.h"
6#include "Chaos/Matrix.h"
7#include "Chaos/Rotation.h"
8#include "Chaos/Vector.h"
10
11#if !COMPILE_WITHOUT_UNREAL_SUPPORT
12namespace Chaos
13{
14 class FTriangleMesh;
15 class FPerShapeData;
16 class FImplicitObject;
17 class FImplicitObjectUnion;
18
19 template<class T, int d>
20 class TParticles;
22
38
39 template <typename T>
42
43 template<typename T, typename TSurfaces>
45
46 template<typename T, typename TSurfaces>
48
49 template<typename T, typename TSurfaces>
51
52 template<typename TSurfaces>
53 FMassProperties CHAOS_API CalculateMassProperties(const FParticles& Vertices, const TSurfaces& Surfaces, const FReal Mass);
54
55 template<typename T, typename TSurfaces>
56 void CHAOS_API CalculateInertiaAndRotationOfMass(const TParticles<T,3>& Vertices, const TSurfaces& Surfaces, const T Density, const TVec3<T>& CenterOfMass,
58
59 template<typename T, typename TSurfaces>
62
65
66 // Combine a list of transformed inertia tensors into a single inertia. Also diagonalize the inertia and set the rotation of mass accordingly.
67 // This is equivalent to a call to CombineWorldSpace followed by TransformToLocalSpace.
68 // @see CombineWorldSpace()
70
71 // Combine a list of transformed inertia tensors into a single inertia tensor.
72 // @note The inertia matrix is not diagonalized, and any rotation will be built into the matrix (RotationOfMass will always be Identity)
73 // @see Combine()
75
76 // Calculate the mass properties from a union
79 const Chaos::FRigidTransform3& WorldTransform,
82
83 // Calculate the mass properties from a specific implicit
86 const FRigidTransform3& WorldTransform,
87 const FImplicitObject* ImplicitObject,
89
90 // Calculate the mass properties from a list of shapes
97
98 template<typename T>
100 {
101 return Density * (T)1000000;
102 }
103
104 template<typename T>
106 {
107 return Density / (T)1000000;
108 }
109
110 template<typename T>
112 {
113 return Density / (T)1000;
114 }
115
116 template<typename T>
118 {
119 return Density * (T)1000;
120 }
121
122 template <typename T, int d>
123 using TMassProperties UE_DEPRECATED(4.27, "Deprecated. this class is to be deleted, use FMassProperties instead") = FMassProperties;
124}
125
126#endif
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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 ImplicitObjectUnion.h:27
Definition ImplicitObject.h:111
Definition ShapeInstance.h:36
Definition Particles.h:32
Definition Vector.h:1000
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition SkeletalMeshComponent.h:307
T KgM3ToKgCm3(T Density)
Definition MassProperties.h:105
void CalculateInertiaAndRotationOfMass(const FBox &BoundingBox, const FVector::FReal Density, FMatrix33 &OutInertiaTensor, FRotation3 &OutRotationOfMass)
Definition MassProperties.cpp:116
void CalculateMassPropertiesFromShapeCollection(Chaos::FMassProperties &OutProperties, int32 InNumShapes, Chaos::FReal InDensityKGPerCM, const TArray< bool > &bContributesToMass, TFunction< Chaos::FPerShapeData *(int32 ShapeIndex)> GetShapeDelegate)
Definition MassProperties.cpp:440
TRotation< T, 3 > TransformToLocalSpace(PMatrix< T, 3, 3 > &Inertia)
Definition MassProperties.cpp:17
FRealDouble FReal
Definition Real.h:22
FMassProperties CalculateMassProperties(const FBox &BoundingBox, const FVector::FReal Density)
Definition MassProperties.cpp:128
bool CalculateMassPropertiesOfImplicitType(Chaos::FMassProperties &OutMassProperties, const Chaos::FRigidTransform3 &WorldTransform, const Chaos::FImplicitObject *ImplicitObject, Chaos::FReal InDensityKGPerCM)
Definition MassProperties.cpp:387
T GCm3ToKgCm3(T Density)
Definition MassProperties.h:111
void CalculateVolumeAndCenterOfMass(const FBox &BoundingBox, FVector::FReal &OutVolume, FVector &OutCenterOfMass)
Definition MassProperties.cpp:109
T KgCm3ToGCm3(T Density)
Definition MassProperties.h:117
FMassProperties CombineWorldSpace(const TArray< FMassProperties > &MPArray)
Definition MassProperties.cpp:281
TParticles< FReal, 3 > FParticles
Definition ImplicitObject.h:35
T KgCm3ToKgM3(T Density)
Definition MassProperties.h:99
bool CalculateMassPropertiesOfImplicitUnion(Chaos::FMassProperties &OutMassProperties, const Chaos::FRigidTransform3 &WorldTransform, const Chaos::FImplicitObjectUnion &ImplicitUnion, Chaos::FReal InDensityKGPerCM)
Definition MassProperties.cpp:333
Definition MassProperties.h:24
FVec3 CenterOfMass
Definition MassProperties.h:34
FReal Volume
Definition MassProperties.h:33
FMatrix33 InertiaTensor
Definition MassProperties.h:36
FReal Mass
Definition MassProperties.h:32
FMassProperties()
Definition MassProperties.h:25
FRotation3 RotationOfMass
Definition MassProperties.h:35
Definition Vector.h:51
double FReal
Definition Vector.h:55