45 int N = bodies.
size();
52 for (
int i = 0; i < N; ++i)
107 rsb->
m_nodes[j].m_effectiveMass_inv = rsb->
m_nodes[j].m_effectiveMass.inverse();
210 if (rsb->
m_nodes[i_node].m_im == 0)
212 for (
int k = 0; k < 3; ++k)
275 m_orderNonContactConstraintPool[j] = j;
280 m_orderContactConstraintPool[j] = j;
289 residualSquare =
btMax(residualSquare, localResidualSquare);
300 residualSquare =
btMax(residualSquare, localResidualSquare);
313 return residualSquare;
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
const T & btMax(const T &a, const T &b)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
static T sum(const btAlignedObjectArray< T > &items)
int size() const
return the number of elements in the array
void copyFromArray(const btAlignedObjectArray &otherArray)
void resize(int newsize, const T &fillData=T())
void clear()
clear the array, deallocated memory. Generally it is better to use array.resize(0),...
void push_back(const T &_Val)
btCollisionObject can be used to manage collision detection objects.
const btTransform & getInterpolationWorldTransform() const
virtual void updateSoftBodies()
Perform necessary per-step updates of soft bodies such as recomputing normals and bounding boxes.
btDeformableBackwardEulerObjective * m_objective
btAlignedObjectArray< btSoftBody * > m_softBodies
virtual void applyExplicitForce()
virtual void predictMotion(btScalar solverdt)
Predict motion of soft bodies into next timestep.
btReducedDeformableBodySolver()
virtual btScalar solveContactConstraints(btCollisionObject **deformableBodies, int numDeformableBodies, const btContactSolverInfo &infoGlobal)
virtual void setConstraints(const btContactSolverInfo &infoGlobal)
virtual void setGravity(const btVector3 &gravity)
virtual void deformableBodyInternalWriteBack()
btAlignedObjectArray< btAlignedObjectArray< btReducedDeformableNodeRigidContactConstraint > > m_nodeRigidConstraints
virtual void reinitialize(const btAlignedObjectArray< btSoftBody * > &bodies, btScalar dt)
btAlignedObjectArray< btAlignedObjectArray< btReducedDeformableStaticConstraint > > m_staticConstraints
virtual void applyTransforms(btScalar timeStep)
void predictReduceDeformableMotion(btScalar solverdt)
void predictIntegratedTransform(btScalar dt, btTransform &predictedTransform)
void applyInternalVelocityChanges()
btVector3 getRelativePos(int n_node)
btAlignedObjectArray< int > m_fixedNodes
void mapToFullVelocity(const btTransform &ref_trans)
void endOfTimeStepZeroing()
tDenseArray m_reducedVelocityBuffer
void updateReducedVelocity(btScalar solverdt)
bool isReducedModesOFF() const
void updateExternalForceProjectMatrix(bool initialized)
void applyReducedElasticForce(const tDenseArray &reduce_dofs)
void updateLocalMomentArm()
void applyReducedDampingForce(const tDenseArray &reduce_vel)
void applyRigidGravity(const btVector3 &gravity, btScalar dt)
void updateReducedDofs(btScalar solverdt)
void proceedToTransform(btScalar dt, bool end_of_time_step)
void mapToFullPosition(const btTransform &ref_trans)
btAlignedObjectArray< int > m_contactNodesList
btTransform & getRigidTransform()
tDenseArray m_reducedDofsBuffer
void interpolateRenderMesh()
void updateFaceTree(bool use_velocity, bool margin)
void updateNodeTree(bool use_velocity, bool margin)
btAlignedObjectArray< DeformableFaceNodeContact > m_faceNodeContacts
btAlignedObjectArray< DeformableFaceRigidContact > m_faceRigidContacts
btAlignedObjectArray< DeformableNodeRigidContact > m_nodeRigidContacts
btVector3 can be used to represent 3D points and vectors.