DART 6.12.2
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SoftBodyNode.hpp
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011-2021, The DART development contributors
3 * All rights reserved.
4 *
5 * The list of contributors can be found at:
6 * https://github.com/dartsim/dart/blob/master/LICENSE
7 *
8 * This file is provided under the following "BSD-style" License:
9 * Redistribution and use in source and binary forms, with or
10 * without modification, are permitted provided that the following
11 * conditions are met:
12 * * Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * * Redistributions in binary form must reproduce the above
15 * copyright notice, this list of conditions and the following
16 * disclaimer in the documentation and/or other materials provided
17 * with the distribution.
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
19 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
20 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 */
32
33#ifndef DART_DYNAMICS_SOFTBODYNODE_HPP_
34#define DART_DYNAMICS_SOFTBODYNODE_HPP_
35
37
38namespace dart {
39namespace dynamics {
40
46{
47public:
51
52 friend class Skeleton;
53 friend class PointMass;
54 friend class PointMassNotifier;
55
57
58
59 virtual ~SoftBodyNode();
60
61 // Documentation inherited
62 SoftBodyNode* asSoftBodyNode() override;
63
64 // Documentation inherited
65 const SoftBodyNode* asSoftBodyNode() const override;
66
68 void setProperties(const Properties& _properties);
69
71 void setProperties(const UniqueProperties& _properties);
72
74 void setAspectState(const AspectState& state);
75
78
80
83
85 void copy(const SoftBodyNode& _otherSoftBodyNode);
86
88 void copy(const SoftBodyNode* _otherSoftBodyNode);
89
91 SoftBodyNode& operator=(const SoftBodyNode& _otherSoftBodyNode);
92
95
97 const PointMassNotifier* getNotifier() const;
98
100 double getMass() const;
101
103 void setVertexSpringStiffness(double _kv);
104
106 double getVertexSpringStiffness() const;
107
109 void setEdgeSpringStiffness(double _ke);
110
112 double getEdgeSpringStiffness() const;
113
115 void setDampingCoefficient(double _damp);
116
118 double getDampingCoefficient() const;
119
122
124 PointMass* addPointMass(const PointMass::Properties& _properties);
125
127 std::size_t getNumPointMasses() const;
128
130 PointMass* getPointMass(std::size_t _idx);
131
133 const PointMass* getPointMass(std::size_t _idx) const;
134
136 const std::vector<PointMass*>& getPointMasses() const;
137
139 void connectPointMasses(std::size_t _idx1, std::size_t _idx2);
140
142 void addFace(const Eigen::Vector3i& _face);
143
145 const Eigen::Vector3i& getFace(std::size_t _idx) const;
146
148 std::size_t getNumFaces() const;
149
150 // Documentation inherited.
151 void clearConstraintImpulse() override;
152
153protected:
156 BodyNode* _parentBodyNode,
157 Joint* _parentJoint,
158 const Properties& _properties);
159
163 BodyNode* _parentBodyNode,
164 Joint* _parentJoint,
165 bool cloneNodes) const override;
166
169 void configurePointMasses(ShapeNode* softNode);
170
171 //--------------------------------------------------------------------------
172 // Sub-functions for Recursive Kinematics Algorithms
173 //--------------------------------------------------------------------------
174 // Documentation inherited.
175 void init(const SkeletonPtr& _skeleton) override;
176
177 // Documentation inherited.
178 // virtual void aggregateGenCoords(std::vector<GenCoord*>* _genCoords);
179
180 // Documentation inherited.
181 // virtual void aggregatePointMassGenCoords(std::vector<GenCoord*>*
182 // _genCoords);
183
184 //----------------------------------------------------------------------------
186 //----------------------------------------------------------------------------
187
190
191 // Documentation inherited.
192 void updateTransform() override;
193
194 // Documentation inherited.
195 void updateVelocity() override;
196
197 // Documentation inherited.
198 void updatePartialAcceleration() const override;
199
200 // Documentation inherited.
201 void updateArtInertia(double _timeStep) const override;
202
203 // Documentation inherited.
204 void updateBiasForce(
205 const Eigen::Vector3d& _gravity, double _timeStep) override;
206
207 // Documentation inherited.
208 void updateBiasImpulse() override;
209
210 // Documentation inherited.
211 void updateAccelerationID() override;
212
213 // Documentation inherited.
214 void updateAccelerationFD() override;
215
216 // Documentation inherited.
217 void updateVelocityChangeFD() override;
218
219 // Documentation inherited.
221 const Eigen::Vector3d& _gravity,
222 bool _withExternalForces = false) override;
223
224 // Documentation inherited.
225 void updateTransmittedForceFD() override;
226
227 // Documentation inherited.
228 void updateTransmittedImpulse() override;
229
230 // Documentation inherited.
232 double _timeStep,
233 bool _withDampingForces,
234 bool _withSpringForces) override;
235
236 // Documentation inherited.
238 double _timeStep,
239 bool _withDampingForces,
240 bool _withSpringForces) override;
241
242 // Documentation inherited.
243 void updateJointImpulseFD() override;
244
245 // Documentation inherited.
246 void updateConstrainedTerms(double _timeStep) override;
247
249
250 //----------------------------------------------------------------------------
252 //----------------------------------------------------------------------------
253
254 // Documentation inherited.
255 void updateMassMatrix() override;
256
257 // Documentation inherited.
258 void aggregateMassMatrix(Eigen::MatrixXd& _MCol, std::size_t _col) override;
259
260 // Documentation inherited.
262 Eigen::MatrixXd& _MCol, std::size_t _col, double _timeStep) override;
263
264 // Documentation inherited.
265 void updateInvMassMatrix() override;
266
267 // Documentation inherited.
268 void updateInvAugMassMatrix() override;
269
270 // Documentation inherited.
272 Eigen::MatrixXd& _InvMCol, std::size_t _col) override;
273
274 // Documentation inherited.
276 Eigen::MatrixXd& _InvMCol, std::size_t _col, double _timeStep) override;
277
278 // Documentation inherited.
279 // TODO(JS): Not implemented yet.
280 void aggregateCoriolisForceVector(Eigen::VectorXd& _C) override;
281
282 // Documentation inherited.
284 Eigen::VectorXd& _g, const Eigen::Vector3d& _gravity) override;
285
286 // Documentation inherited.
287 void updateCombinedVector() override;
288
289 // Documentation inherited.
291 Eigen::VectorXd& _Cg, const Eigen::Vector3d& _gravity) override;
292
293 // Documentation inherited.
294 void aggregateExternalForces(Eigen::VectorXd& _Fext) override;
295
297
298 // Documentation inherited.
299 void clearExternalForces() override;
300
301 void clearInternalForces() override;
302
303protected:
305 std::vector<PointMass*> mPointMasses;
306
309
312
315
318
321
322private:
324 void _addPiToArtInertia(const Eigen::Vector3d& _p, double _Pi) const;
325
328 const Eigen::Vector3d& _p, double _ImplicitPi) const;
329
332};
333
335{
336public:
340 const Eigen::Vector3d& _size,
341 const Eigen::Isometry3d& _localTransform,
342 double _totalMass,
343 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
344 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
345 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
346
349 static void setBox(
350 SoftBodyNode* _softBodyNode,
351 const Eigen::Vector3d& _size,
352 const Eigen::Isometry3d& _localTransform,
353 double _totalMass,
354 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
355 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
356 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
357
363 const Eigen::Vector3d& _size,
364 const Eigen::Isometry3d& _localTransform,
365 const Eigen::Vector3i& _frags,
366 double _totalMass,
367 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
368 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
369 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
370
379 // TODO: The component of _frags should allow 2.
384 static void setBox(
385 SoftBodyNode* _softBodyNode,
386 const Eigen::Vector3d& _size,
387 const Eigen::Isometry3d& _localTransform,
388 const Eigen::Vector3i& _frags,
389 double _totalMass,
390 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
391 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
392 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
393
396 double _totalMass,
397 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
398 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
399 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
400
403 static void setSinglePointMass(
404 SoftBodyNode* _softBodyNode,
405 double _totalMass,
406 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
407 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
408 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
409
412 double _radius,
413 std::size_t _nSlices,
414 std::size_t _nStacks,
415 double _totalMass,
416 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
417 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
418 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
419
422 const Eigen::Vector3d& _size,
423 std::size_t _nSlices,
424 std::size_t _nStacks,
425 double _totalMass,
426 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
427 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
428 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
429
432 static void setEllipsoid(
433 SoftBodyNode* _softBodyNode,
434 const Eigen::Vector3d& _size,
435 std::size_t _nSlices,
436 std::size_t _nStacks,
437 double _totalMass,
438 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
439 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
440 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
441
444 double _radius,
445 double _height,
446 std::size_t _nSlices,
447 std::size_t _nStacks,
448 std::size_t _nRings,
449 double _totalMass,
450 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
451 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
452 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
453
456 static void setCylinder(
457 SoftBodyNode* _softBodyNode,
458 double _radius,
459 double _height,
460 std::size_t _nSlices,
461 std::size_t _nStacks,
462 std::size_t _nRings,
463 double _totalMass,
464 double _vertexStiffness = DART_DEFAULT_VERTEX_STIFFNESS,
465 double _edgeStiffness = DART_DEFAULT_EDGE_STIFNESS,
466 double _dampingCoeff = DART_DEFAULT_DAMPING_COEFF);
467};
468
469} // namespace dynamics
470} // namespace dart
471
472#endif // DART_DYNAMICS_SOFTBODYNODE_HPP_
BodyPropPtr properties
Definition SdfParser.cpp:80
This is an alternative to EmbedStateAndProperties which allows your class to also inherit other Compo...
Definition EmbeddedAspect.hpp:435
typename Impl::AspectState AspectState
Definition EmbeddedAspect.hpp:440
typename Impl::Aspect Aspect
Definition EmbeddedAspect.hpp:443
typename Impl::AspectProperties AspectProperties
Definition EmbeddedAspect.hpp:442
BodyNode class represents a single node of the skeleton.
Definition BodyNode.hpp:79
class Joint
Definition Joint.hpp:61
Definition PointMass.hpp:675
Definition PointMass.hpp:53
Definition ShapeNode.hpp:49
std::shared_ptr< Skeleton > getSkeleton()
Return the Skeleton this BodyNode belongs to.
Definition BodyNode.cpp:152
class Skeleton
Definition Skeleton.hpp:60
Definition SoftBodyNode.hpp:335
static void setCylinder(SoftBodyNode *_softBodyNode, double _radius, double _height, std::size_t _nSlices, std::size_t _nStacks, std::size_t _nRings, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
This should be called before SoftBodyNode::init() is called.
Definition SoftBodyNode.cpp:3097
static void setSinglePointMass(SoftBodyNode *_softBodyNode, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
This should be called before SoftBodyNode::init() is called.
Definition SoftBodyNode.cpp:2548
static SoftBodyNode::UniqueProperties makeEllipsoidProperties(const Eigen::Vector3d &_size, std::size_t _nSlices, std::size_t _nStacks, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
Create a Properties struct for an Ellipsoid-shaped SoftBodyNode.
Definition SoftBodyNode.cpp:2581
static void setBox(SoftBodyNode *_softBodyNode, const Eigen::Vector3d &_size, const Eigen::Isometry3d &_localTransform, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
This should be called before SoftBodyNode::init() is called.
Definition SoftBodyNode.cpp:1395
static SoftBodyNode::UniqueProperties makeBoxProperties(const Eigen::Vector3d &_size, const Eigen::Isometry3d &_localTransform, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
Create a Properties struct for a box-shaped SoftBodyNode with 8 PointMasses.
Definition SoftBodyNode.cpp:1303
static SoftBodyNode::UniqueProperties makeSinglePointMassProperties(double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
Create a Properties struct for a SoftBodyNode with a single PointMass.
Definition SoftBodyNode.cpp:2514
static SoftBodyNode::UniqueProperties makeCylinderProperties(double _radius, double _height, std::size_t _nSlices, std::size_t _nStacks, std::size_t _nRings, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
Create a Properties struct for a cylinder-shaped SoftBodyNode.
Definition SoftBodyNode.cpp:2761
static SoftBodyNode::UniqueProperties makeSphereProperties(double _radius, std::size_t _nSlices, std::size_t _nStacks, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
Create a Properties struct for an Sphere-shaped SoftBodyNode.
Definition SoftBodyNode.cpp:2561
static void setEllipsoid(SoftBodyNode *_softBodyNode, const Eigen::Vector3d &_size, std::size_t _nSlices, std::size_t _nStacks, double _totalMass, double _vertexStiffness=DART_DEFAULT_VERTEX_STIFFNESS, double _edgeStiffness=DART_DEFAULT_EDGE_STIFNESS, double _dampingCoeff=DART_DEFAULT_DAMPING_COEFF)
This should be called before SoftBodyNode::init() is called.
Definition SoftBodyNode.cpp:2739
SoftBodyNode represent a soft body that has one deformable skin.
Definition SoftBodyNode.hpp:46
PointMassNotifier * mNotifier
An Entity which tracks when the point masses need to be updated.
Definition SoftBodyNode.hpp:308
void copy(const SoftBodyNode &_otherSoftBodyNode)
Copy the Properties of another SoftBodyNode.
Definition SoftBodyNode.cpp:198
void _addPiToArtInertia(const Eigen::Vector3d &_p, double _Pi) const
Definition SoftBodyNode.cpp:1259
void updateTransmittedForceFD() override
Definition SoftBodyNode.cpp:782
void updateArtInertia(double _timeStep) const override
Definition SoftBodyNode.cpp:665
Properties getSoftBodyNodeProperties() const
Get the Properties of this SoftBodyNode.
Definition SoftBodyNode.cpp:192
void updateJointImpulseFD() override
Definition SoftBodyNode.cpp:659
void aggregateGravityForceVector(Eigen::VectorXd &_g, const Eigen::Vector3d &_gravity) override
Definition SoftBodyNode.cpp:1108
void updateMassMatrix() override
Definition SoftBodyNode.cpp:852
void setAspectProperties(const AspectProperties &properties)
Set the AspectProperties of this SoftBodyNode.
Definition SoftBodyNode.cpp:176
void updatePartialAcceleration() const override
Definition SoftBodyNode.cpp:565
PointMass * addPointMass(const PointMass::Properties &_properties)
Definition SoftBodyNode.cpp:484
void updateAccelerationFD() override
Definition SoftBodyNode.cpp:771
std::vector< PointMass * > mPointMasses
List of point masses composing deformable mesh.
Definition SoftBodyNode.hpp:305
BodyNode * clone(BodyNode *_parentBodyNode, Joint *_parentJoint, bool cloneNodes) const override
Create a clone of this SoftBodyNode.
Definition SoftBodyNode.cpp:276
void updateBiasImpulse() override
Definition SoftBodyNode.cpp:791
void aggregateInvMassMatrix(Eigen::MatrixXd &_InvMCol, std::size_t _col) override
Definition SoftBodyNode.cpp:1034
void setAspectState(const AspectState &state)
Set the AspectState of this SoftBodyNode.
Definition SoftBodyNode.cpp:166
WeakShapeNodePtr mSoftShapeNode
Soft mesh shape belonging to this node.
Definition SoftBodyNode.hpp:311
void updateJointForceID(double _timeStep, bool _withDampingForces, bool _withSpringForces) override
Definition SoftBodyNode.cpp:639
std::size_t getNumFaces() const
Definition SoftBodyNode.cpp:520
void clearConstraintImpulse() override
Definition SoftBodyNode.cpp:526
double getEdgeSpringStiffness() const
Definition SoftBodyNode.cpp:451
math::Inertia mArtInertia2
Definition SoftBodyNode.hpp:317
void aggregateAugMassMatrix(Eigen::MatrixXd &_MCol, std::size_t _col, double _timeStep) override
Definition SoftBodyNode.cpp:907
void setVertexSpringStiffness(double _kv)
Definition SoftBodyNode.cpp:421
void connectPointMasses(std::size_t _idx1, std::size_t _idx2)
Definition SoftBodyNode.cpp:495
void updateVelocity() override
Definition SoftBodyNode.cpp:554
void removeAllPointMasses()
Definition SoftBodyNode.cpp:475
const std::vector< PointMass * > & getPointMasses() const
Return all the point masses in this SoftBodyNode.
Definition SoftBodyNode.cpp:245
void aggregateCombinedVector(Eigen::VectorXd &_Cg, const Eigen::Vector3d &_gravity) override
Definition SoftBodyNode.cpp:1159
void updateConstrainedTerms(double _timeStep) override
Definition SoftBodyNode.cpp:843
void aggregateCoriolisForceVector(Eigen::VectorXd &_C) override
Definition SoftBodyNode.cpp:1102
void addFace(const Eigen::Vector3i &_face)
Definition SoftBodyNode.cpp:506
void updateBiasForce(const Eigen::Vector3d &_gravity, double _timeStep) override
Definition SoftBodyNode.cpp:710
math::Inertia mI2
Generalized inertia with point masses.
Definition SoftBodyNode.hpp:314
void setProperties(const Properties &_properties)
Set the Properties of this SoftBodyNode.
Definition SoftBodyNode.cpp:151
double getMass() const
Get mass.
Definition SoftBodyNode.cpp:410
void updateInertiaWithPointMass()
Definition SoftBodyNode.cpp:1289
void updateInvAugMassMatrix() override
Definition SoftBodyNode.cpp:996
std::size_t getNumPointMasses() const
Definition SoftBodyNode.cpp:223
void init(const SkeletonPtr &_skeleton) override
Definition SoftBodyNode.cpp:352
void updateJointForceFD(double _timeStep, bool _withDampingForces, bool _withSpringForces) override
Definition SoftBodyNode.cpp:651
void aggregateMassMatrix(Eigen::MatrixXd &_MCol, std::size_t _col) override
Definition SoftBodyNode.cpp:861
void setDampingCoefficient(double _damp)
Definition SoftBodyNode.cpp:457
void configurePointMasses(ShapeNode *softNode)
Used by SoftBodyAspect to have this SoftBodyNode reconstruct its SoftMeshShape.
Definition SoftBodyNode.cpp:291
void updateTransform() override
Definition SoftBodyNode.cpp:543
void updateVelocityChangeFD() override
Definition SoftBodyNode.cpp:825
PointMass * getPointMass(std::size_t _idx)
Definition SoftBodyNode.cpp:229
void clearInternalForces() override
Definition SoftBodyNode.cpp:1250
SoftBodyNode & operator=(const SoftBodyNode &_otherSoftBodyNode)
Copy the Properties of another SoftBodyNode.
Definition SoftBodyNode.cpp:216
void _addPiToArtInertiaImplicit(const Eigen::Vector3d &_p, double _ImplicitPi) const
Definition SoftBodyNode.cpp:1274
void clearExternalForces() override
Definition SoftBodyNode.cpp:1241
virtual ~SoftBodyNode()
Definition SoftBodyNode.cpp:130
void updateTransmittedForceID(const Eigen::Vector3d &_gravity, bool _withExternalForces=false) override
Definition SoftBodyNode.cpp:587
void aggregateExternalForces(Eigen::VectorXd &_Fext) override
Definition SoftBodyNode.cpp:1205
void aggregateInvAugMassMatrix(Eigen::MatrixXd &_InvMCol, std::size_t _col, double _timeStep) override
Definition SoftBodyNode.cpp:1066
math::Inertia mArtInertiaImplicit2
Definition SoftBodyNode.hpp:320
void updateInvMassMatrix() override
Definition SoftBodyNode.cpp:959
void updateCombinedVector() override
Definition SoftBodyNode.cpp:1150
void checkArticulatedInertiaUpdate() const
Update articulated inertia if necessary.
Definition SoftBodyNode.cpp:535
PointMassNotifier * getNotifier()
Get the update notifier for the PointMasses of this SoftBodyNode.
Definition SoftBodyNode.cpp:398
double getVertexSpringStiffness() const
Definition SoftBodyNode.cpp:433
SoftBodyNode * asSoftBodyNode() override
Definition SoftBodyNode.cpp:139
double getDampingCoefficient() const
Definition SoftBodyNode.cpp:469
void updateTransmittedImpulse() override
Definition SoftBodyNode.cpp:834
void setEdgeSpringStiffness(double _ke)
Definition SoftBodyNode.cpp:439
const Eigen::Vector3i & getFace(std::size_t _idx) const
Definition SoftBodyNode.cpp:513
void updateAccelerationID() override
Definition SoftBodyNode.cpp:576
#define DART_BAKE_SPECIALIZED_ASPECT_IRREGULAR(TypeName, AspectName)
Definition Composite.hpp:164
common::EmbedStateAndPropertiesOnTopOf< SoftBodyNode, SoftBodyNodeUniqueState, SoftBodyNodeUniqueProperties, BodyNode > SoftBodyNodeBase
Definition SoftBodyNodeAspect.hpp:125
const double DART_DEFAULT_DAMPING_COEFF
Definition SoftBodyNodeAspect.hpp:45
const double DART_DEFAULT_VERTEX_STIFFNESS
Definition SoftBodyNodeAspect.hpp:43
std::shared_ptr< Skeleton > SkeletonPtr
Definition SmartPointer.hpp:60
const double DART_DEFAULT_EDGE_STIFNESS
Definition SoftBodyNodeAspect.hpp:44
Eigen::Matrix6d Inertia
Definition MathTypes.hpp:111
Definition BulletCollisionDetector.cpp:60
Properties for each PointMass.
Definition PointMass.hpp:86
Definition SoftBodyNodeAspect.hpp:109
Definition SoftBodyNodeAspect.hpp:66