43                        VertexAttributes(
float inCompliance, 
float inShearCompliance, 
float inBendCompliance, 
ELRAType inLRAType = ELRAType::None, 
float inLRAMaxDistanceMultiplier = 1.0f) : mCompliance(inCompliance), mShearCompliance(inShearCompliance), mBendCompliance(inBendCompliance), mLRAType(inLRAType), mLRAMaxDistanceMultiplier(inLRAMaxDistanceMultiplier) { }
 
   45        float           mCompliance = 0.0f;                         
 
   46        float           mShearCompliance = 0.0f;                    
 
   47        float           mBendCompliance = FLT_MAX;                  
 
   49        float           mLRAMaxDistanceMultiplier = 1.0f;           
 
   60    void                CalculateEdgeLengths();
 
   64    void                CalculateLRALengths(
float inMaxDistanceMultiplier = 1.0f);
 
   67    void                CalculateBendConstraintConstants();
 
   70    void                CalculateVolumeConstraintVolumes();
 
   73    void                CalculateSkinnedConstraintNormals();
 
   96    void                SaveBinaryState(
StreamOut &inStream) 
const;
 
   99    void                RestoreBinaryState(
StreamIn &inStream);
 
  121                        Vertex(const 
Float3 &inPosition, const 
Float3 &inVelocity = 
Float3(0, 0, 0), 
float inInvMass = 1.0f) : mPosition(inPosition), mVelocity(inVelocity), mInvMass(inInvMass) { }
 
  125        float           mInvMass = 1.0f;                            
 
  135                        Face(
uint32 inVertex1, 
uint32 inVertex2, 
uint32 inVertex3, 
uint32 inMaterialIndex = 0) : mVertex { inVertex1, inVertex2, inVertex3 }, mMaterialIndex(inMaterialIndex) { }
 
  138        bool            IsDegenerate()
 const                        { 
return mVertex[0] == mVertex[1] || mVertex[0] == mVertex[2] || mVertex[1] == mVertex[2]; }
 
  151                        Edge(
uint32 inVertex1, 
uint32 inVertex2, 
float inCompliance = 0.0f) : mVertex { inVertex1, inVertex2 }, mCompliance(inCompliance) { }
 
  157        float           mRestLength = 1.0f;                         
 
  158        float           mCompliance = 0.0f;                         
 
  185                        DihedralBend(
uint32 inVertex1, 
uint32 inVertex2, 
uint32 inVertex3, 
uint32 inVertex4, 
float inCompliance = 0.0f) : mVertex { inVertex1, inVertex2, inVertex3, inVertex4 }, mCompliance(inCompliance) { }
 
  191        float           mCompliance = 0.0f;                         
 
  192        float           mInitialAngle = 0.0f;                       
 
  202                        Volume(
uint32 inVertex1, 
uint32 inVertex2, 
uint32 inVertex3, 
uint32 inVertex4, 
float inCompliance = 0.0f) : mVertex { inVertex1, inVertex2, inVertex3, inVertex4 }, mCompliance(inCompliance) { }
 
  208        float           mSixRestVolume = 1.0f;                      
 
  209        float           mCompliance = 0.0f;                         
 
  234                        SkinWeight(
uint32 inInvBindIndex, 
float inWeight) : mInvBindIndex(inInvBindIndex), mWeight(inWeight) { }
 
  237        float           mWeight = 0.0f;                             
 
  248                        Skinned(
uint32 inVertex, 
float inMaxDistance, 
float inBackStopDistance, 
float inBackStopRadius) : mVertex(inVertex), mMaxDistance(inMaxDistance), mBackStopDistance(inBackStopDistance), mBackStopRadius(inBackStopRadius) { }
 
  265        static constexpr uint cMaxSkinWeights = 4;
 
  269        float           mMaxDistance = FLT_MAX;                     
 
  270        float           mBackStopDistance = FLT_MAX;                
 
  271        float           mBackStopRadius = 40.0f;                    
 
  284                        LRA(
uint32 inVertex1, 
uint32 inVertex2, 
float inMaxDistance) : mVertex { inVertex1, inVertex2 }, mMaxDistance(inMaxDistance) { }
 
  290        float           mMaxDistance = 0.0f;                        
 
  305    float               mVertexRadius = 0.0f;                       
 
  311    void                CalculateClosestKinematic();
 
  314    struct ClosestKinematic
 
  316        uint32          mVertex = 0xffffffff;                       
 
  317        float           mDistance = FLT_MAX;                        
 
  325        uint            mDihedralBendEndIndex;                      
 
  326        uint            mVolumeEndIndex;                            
 
  327        uint            mSkinnedEndIndex;                           
 
@ None
No degrees of freedom are allowed. Note that this is not valid and will crash. Use a static body inst...
 
#define JPH_EXPORT
Definition: Core.h:236
 
unsigned int uint
Definition: Core.h:452
 
#define JPH_NAMESPACE_END
Definition: Core.h:378
 
std::uint32_t uint32
Definition: Core.h:455
 
#define JPH_NAMESPACE_BEGIN
Definition: Core.h:372
 
#define JPH_ASSERT(...)
Definition: IssueReporting.h:33
 
JPH_INLINE constexpr float DegreesToRadians(float inV)
Convert a value from degrees to radians.
Definition: Math.h:13
 
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition: SerializableObject.h:80
 
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition: Float3.h:13
 
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition: Mat44.h:13
 
static JPH_INLINE Mat44 sIdentity()
Identity matrix.
Definition: Mat44.inl:35
 
static RefConst< PhysicsMaterial > sDefault
Default material that is used when a shape has no materials defined.
Definition: PhysicsMaterial.h:31
 
Definition: Reference.h:107
 
Definition: Reference.h:35
 
Helper class that either contains a valid result or an error.
Definition: Result.h:12
 
This class contains the runtime information of a soft body.
Definition: SoftBodyMotionProperties.h:34
 
An inverse bind matrix take a skinned vertex from its bind pose into joint local space.
Definition: SoftBodySharedSettings.h:214
 
InvBind()=default
Constructor.
 
InvBind(uint32 inJointIndex, Mat44Arg inInvBind)
Definition: SoftBodySharedSettings.h:220
 
Definition: SoftBodySharedSettings.h:278
 
uint32 GetMinVertexIndex() const
Return the lowest vertex index of this constraint.
Definition: SoftBodySharedSettings.h:287
 
LRA()=default
Constructor.
 
LRA(uint32 inVertex1, uint32 inVertex2, float inMaxDistance)
Definition: SoftBodySharedSettings.h:284
 
Information about the optimization of the soft body, the indices of certain elements may have changed...
Definition: SoftBodySharedSettings.h:77
 
Array< uint > mLRARemap
Maps old LRA index to new LRA index.
Definition: SoftBodySharedSettings.h:80
 
Array< uint > mVolumeRemap
Maps old volume constraint index to new volume constraint index.
Definition: SoftBodySharedSettings.h:82
 
Array< uint > mDihedralBendRemap
Maps old dihedral bend index to new dihedral bend index.
Definition: SoftBodySharedSettings.h:81
 
Array< uint > mSkinnedRemap
Maps old skinned constraint index to new skinned constraint index.
Definition: SoftBodySharedSettings.h:83
 
Array< uint > mEdgeRemap
Maps old edge index to new edge index.
Definition: SoftBodySharedSettings.h:79
 
A joint and its skin weight.
Definition: SoftBodySharedSettings.h:228
 
SkinWeight()=default
Constructor.
 
SkinWeight(uint32 inInvBindIndex, float inWeight)
Definition: SoftBodySharedSettings.h:234
 
A constraint that skins a vertex to joints and limits the distance that the simulated vertex can trav...
Definition: SoftBodySharedSettings.h:242
 
void NormalizeWeights()
Normalize the weights so that they add up to 1.
Definition: SoftBodySharedSettings.h:251
 
Skinned()=default
Constructor.
 
Skinned(uint32 inVertex, float inMaxDistance, float inBackStopDistance, float inBackStopRadius)
Definition: SoftBodySharedSettings.h:248
 
Definition: SoftBodySharedSettings.h:16
 
Array< Vertex > mVertices
The list of vertices or particles of the body.
Definition: SoftBodySharedSettings.h:296
 
ELRAType
The type of long range attachment constraint to create.
Definition: SoftBodySharedSettings.h:30
 
StreamUtils::ObjectToIDMap< PhysicsMaterial > MaterialToIDMap
Definition: SoftBodySharedSettings.h:103
 
Array< LRA > mLRAConstraints
The list of long range attachment constraints.
Definition: SoftBodySharedSettings.h:303
 
EBendType
Which type of bend constraint should be created.
Definition: SoftBodySharedSettings.h:22
 
Array< Skinned > mSkinnedConstraints
The list of vertices that are constrained to a skinned vertex.
Definition: SoftBodySharedSettings.h:301
 
void Optimize()
Optimize the soft body settings without results.
Definition: SoftBodySharedSettings.h:90
 
Array< Face > mFaces
The list of faces of the body.
Definition: SoftBodySharedSettings.h:297
 
Array< DihedralBend > mDihedralBendConstraints
The list of dihedral bend constraints of the body.
Definition: SoftBodySharedSettings.h:299
 
Array< Volume > mVolumeConstraints
The list of volume constraints of the body that keep the volume of tetrahedra in the soft body consta...
Definition: SoftBodySharedSettings.h:300
 
Array< Edge > mEdgeConstraints
The list of edges or springs of the body.
Definition: SoftBodySharedSettings.h:298
 
Array< InvBind > mInvBindMatrices
The list of inverse bind matrices for skinning vertices.
Definition: SoftBodySharedSettings.h:302
 
void AddFace(const Face &inFace)
Add a face to this soft body.
Definition: SoftBodySharedSettings.h:294
 
StreamUtils::ObjectToIDMap< SoftBodySharedSettings > SharedSettingsToIDMap
Definition: SoftBodySharedSettings.h:101
 
Simple binary input stream.
Definition: StreamIn.h:13
 
Simple binary output stream.
Definition: StreamOut.h:13
 
UnorderedMap< const Type *, uint32 > ObjectToIDMap
Definition: StreamUtils.h:18
 
Definition: SoftBodySharedSettings.h:180
 
uint32 GetMinVertexIndex() const
Return the lowest vertex index of this constraint.
Definition: SoftBodySharedSettings.h:188
 
An edge keeps two vertices at a constant distance using a spring: |x1 - x2| = rest length.
Definition: SoftBodySharedSettings.h:146
 
uint32 GetMinVertexIndex() const
Return the lowest vertex index of this constraint.
Definition: SoftBodySharedSettings.h:154
 
A face defines the surface of the body.
Definition: SoftBodySharedSettings.h:130
 
bool IsDegenerate() const
Check if this is a degenerate face (a face which points to the same vertex twice)
Definition: SoftBodySharedSettings.h:138
 
Definition: SoftBodySharedSettings.h:40
 
VertexAttributes()=default
Constructor.
 
VertexAttributes(float inCompliance, float inShearCompliance, float inBendCompliance, ELRAType inLRAType=ELRAType::None, float inLRAMaxDistanceMultiplier=1.0f)
Definition: SoftBodySharedSettings.h:43
 
A vertex is a particle, the data in this structure is only used during creation of the soft body and ...
Definition: SoftBodySharedSettings.h:116
 
Volume constraint, keeps the volume of a tetrahedron constant.
Definition: SoftBodySharedSettings.h:197
 
uint32 GetMinVertexIndex() const
Return the lowest vertex index of this constraint.
Definition: SoftBodySharedSettings.h:205