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

Bullet Collision Detection & Physics Library

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