DART
6.10.1
|
SoftBodyNode represent a soft body that has one deformable skin. More...
#include <SoftBodyNode.hpp>
Public Types | |
using | UniqueProperties = detail::SoftBodyNodeUniqueProperties |
using | Properties = detail::SoftBodyNodeProperties |
using | Base = detail::SoftBodyNodeBase |
using | Impl = EmbedStateAndProperties< DerivedT, StateDataT, PropertiesDataT > |
using | Derived = typename Impl::Derived |
using | AspectStateData = typename Impl::AspectStateData |
using | AspectState = typename Impl::AspectState |
using | AspectPropertiesData = typename Impl::AspectPropertiesData |
using | AspectProperties = typename Impl::AspectProperties |
using | Aspect = typename Impl::Aspect |
Public Member Functions | |
bool | hasSoftBodyAspect () const |
Check if this Composite currently has SoftBodyAspect . More... | |
Aspect * | getSoftBodyAspect () |
Get a(an) SoftBodyAspect from this Composite. More... | |
const Aspect * | getSoftBodyAspect () const |
Get a(an) SoftBodyAspect from this Composite. More... | |
Aspect * | getSoftBodyAspect (const bool createIfNull) |
Get a(an) SoftBodyAspect from this Composite. More... | |
void | setSoftBodyAspect (const Aspect *aspect) |
Make a clone of SoftBodyAspect and place the clone into this Composite. More... | |
void | setSoftBodyAspect (std::unique_ptr< Aspect > &&aspect) |
Use move semantics to place SoftBodyAspect into this Composite. More... | |
template<typename... Args> | |
Aspect * | createSoftBodyAspect (Args &&... args) |
Construct a(an) SoftBodyAspect inside of this Composite. More... | |
void | removeSoftBodyAspect () |
Remove a(an) SoftBodyAspect from this Composite. More... | |
std::unique_ptr< Aspect > | releaseSoftBodyAspect () |
Remove a(an) SoftBodyAspect from this Composite, but return its unique_ptr instead of letting it be deleted. More... | |
virtual | ~SoftBodyNode () |
SoftBodyNode * | asSoftBodyNode () override |
const SoftBodyNode * | asSoftBodyNode () const override |
void | setProperties (const Properties &_properties) |
Set the Properties of this SoftBodyNode. More... | |
void | setProperties (const UniqueProperties &_properties) |
Set the Properties of this SoftBodyNode. More... | |
void | setAspectState (const AspectState &state) |
Set the AspectState of this SoftBodyNode. More... | |
void | setAspectProperties (const AspectProperties &properties) |
Set the AspectProperties of this SoftBodyNode. More... | |
Properties | getSoftBodyNodeProperties () const |
Get the Properties of this SoftBodyNode. More... | |
void | copy (const SoftBodyNode &_otherSoftBodyNode) |
Copy the Properties of another SoftBodyNode. More... | |
void | copy (const SoftBodyNode *_otherSoftBodyNode) |
Copy the Properties of another SoftBodyNode. More... | |
SoftBodyNode & | operator= (const SoftBodyNode &_otherSoftBodyNode) |
Copy the Properties of another SoftBodyNode. More... | |
PointMassNotifier * | getNotifier () |
Get the update notifier for the PointMasses of this SoftBodyNode. More... | |
const PointMassNotifier * | getNotifier () const |
Get the update notifier for the PointMasses of this SoftBodyNode. More... | |
double | getMass () const |
Get mass. More... | |
void | setVertexSpringStiffness (double _kv) |
double | getVertexSpringStiffness () const |
void | setEdgeSpringStiffness (double _ke) |
double | getEdgeSpringStiffness () const |
void | setDampingCoefficient (double _damp) |
double | getDampingCoefficient () const |
void | removeAllPointMasses () |
PointMass * | addPointMass (const PointMass::Properties &_properties) |
std::size_t | getNumPointMasses () const |
PointMass * | getPointMass (std::size_t _idx) |
const PointMass * | getPointMass (std::size_t _idx) const |
const std::vector< PointMass * > & | getPointMasses () const |
Return all the point masses in this SoftBodyNode. More... | |
void | connectPointMasses (std::size_t _idx1, std::size_t _idx2) |
void | addFace (const Eigen::Vector3i &_face) |
const Eigen::Vector3i & | getFace (std::size_t _idx) const |
std::size_t | getNumFaces () const |
void | clearConstraintImpulse () override |
std::shared_ptr< Skeleton > | getSkeleton () |
Return the Skeleton this BodyNode belongs to. More... | |
std::shared_ptr< const Skeleton > | getSkeleton () const |
Return the (const) Skeleton this BodyNode belongs to. More... | |
const AspectProperties & | getAspectProperties () const |
const AspectState & | getAspectState () const |
Protected Member Functions | |
SoftBodyNode (BodyNode *_parentBodyNode, Joint *_parentJoint, const Properties &_properties) | |
Constructor called by Skeleton class. More... | |
BodyNode * | clone (BodyNode *_parentBodyNode, Joint *_parentJoint, bool cloneNodes) const override |
Create a clone of this SoftBodyNode. More... | |
void | configurePointMasses (ShapeNode *softNode) |
Used by SoftBodyAspect to have this SoftBodyNode reconstruct its SoftMeshShape. More... | |
void | init (const SkeletonPtr &_skeleton) override |
void | clearExternalForces () override |
void | clearInternalForces () override |
Recursive dynamics routines | |
void | checkArticulatedInertiaUpdate () const |
Update articulated inertia if necessary. More... | |
void | updateTransform () override |
void | updateVelocity () override |
void | updatePartialAcceleration () const override |
void | updateArtInertia (double _timeStep) const override |
void | updateBiasForce (const Eigen::Vector3d &_gravity, double _timeStep) override |
void | updateBiasImpulse () override |
void | updateAccelerationID () override |
void | updateAccelerationFD () override |
void | updateVelocityChangeFD () override |
void | updateTransmittedForceID (const Eigen::Vector3d &_gravity, bool _withExternalForces=false) override |
void | updateTransmittedForceFD () override |
void | updateTransmittedImpulse () override |
void | updateJointForceID (double _timeStep, bool _withDampingForces, bool _withSpringForces) override |
void | updateJointForceFD (double _timeStep, bool _withDampingForces, bool _withSpringForces) override |
void | updateJointImpulseFD () override |
void | updateConstrainedTerms (double _timeStep) override |
Equations of motion related routines | |
void | updateMassMatrix () override |
void | aggregateMassMatrix (Eigen::MatrixXd &_MCol, std::size_t _col) override |
void | aggregateAugMassMatrix (Eigen::MatrixXd &_MCol, std::size_t _col, double _timeStep) override |
void | updateInvMassMatrix () override |
void | updateInvAugMassMatrix () override |
void | aggregateInvMassMatrix (Eigen::MatrixXd &_InvMCol, std::size_t _col) override |
void | aggregateInvAugMassMatrix (Eigen::MatrixXd &_InvMCol, std::size_t _col, double _timeStep) override |
void | aggregateCoriolisForceVector (Eigen::VectorXd &_C) override |
void | aggregateGravityForceVector (Eigen::VectorXd &_g, const Eigen::Vector3d &_gravity) override |
void | updateCombinedVector () override |
void | aggregateCombinedVector (Eigen::VectorXd &_Cg, const Eigen::Vector3d &_gravity) override |
void | aggregateExternalForces (Eigen::VectorXd &_Fext) override |
Protected Attributes | |
std::vector< PointMass * > | mPointMasses |
List of point masses composing deformable mesh. More... | |
PointMassNotifier * | mNotifier |
An Entity which tracks when the point masses need to be updated. More... | |
WeakShapeNodePtr | mSoftShapeNode |
Soft mesh shape belonging to this node. More... | |
math::Inertia | mI2 |
Generalized inertia with point masses. More... | |
math::Inertia | mArtInertia2 |
math::Inertia | mArtInertiaImplicit2 |
AspectProperties | mAspectProperties |
Aspect::Properties data, directly accessible to your derived class. More... | |
AspectState | mAspectState |
Aspect::State data, directly accessible to your derived class. More... | |
Private Member Functions | |
void | _addPiToArtInertia (const Eigen::Vector3d &_p, double _Pi) const |
void | _addPiToArtInertiaImplicit (const Eigen::Vector3d &_p, double _ImplicitPi) const |
void | updateInertiaWithPointMass () |
Friends | |
class | Skeleton |
class | PointMass |
class | PointMassNotifier |
SoftBodyNode represent a soft body that has one deformable skin.
This class is implementation of Sumit Jain and C. Karen Liu's paper: http://www.cc.gatech.edu/graphics/projects/Sumit/homepage/projects/softcontacts/index.html
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
virtual |
|
protected |
Constructor called by Skeleton class.
|
private |
|
private |
void dart::dynamics::SoftBodyNode::addFace | ( | const Eigen::Vector3i & | _face | ) |
PointMass * dart::dynamics::SoftBodyNode::addPointMass | ( | const PointMass::Properties & | _properties | ) |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
mPointMasses.at(i)->aggregateInvAugMassMatrix(_InvMCol, _col, _timeStep);
|
overrideprotected |
|
overrideprotected |
|
override |
|
override |
|
protected |
Update articulated inertia if necessary.
|
override |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
Create a clone of this SoftBodyNode.
This may only be called by the Skeleton class.
|
protected |
Used by SoftBodyAspect to have this SoftBodyNode reconstruct its SoftMeshShape.
void dart::dynamics::SoftBodyNode::connectPointMasses | ( | std::size_t | _idx1, |
std::size_t | _idx2 | ||
) |
void dart::dynamics::SoftBodyNode::copy | ( | const SoftBodyNode & | _otherSoftBodyNode | ) |
Copy the Properties of another SoftBodyNode.
void dart::dynamics::SoftBodyNode::copy | ( | const SoftBodyNode * | _otherSoftBodyNode | ) |
Copy the Properties of another SoftBodyNode.
|
inline |
Construct a(an) SoftBodyAspect inside of this Composite.
|
inlineinherited |
|
inlineinherited |
double dart::dynamics::SoftBodyNode::getDampingCoefficient | ( | ) | const |
double dart::dynamics::SoftBodyNode::getEdgeSpringStiffness | ( | ) | const |
const Eigen::Vector3i & dart::dynamics::SoftBodyNode::getFace | ( | std::size_t | _idx | ) | const |
double dart::dynamics::SoftBodyNode::getMass | ( | ) | const |
Get mass.
PointMassNotifier * dart::dynamics::SoftBodyNode::getNotifier | ( | ) |
Get the update notifier for the PointMasses of this SoftBodyNode.
const PointMassNotifier * dart::dynamics::SoftBodyNode::getNotifier | ( | ) | const |
Get the update notifier for the PointMasses of this SoftBodyNode.
std::size_t dart::dynamics::SoftBodyNode::getNumFaces | ( | ) | const |
std::size_t dart::dynamics::SoftBodyNode::getNumPointMasses | ( | ) | const |
PointMass * dart::dynamics::SoftBodyNode::getPointMass | ( | std::size_t | _idx | ) |
const PointMass * dart::dynamics::SoftBodyNode::getPointMass | ( | std::size_t | _idx | ) | const |
const std::vector< PointMass * > & dart::dynamics::SoftBodyNode::getPointMasses | ( | ) | const |
Return all the point masses in this SoftBodyNode.
SkeletonPtr dart::dynamics::SkeletonRefCountingBase::getSkeleton |
ConstSkeletonPtr dart::dynamics::SkeletonRefCountingBase::getSkeleton |
|
inline |
Get a(an) SoftBodyAspect from this Composite.
|
inline |
Get a(an) SoftBodyAspect from this Composite.
|
inline |
Get a(an) SoftBodyAspect from this Composite.
If _createIfNull is true, then a(an) SoftBodyAspect will be generated if one does not already exist.
SoftBodyNode::Properties dart::dynamics::SoftBodyNode::getSoftBodyNodeProperties | ( | ) | const |
Get the Properties of this SoftBodyNode.
double dart::dynamics::SoftBodyNode::getVertexSpringStiffness | ( | ) | const |
|
inline |
Check if this Composite currently has SoftBodyAspect .
|
overrideprotected |
SoftBodyNode & dart::dynamics::SoftBodyNode::operator= | ( | const SoftBodyNode & | _otherSoftBodyNode | ) |
Copy the Properties of another SoftBodyNode.
|
inline |
Remove a(an) SoftBodyAspect from this Composite, but return its unique_ptr instead of letting it be deleted.
This allows you to safely use move semantics to transfer a(an) SoftBodyAspect between two Composites.
void dart::dynamics::SoftBodyNode::removeAllPointMasses | ( | ) |
|
inline |
Remove a(an) SoftBodyAspect from this Composite.
void dart::dynamics::SoftBodyNode::setAspectProperties | ( | const AspectProperties & | properties | ) |
Set the AspectProperties of this SoftBodyNode.
void dart::dynamics::SoftBodyNode::setAspectState | ( | const AspectState & | state | ) |
Set the AspectState of this SoftBodyNode.
void dart::dynamics::SoftBodyNode::setDampingCoefficient | ( | double | _damp | ) |
void dart::dynamics::SoftBodyNode::setEdgeSpringStiffness | ( | double | _ke | ) |
void dart::dynamics::SoftBodyNode::setProperties | ( | const Properties & | _properties | ) |
Set the Properties of this SoftBodyNode.
void dart::dynamics::SoftBodyNode::setProperties | ( | const UniqueProperties & | _properties | ) |
Set the Properties of this SoftBodyNode.
|
inline |
Make a clone of SoftBodyAspect and place the clone into this Composite.
If a(an) SoftBodyAspect already exists in this Composite, the existing SoftBodyAspect will be destroyed.
|
inline |
Use move semantics to place SoftBodyAspect into this Composite.
If a(an) SoftBodyAspect already exists in this Composite, the existing SoftBodyAspect will be destroyed.
void dart::dynamics::SoftBodyNode::setVertexSpringStiffness | ( | double | _kv | ) |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
private |
|
overrideprotected |
mInvM_c.head<3>() += (*it)->getLocalPosition().cross((*it)->mBiasForceForInvMeta); / mInvM_c.tail<3>() += (*it)->mBiasForceForInvMeta; / }
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
friend |
|
friend |
|
friend |
|
protected |
|
protected |
|
protectedinherited |
Aspect::Properties data, directly accessible to your derived class.
|
protectedinherited |
Aspect::State data, directly accessible to your derived class.
|
protected |
Generalized inertia with point masses.
|
protected |
An Entity which tracks when the point masses need to be updated.
|
protected |
List of point masses composing deformable mesh.
|
protected |
Soft mesh shape belonging to this node.