Bullet Collision Detection & Physics Library: btSoftBodyData.h Source File

Bullet Collision Detection & Physics Library

btSoftBodyData.h
Go to the documentation of this file.
1/*
2Bullet Continuous Collision Detection and Physics Library
3Copyright (c) 2003-2006 Erwin Coumans https://bulletphysics.org
4
5This software is provided 'as-is', without any express or implied warranty.
6In no event will the authors be held liable for any damages arising from the use of this software.
7Permission is granted to anyone to use this software for any purpose,
8including commercial applications, and to alter it and redistribute it freely,
9subject to the following restrictions:
10
111. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
122. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
133. This notice may not be removed or altered from any source distribution.
14*/
15
16#ifndef BT_SOFTBODY_FLOAT_DATA
17#define BT_SOFTBODY_FLOAT_DATA
18
19#include "BulletCollision/CollisionDispatch/btCollisionObject.h"
20#include "BulletDynamics/Dynamics/btRigidBody.h"
21
22 struct SoftBodyMaterialData
23{
24 float m_linearStiffness;
25 float m_angularStiffness;
26 float m_volumeStiffness;
27 int m_flags;
28};
29
30 struct SoftBodyNodeData
31{
32 SoftBodyMaterialData *m_material;
33 btVector3FloatData m_position;
34 btVector3FloatData m_previousPosition;
35 btVector3FloatData m_velocity;
36 btVector3FloatData m_accumulatedForce;
37 btVector3FloatData m_normal;
38 float m_inverseMass;
39 float m_area;
40 int m_attach;
41 int m_pad;
42};
43
44 struct SoftBodyLinkData
45{
46 SoftBodyMaterialData *m_material;
47 int m_nodeIndices[2]; // Node pointers
48 float m_restLength; // Rest length
49 int m_bbending; // Bending link
50};
51
52 struct SoftBodyFaceData
53{
54 btVector3FloatData m_normal; // Normal
55 SoftBodyMaterialData *m_material;
56 int m_nodeIndices[3]; // Node pointers
57 float m_restArea; // Rest area
58};
59
60 struct SoftBodyTetraData
61{
62 btVector3FloatData m_c0[4]; // gradients
63 SoftBodyMaterialData *m_material;
64 int m_nodeIndices[4]; // Node pointers
65 float m_restVolume; // Rest volume
66 float m_c1; // (4*kVST)/(im0+im1+im2+im3)
67 float m_c2; // m_c1/sum(|g0..3|^2)
68 int m_pad;
69};
70
71 struct SoftRigidAnchorData
72{
73 btMatrix3x3FloatData m_c0; // Impulse matrix
74 btVector3FloatData m_c1; // Relative anchor
75 btVector3FloatData m_localFrame; // Anchor position in body space
76 btRigidBodyData *m_rigidBody;
77 int m_nodeIndex; // Node pointer
78 float m_c2; // ima*dt
79};
80
81 struct SoftBodyConfigData
82{
83 int m_aeroModel; // Aerodynamic model (default: V_Point)
84 float m_baumgarte; // Velocities correction factor (Baumgarte)
85 float m_damping; // Damping coefficient [0,1]
86 float m_drag; // Drag coefficient [0,+inf]
87 float m_lift; // Lift coefficient [0,+inf]
88 float m_pressure; // Pressure coefficient [-inf,+inf]
89 float m_volume; // Volume conversation coefficient [0,+inf]
90 float m_dynamicFriction; // Dynamic friction coefficient [0,1]
91 float m_poseMatch; // Pose matching coefficient [0,1]
92 float m_rigidContactHardness; // Rigid contacts hardness [0,1]
93 float m_kineticContactHardness; // Kinetic contacts hardness [0,1]
94 float m_softContactHardness; // Soft contacts hardness [0,1]
95 float m_anchorHardness; // Anchors hardness [0,1]
96 float m_softRigidClusterHardness; // Soft vs rigid hardness [0,1] (cluster only)
97 float m_softKineticClusterHardness; // Soft vs kinetic hardness [0,1] (cluster only)
98 float m_softSoftClusterHardness; // Soft vs soft hardness [0,1] (cluster only)
99 float m_softRigidClusterImpulseSplit; // Soft vs rigid impulse split [0,1] (cluster only)
100 float m_softKineticClusterImpulseSplit; // Soft vs rigid impulse split [0,1] (cluster only)
101 float m_softSoftClusterImpulseSplit; // Soft vs rigid impulse split [0,1] (cluster only)
102 float m_maxVolume; // Maximum volume ratio for pose
103 float m_timeScale; // Time scale
104 int m_velocityIterations; // Velocities solver iterations
105 int m_positionIterations; // Positions solver iterations
106 int m_driftIterations; // Drift solver iterations
107 int m_clusterIterations; // Cluster solver iterations
108 int m_collisionFlags; // Collisions flags
109};
110
111 struct SoftBodyPoseData
112{
113 btMatrix3x3FloatData m_rot; // Rotation
114 btMatrix3x3FloatData m_scale; // Scale
115 btMatrix3x3FloatData m_aqq; // Base scaling
116 btVector3FloatData m_com; // COM
117
118 btVector3FloatData *m_positions; // Reference positions
119 float *m_weights; // Weights
120 int m_numPositions;
121 int m_numWeigts;
122
123 int m_bvolume; // Is valid
124 int m_bframe; // Is frame
125 float m_restVolume; // Rest volume
126 int m_pad;
127};
128
129 struct SoftBodyClusterData
130{
131 btTransformFloatData m_framexform;
132 btMatrix3x3FloatData m_locii;
133 btMatrix3x3FloatData m_invwi;
134 btVector3FloatData m_com;
135 btVector3FloatData m_vimpulses[2];
136 btVector3FloatData m_dimpulses[2];
137 btVector3FloatData m_lv;
138 btVector3FloatData m_av;
139
140 btVector3FloatData *m_framerefs;
141 int *m_nodeIndices;
142 float *m_masses;
143
144 int m_numFrameRefs;
145 int m_numNodes;
146 int m_numMasses;
147
148 float m_idmass;
149 float m_imass;
150 int m_nvimpulses;
151 int m_ndimpulses;
152 float m_ndamping;
153 float m_ldamping;
154 float m_adamping;
155 float m_matching;
156 float m_maxSelfCollisionImpulse;
157 float m_selfCollisionImpulseFactor;
158 int m_containsAnchor;
159 int m_collide;
160 int m_clusterIndex;
161};
162
163 enum btSoftJointBodyType
164{
165 BT_JOINT_SOFT_BODY_CLUSTER = 1,
166 BT_JOINT_RIGID_BODY,
167 BT_JOINT_COLLISION_OBJECT
168};
169
170 struct btSoftBodyJointData
171{
172 void *m_bodyA;
173 void *m_bodyB;
174 btVector3FloatData m_refs[2];
175 float m_cfm;
176 float m_erp;
177 float m_split;
178 int m_delete;
179 btVector3FloatData m_relPosition[2]; //linear
180 int m_bodyAtype;
181 int m_bodyBtype;
182 int m_jointType;
183 int m_pad;
184};
185
187 struct btSoftBodyFloatData
188{
189 btCollisionObjectFloatData m_collisionObjectData;
190
191 SoftBodyPoseData *m_pose;
192 SoftBodyMaterialData **m_materials;
193 SoftBodyNodeData *m_nodes;
194 SoftBodyLinkData *m_links;
195 SoftBodyFaceData *m_faces;
196 SoftBodyTetraData *m_tetrahedra;
197 SoftRigidAnchorData *m_anchors;
198 SoftBodyClusterData *m_clusters;
199 btSoftBodyJointData *m_joints;
200
201 int m_numMaterials;
202 int m_numNodes;
203 int m_numLinks;
204 int m_numFaces;
205 int m_numTetrahedra;
206 int m_numAnchors;
207 int m_numClusters;
208 int m_numJoints;
209 SoftBodyConfigData m_config;
210};
211
212#endif //BT_SOFTBODY_FLOAT_DATA
btCollisionObject.h
btRigidBody.h
btRigidBodyData
#define btRigidBodyData
Definition btRigidBody.h:35
btSoftJointBodyType
btSoftJointBodyType
Definition btSoftBodyData.h:164
BT_JOINT_RIGID_BODY
@ BT_JOINT_RIGID_BODY
Definition btSoftBodyData.h:166
BT_JOINT_SOFT_BODY_CLUSTER
@ BT_JOINT_SOFT_BODY_CLUSTER
Definition btSoftBodyData.h:165
BT_JOINT_COLLISION_OBJECT
@ BT_JOINT_COLLISION_OBJECT
Definition btSoftBodyData.h:167
SoftBodyClusterData
Definition btSoftBodyData.h:130
SoftBodyClusterData::m_av
btVector3FloatData m_av
Definition btSoftBodyData.h:138
SoftBodyClusterData::m_numMasses
int m_numMasses
Definition btSoftBodyData.h:146
SoftBodyClusterData::m_imass
float m_imass
Definition btSoftBodyData.h:149
SoftBodyClusterData::m_invwi
btMatrix3x3FloatData m_invwi
Definition btSoftBodyData.h:133
SoftBodyClusterData::m_vimpulses
btVector3FloatData m_vimpulses[2]
Definition btSoftBodyData.h:135
SoftBodyClusterData::m_containsAnchor
int m_containsAnchor
Definition btSoftBodyData.h:158
SoftBodyClusterData::m_framerefs
btVector3FloatData * m_framerefs
Definition btSoftBodyData.h:140
SoftBodyClusterData::m_nvimpulses
int m_nvimpulses
Definition btSoftBodyData.h:150
SoftBodyClusterData::m_numFrameRefs
int m_numFrameRefs
Definition btSoftBodyData.h:144
SoftBodyClusterData::m_dimpulses
btVector3FloatData m_dimpulses[2]
Definition btSoftBodyData.h:136
SoftBodyClusterData::m_locii
btMatrix3x3FloatData m_locii
Definition btSoftBodyData.h:132
SoftBodyClusterData::m_maxSelfCollisionImpulse
float m_maxSelfCollisionImpulse
Definition btSoftBodyData.h:156
SoftBodyClusterData::m_collide
int m_collide
Definition btSoftBodyData.h:159
SoftBodyClusterData::m_ndamping
float m_ndamping
Definition btSoftBodyData.h:152
SoftBodyClusterData::m_ldamping
float m_ldamping
Definition btSoftBodyData.h:153
SoftBodyClusterData::m_nodeIndices
int * m_nodeIndices
Definition btSoftBodyData.h:141
SoftBodyClusterData::m_lv
btVector3FloatData m_lv
Definition btSoftBodyData.h:137
SoftBodyClusterData::m_numNodes
int m_numNodes
Definition btSoftBodyData.h:145
SoftBodyClusterData::m_matching
float m_matching
Definition btSoftBodyData.h:155
SoftBodyClusterData::m_clusterIndex
int m_clusterIndex
Definition btSoftBodyData.h:160
SoftBodyClusterData::m_framexform
btTransformFloatData m_framexform
Definition btSoftBodyData.h:131
SoftBodyClusterData::m_ndimpulses
int m_ndimpulses
Definition btSoftBodyData.h:151
SoftBodyClusterData::m_masses
float * m_masses
Definition btSoftBodyData.h:142
SoftBodyClusterData::m_idmass
float m_idmass
Definition btSoftBodyData.h:148
SoftBodyClusterData::m_adamping
float m_adamping
Definition btSoftBodyData.h:154
SoftBodyClusterData::m_selfCollisionImpulseFactor
float m_selfCollisionImpulseFactor
Definition btSoftBodyData.h:157
SoftBodyClusterData::m_com
btVector3FloatData m_com
Definition btSoftBodyData.h:134
SoftBodyConfigData
Definition btSoftBodyData.h:82
SoftBodyConfigData::m_collisionFlags
int m_collisionFlags
Definition btSoftBodyData.h:108
SoftBodyConfigData::m_softRigidClusterHardness
float m_softRigidClusterHardness
Definition btSoftBodyData.h:96
SoftBodyConfigData::m_kineticContactHardness
float m_kineticContactHardness
Definition btSoftBodyData.h:93
SoftBodyConfigData::m_timeScale
float m_timeScale
Definition btSoftBodyData.h:103
SoftBodyConfigData::m_baumgarte
float m_baumgarte
Definition btSoftBodyData.h:84
SoftBodyConfigData::m_pressure
float m_pressure
Definition btSoftBodyData.h:88
SoftBodyConfigData::m_softSoftClusterHardness
float m_softSoftClusterHardness
Definition btSoftBodyData.h:98
SoftBodyConfigData::m_anchorHardness
float m_anchorHardness
Definition btSoftBodyData.h:95
SoftBodyConfigData::m_volume
float m_volume
Definition btSoftBodyData.h:89
SoftBodyConfigData::m_driftIterations
int m_driftIterations
Definition btSoftBodyData.h:106
SoftBodyConfigData::m_softKineticClusterImpulseSplit
float m_softKineticClusterImpulseSplit
Definition btSoftBodyData.h:100
SoftBodyConfigData::m_positionIterations
int m_positionIterations
Definition btSoftBodyData.h:105
SoftBodyConfigData::m_velocityIterations
int m_velocityIterations
Definition btSoftBodyData.h:104
SoftBodyConfigData::m_maxVolume
float m_maxVolume
Definition btSoftBodyData.h:102
SoftBodyConfigData::m_lift
float m_lift
Definition btSoftBodyData.h:87
SoftBodyConfigData::m_poseMatch
float m_poseMatch
Definition btSoftBodyData.h:91
SoftBodyConfigData::m_softSoftClusterImpulseSplit
float m_softSoftClusterImpulseSplit
Definition btSoftBodyData.h:101
SoftBodyConfigData::m_rigidContactHardness
float m_rigidContactHardness
Definition btSoftBodyData.h:92
SoftBodyConfigData::m_softKineticClusterHardness
float m_softKineticClusterHardness
Definition btSoftBodyData.h:97
SoftBodyConfigData::m_softRigidClusterImpulseSplit
float m_softRigidClusterImpulseSplit
Definition btSoftBodyData.h:99
SoftBodyConfigData::m_dynamicFriction
float m_dynamicFriction
Definition btSoftBodyData.h:90
SoftBodyConfigData::m_damping
float m_damping
Definition btSoftBodyData.h:85
SoftBodyConfigData::m_drag
float m_drag
Definition btSoftBodyData.h:86
SoftBodyConfigData::m_aeroModel
int m_aeroModel
Definition btSoftBodyData.h:83
SoftBodyConfigData::m_clusterIterations
int m_clusterIterations
Definition btSoftBodyData.h:107
SoftBodyConfigData::m_softContactHardness
float m_softContactHardness
Definition btSoftBodyData.h:94
SoftBodyFaceData
Definition btSoftBodyData.h:53
SoftBodyFaceData::m_normal
btVector3FloatData m_normal
Definition btSoftBodyData.h:54
SoftBodyFaceData::m_material
SoftBodyMaterialData * m_material
Definition btSoftBodyData.h:55
SoftBodyFaceData::m_nodeIndices
int m_nodeIndices[3]
Definition btSoftBodyData.h:56
SoftBodyFaceData::m_restArea
float m_restArea
Definition btSoftBodyData.h:57
SoftBodyLinkData
Definition btSoftBodyData.h:45
SoftBodyLinkData::m_nodeIndices
int m_nodeIndices[2]
Definition btSoftBodyData.h:47
SoftBodyLinkData::m_material
SoftBodyMaterialData * m_material
Definition btSoftBodyData.h:46
SoftBodyLinkData::m_bbending
int m_bbending
Definition btSoftBodyData.h:49
SoftBodyLinkData::m_restLength
float m_restLength
Definition btSoftBodyData.h:48
SoftBodyMaterialData
Definition btSoftBodyData.h:23
SoftBodyMaterialData::m_linearStiffness
float m_linearStiffness
Definition btSoftBodyData.h:24
SoftBodyMaterialData::m_volumeStiffness
float m_volumeStiffness
Definition btSoftBodyData.h:26
SoftBodyMaterialData::m_flags
int m_flags
Definition btSoftBodyData.h:27
SoftBodyMaterialData::m_angularStiffness
float m_angularStiffness
Definition btSoftBodyData.h:25
SoftBodyNodeData
Definition btSoftBodyData.h:31
SoftBodyNodeData::m_area
float m_area
Definition btSoftBodyData.h:39
SoftBodyNodeData::m_accumulatedForce
btVector3FloatData m_accumulatedForce
Definition btSoftBodyData.h:36
SoftBodyNodeData::m_normal
btVector3FloatData m_normal
Definition btSoftBodyData.h:37
SoftBodyNodeData::m_previousPosition
btVector3FloatData m_previousPosition
Definition btSoftBodyData.h:34
SoftBodyNodeData::m_inverseMass
float m_inverseMass
Definition btSoftBodyData.h:38
SoftBodyNodeData::m_velocity
btVector3FloatData m_velocity
Definition btSoftBodyData.h:35
SoftBodyNodeData::m_position
btVector3FloatData m_position
Definition btSoftBodyData.h:33
SoftBodyNodeData::m_attach
int m_attach
Definition btSoftBodyData.h:40
SoftBodyNodeData::m_pad
int m_pad
Definition btSoftBodyData.h:41
SoftBodyNodeData::m_material
SoftBodyMaterialData * m_material
Definition btSoftBodyData.h:32
SoftBodyPoseData
Definition btSoftBodyData.h:112
SoftBodyPoseData::m_pad
int m_pad
Definition btSoftBodyData.h:126
SoftBodyPoseData::m_rot
btMatrix3x3FloatData m_rot
Definition btSoftBodyData.h:113
SoftBodyPoseData::m_com
btVector3FloatData m_com
Definition btSoftBodyData.h:116
SoftBodyPoseData::m_numPositions
int m_numPositions
Definition btSoftBodyData.h:120
SoftBodyPoseData::m_numWeigts
int m_numWeigts
Definition btSoftBodyData.h:121
SoftBodyPoseData::m_positions
btVector3FloatData * m_positions
Definition btSoftBodyData.h:118
SoftBodyPoseData::m_bvolume
int m_bvolume
Definition btSoftBodyData.h:123
SoftBodyPoseData::m_bframe
int m_bframe
Definition btSoftBodyData.h:124
SoftBodyPoseData::m_aqq
btMatrix3x3FloatData m_aqq
Definition btSoftBodyData.h:115
SoftBodyPoseData::m_scale
btMatrix3x3FloatData m_scale
Definition btSoftBodyData.h:114
SoftBodyPoseData::m_weights
float * m_weights
Definition btSoftBodyData.h:119
SoftBodyPoseData::m_restVolume
float m_restVolume
Definition btSoftBodyData.h:125
SoftBodyTetraData
Definition btSoftBodyData.h:61
SoftBodyTetraData::m_nodeIndices
int m_nodeIndices[4]
Definition btSoftBodyData.h:64
SoftBodyTetraData::m_pad
int m_pad
Definition btSoftBodyData.h:68
SoftBodyTetraData::m_c0
btVector3FloatData m_c0[4]
Definition btSoftBodyData.h:62
SoftBodyTetraData::m_material
SoftBodyMaterialData * m_material
Definition btSoftBodyData.h:63
SoftBodyTetraData::m_c1
float m_c1
Definition btSoftBodyData.h:66
SoftBodyTetraData::m_restVolume
float m_restVolume
Definition btSoftBodyData.h:65
SoftBodyTetraData::m_c2
float m_c2
Definition btSoftBodyData.h:67
SoftRigidAnchorData
Definition btSoftBodyData.h:72
SoftRigidAnchorData::m_c0
btMatrix3x3FloatData m_c0
Definition btSoftBodyData.h:73
SoftRigidAnchorData::m_localFrame
btVector3FloatData m_localFrame
Definition btSoftBodyData.h:75
SoftRigidAnchorData::m_c1
btVector3FloatData m_c1
Definition btSoftBodyData.h:74
SoftRigidAnchorData::m_rigidBody
btRigidBodyData * m_rigidBody
Definition btSoftBodyData.h:76
SoftRigidAnchorData::m_c2
float m_c2
Definition btSoftBodyData.h:78
SoftRigidAnchorData::m_nodeIndex
int m_nodeIndex
Definition btSoftBodyData.h:77
btCollisionObjectFloatData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition btCollisionObject.h:651
btMatrix3x3FloatData
for serialization
Definition btMatrix3x3.h:1391
btSoftBodyFloatData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition btSoftBodyData.h:188
btSoftBodyFloatData::m_numLinks
int m_numLinks
Definition btSoftBodyData.h:203
btSoftBodyFloatData::m_materials
SoftBodyMaterialData ** m_materials
Definition btSoftBodyData.h:192
btSoftBodyFloatData::m_numFaces
int m_numFaces
Definition btSoftBodyData.h:204
btSoftBodyFloatData::m_numAnchors
int m_numAnchors
Definition btSoftBodyData.h:206
btSoftBodyFloatData::m_numMaterials
int m_numMaterials
Definition btSoftBodyData.h:201
btSoftBodyFloatData::m_tetrahedra
SoftBodyTetraData * m_tetrahedra
Definition btSoftBodyData.h:196
btSoftBodyFloatData::m_joints
btSoftBodyJointData * m_joints
Definition btSoftBodyData.h:199
btSoftBodyFloatData::m_collisionObjectData
btCollisionObjectFloatData m_collisionObjectData
Definition btSoftBodyData.h:189
btSoftBodyFloatData::m_pose
SoftBodyPoseData * m_pose
Definition btSoftBodyData.h:191
btSoftBodyFloatData::m_faces
SoftBodyFaceData * m_faces
Definition btSoftBodyData.h:195
btSoftBodyFloatData::m_numClusters
int m_numClusters
Definition btSoftBodyData.h:207
btSoftBodyFloatData::m_config
SoftBodyConfigData m_config
Definition btSoftBodyData.h:209
btSoftBodyFloatData::m_numJoints
int m_numJoints
Definition btSoftBodyData.h:208
btSoftBodyFloatData::m_clusters
SoftBodyClusterData * m_clusters
Definition btSoftBodyData.h:198
btSoftBodyFloatData::m_nodes
SoftBodyNodeData * m_nodes
Definition btSoftBodyData.h:193
btSoftBodyFloatData::m_links
SoftBodyLinkData * m_links
Definition btSoftBodyData.h:194
btSoftBodyFloatData::m_numTetrahedra
int m_numTetrahedra
Definition btSoftBodyData.h:205
btSoftBodyFloatData::m_numNodes
int m_numNodes
Definition btSoftBodyData.h:202
btSoftBodyFloatData::m_anchors
SoftRigidAnchorData * m_anchors
Definition btSoftBodyData.h:197
btSoftBodyJointData
Definition btSoftBodyData.h:171
btSoftBodyJointData::m_erp
float m_erp
Definition btSoftBodyData.h:176
btSoftBodyJointData::m_bodyBtype
int m_bodyBtype
Definition btSoftBodyData.h:181
btSoftBodyJointData::m_cfm
float m_cfm
Definition btSoftBodyData.h:175
btSoftBodyJointData::m_refs
btVector3FloatData m_refs[2]
Definition btSoftBodyData.h:174
btSoftBodyJointData::m_relPosition
btVector3FloatData m_relPosition[2]
Definition btSoftBodyData.h:179
btSoftBodyJointData::m_delete
int m_delete
Definition btSoftBodyData.h:178
btSoftBodyJointData::m_bodyAtype
int m_bodyAtype
Definition btSoftBodyData.h:180
btSoftBodyJointData::m_bodyB
void * m_bodyB
Definition btSoftBodyData.h:173
btSoftBodyJointData::m_pad
int m_pad
Definition btSoftBodyData.h:183
btSoftBodyJointData::m_split
float m_split
Definition btSoftBodyData.h:177
btSoftBodyJointData::m_bodyA
void * m_bodyA
Definition btSoftBodyData.h:172
btSoftBodyJointData::m_jointType
int m_jointType
Definition btSoftBodyData.h:182
btTransformFloatData
for serialization
Definition btTransform.h:246
btVector3FloatData
Definition btVector3.h:1282