![]() |
PeriDyno 1.2.1
|
Implementation of a rigid body system containing a variety of rigid bodies with different shapes. More...
#include <RigidBodySystem.h>


Public Types | |
| typedef TDataType::Real | Real |
| typedef TDataType::Coord | Coord |
| typedef TDataType::Matrix | Matrix |
| typedef dyno::TSphere3D< Real > | Sphere3D |
| typedef dyno::TOrientedBox3D< Real > | Box3D |
| typedef dyno::Quat< Real > | TQuat |
| typedef dyno::TContactPair< Real > | ContactPair |
| typedef ::dyno::BallAndSocketJoint< Real > | BallAndSocketJoint |
| typedef ::dyno::SliderJoint< Real > | SliderJoint |
| typedef ::dyno::HingeJoint< Real > | HingeJoint |
| typedef ::dyno::FixedJoint< Real > | FixedJoint |
| typedef ::dyno::PointJoint< Real > | PointJoint |
Public Types inherited from dyno::Node | |
| template<class T> | |
| using | SPtr = std::shared_ptr<T> |
Public Types inherited from dyno::OBase | |
| typedef std::vector< FBase * > | FieldVector |
| typedef std::map< FieldID, FBase * > | FieldMap |
Public Member Functions | |
| RigidBodySystem () | |
| ~RigidBodySystem () override | |
| std::shared_ptr< PdActor > | addBox (const BoxInfo &box, const RigidBodyInfo &bodyDef, const Real density=Real(100)) |
| std::shared_ptr< PdActor > | addSphere (const SphereInfo &sphere, const RigidBodyInfo &bodyDef, const Real density=Real(100)) |
| std::shared_ptr< PdActor > | addTet (const TetInfo &tet, const RigidBodyInfo &bodyDef, const Real density=Real(100)) |
| std::shared_ptr< PdActor > | addCapsule (const CapsuleInfo &capsule, const RigidBodyInfo &bodyDef, const Real density=Real(100)) |
| std::shared_ptr< PdActor > | createRigidBody (const Coord &p, const TQuat &q) |
| std::shared_ptr< PdActor > | createRigidBody (const RigidBodyInfo &bodyDef) |
| void | bindBox (const std::shared_ptr< PdActor > actor, const BoxInfo &box, const Real density=Real(100)) |
| void | bindSphere (const std::shared_ptr< PdActor > actor, const SphereInfo &sphere, const Real density=Real(100)) |
| void | bindCapsule (const std::shared_ptr< PdActor > actor, const CapsuleInfo &capsule, const Real density=Real(100)) |
| void | bindTet (const std::shared_ptr< PdActor > actor, const TetInfo &tet, const Real density=Real(100)) |
| BallAndSocketJoint & | createBallAndSocketJoint (std::shared_ptr< PdActor > actor1, std::shared_ptr< PdActor > actor2) |
| SliderJoint & | createSliderJoint (std::shared_ptr< PdActor > actor1, std::shared_ptr< PdActor > actor2) |
| HingeJoint & | createHingeJoint (std::shared_ptr< PdActor > actor1, std::shared_ptr< PdActor > actor2) |
| FixedJoint & | createFixedJoint (std::shared_ptr< PdActor > actor1, std::shared_ptr< PdActor > actor2) |
| FixedJoint & | createUnilateralFixedJoint (std::shared_ptr< PdActor > actor1) |
| PointJoint & | createPointJoint (std::shared_ptr< PdActor > actor1) |
| Mat3f | pointInertia (Coord v1) |
| std::string | getNodeType () override |
| DEF_VAR (bool, FrictionEnabled, true, "A toggle to control the friction") | |
| DEF_VAR (bool, GravityEnabled, true, "A toggle to control the gravity") | |
| DEF_VAR (Real, GravityValue, 9.8, "") | |
| DEF_VAR (Real, FrictionCoefficient, 200, "") | |
| DEF_VAR (Real, Slop, 0.0001, "") | |
| DEF_INSTANCE_STATE (DiscreteElements< TDataType >, Topology, "Topology") | |
| DEF_ARRAY_STATE (Real, FrictionCoefficients, DeviceType::GPU, "FrictionCoefficients of rigid bodies") | |
| DEF_ARRAY_STATE (Real, Mass, DeviceType::GPU, "Mass of rigid bodies") | |
| Rigid Mass. | |
| DEF_ARRAY_STATE (Coord, Center, DeviceType::GPU, "Center of rigid bodies") | |
| Rigid Position. | |
| DEF_ARRAY_STATE (Coord, Velocity, DeviceType::GPU, "Velocity of rigid bodies") | |
| Rigid Velocity. | |
| DEF_ARRAY_STATE (Coord, AngularVelocity, DeviceType::GPU, "Angular velocity of rigid bodies") | |
| Rigid Angular Velocity. | |
| DEF_ARRAY_STATE (Matrix, RotationMatrix, DeviceType::GPU, "Rotation matrix of rigid bodies") | |
| Rigid Rotation. | |
| DEF_ARRAY_STATE (Matrix, Inertia, DeviceType::GPU, "Inertia matrix") | |
| DEF_ARRAY_STATE (TQuat, Quaternion, DeviceType::GPU, "Quaternion") | |
| DEF_ARRAY_STATE (CollisionMask, CollisionMask, DeviceType::GPU, "Collision mask for each rigid body") | |
| DEF_ARRAY_STATE (Attribute, Attribute, DeviceType::GPU, "Rigid body attributes") | |
| DEF_ARRAY_STATE (Matrix, InitialInertia, DeviceType::GPU, "Initial inertia matrix") | |
| int | getSamplingPointSize () |
| DArray2D< Vec3f > | getSamples () |
| DArray2D< Vec3f > | getNormals () |
Public Member Functions inherited from dyno::Node | |
| Node () | |
| ~Node () override | |
| void | setName (std::string name) |
| std::string | getName () override |
| bool | isAutoSync () |
| bool | isAutoHidden () |
| void | setAutoSync (bool con) |
| Whether the node can be automatically synchronized when its ancestor is updated. | |
| void | setAutoHidden (bool con) |
| virtual bool | isActive () |
| Check the state of dynamics. | |
| virtual void | setActive (bool active) |
| Set the state of dynamics. | |
| virtual bool | isVisible () |
| Check the visibility of context. | |
| virtual void | setVisible (bool visible) |
| Set the visibility of context. | |
| virtual Real | getDt () |
| Simulation timestep. | |
| void | setDt (Real dt) |
| void | setSceneGraph (SceneGraph *scn) |
| SceneGraph * | getSceneGraph () |
| std::vector< NodePort * > & | getImportNodes () |
| std::vector< NodePort * > & | getExportNodes () |
| bool | addModule (std::shared_ptr< Module > module) |
| Add a module to m_module_list and other special module lists. | |
| bool | deleteModule (std::shared_ptr< Module > module) |
| template<class TModule> | |
| bool | addModule (std::shared_ptr< TModule > tModule) |
| Add a speical kind of module. | |
| template<class TModule> | |
| bool | deleteModule (std::shared_ptr< TModule > tModule) |
| std::list< std::shared_ptr< Module > > & | getModuleList () |
| bool | hasModule (std::string name) |
| std::shared_ptr< Module > | getModule (std::string name) |
| Get a module by its name. | |
| template<class TModule> | |
| std::shared_ptr< TModule > | getModule () |
| Get the Module by the module class name. | |
| template<class TModule> | |
| std::shared_ptr< TModule > | getModule (std::string name) |
| std::shared_ptr< Pipeline > | resetPipeline () |
| std::shared_ptr< AnimationPipeline > | animationPipeline () |
| std::shared_ptr< GraphicsPipeline > | graphicsPipeline () |
| template<class TModule> | |
| std::shared_ptr< TModule > | addModule (std::string name) |
| void | update () |
| Called every time interval. | |
| void | updateGraphicsContext () |
| void | reset () |
| virtual NBoundingBox | boundingBox () |
| bool | connect (NodePort *nPort) |
| Depth-first tree traversal. | |
| bool | disconnect (NodePort *nPort) |
| bool | attachField (FBase *field, std::string name, std::string desc, bool autoDestroy=true) override |
| Attach a field to Node. | |
| std::vector< NodePort * > & | getAllNodePorts () |
| uint | sizeOfNodePorts () |
| uint | sizeOfImportNodes () const |
| uint | sizeOfExportNodes () const |
| void | setForceUpdate (bool b) |
| DEF_VAR_STATE (Real, ElapsedTime, 0, "Elapsed Time") | |
| DEF_VAR_STATE (Real, TimeStep, Real(0.033), "Time step size") | |
| DEF_VAR_STATE (uint, FrameNumber, 0, "Frame number") | |
Public Member Functions inherited from dyno::OBase | |
| OBase () | |
| ~OBase () override | |
| virtual std::string | caption () |
| Return the caption. | |
| virtual bool | captionVisible () |
| Whether to hide the caption in the GUI. | |
| virtual std::string | description () |
| Return a description for the node or module, override this function to support user-defined description. | |
| bool | addField (FBase *data) |
| Add a field to Base FieldID will be set to the name of Field by default. | |
| bool | addField (FieldID name, FBase *data) |
| Add a field to Base. | |
| bool | addFieldAlias (FieldID name, FBase *data) |
| bool | addFieldAlias (FieldID name, FBase *data, FieldMap &fieldAlias) |
| bool | findField (FBase *data) |
| Find a field by its pointer. | |
| bool | findFieldAlias (const FieldID name) |
| Find a field by its name. | |
| bool | findFieldAlias (const FieldID name, FieldMap &fieldAlias) |
| Find a field in fieldAlias by its name This function is typically called by other functions. | |
| bool | removeField (FBase *data) |
| Remove a field by its pointer. | |
| bool | removeFieldAlias (const FieldID name) |
| Remove a field by its name. | |
| bool | removeFieldAlias (const FieldID name, FieldMap &fieldAlias) |
| FBase * | getField (const FieldID name) |
| Return a field by its name. | |
| std::vector< FBase * > & | getAllFields () |
| template<typename T> | |
| T * | getField (FieldID name) |
| bool | isAllFieldsReady () |
| Check the completeness of all required fields. | |
| std::vector< FieldID > | getFieldAlias (FBase *data) |
| int | getFieldAliasCount (FBase *data) |
| void | setBlockCoord (float x, float y) |
| float | bx () |
| float | by () |
| bool | findInputField (FBase *field) |
| bool | addInputField (FBase *field) |
| bool | removeInputField (FBase *field) |
| std::vector< FBase * > & | getInputFields () |
| bool | findOutputField (FBase *field) |
| bool | addOutputField (FBase *field) |
| bool | addToOutput (FBase *field) |
| bool | removeOutputField (FBase *field) |
| bool | removeFromOutput (FBase *field) |
| std::vector< FBase * > & | getOutputFields () |
| bool | findParameter (FBase *field) |
| bool | addParameter (FBase *field) |
| bool | removeParameter (FBase *field) |
| std::vector< FBase * > & | getParameters () |
Public Member Functions inherited from dyno::Object | |
| Object () | |
| virtual | ~Object () |
| ObjectId | objectId () |
Public Attributes | |
| int | m_numOfSamples |
| DArray2D< Vec3f > | m_deviceSamples |
| DArray2D< Vec3f > | m_deviceNormals |
| std::vector< Vec3f > | samples |
| std::vector< Vec3f > | normals |
Public Attributes inherited from dyno::Node | |
| std::string | m_node_name |
Protected Member Functions | |
| void | resetStates () override |
| void | postUpdateStates () override |
| void | clearRigidBodySystem () |
Protected Member Functions inherited from dyno::Node | |
| bool | appendExportNode (NodePort *nodePort) |
| bool | removeExportNode (NodePort *nodePort) |
| virtual void | preUpdateStates () |
| virtual void | updateStates () |
| virtual void | updateTopology () |
| virtual bool | validateInputs () |
| virtual bool | requireUpdate () |
| void | tick () |
| notify all state and output fields are updated | |
Private Member Functions | |
| void | setupShape2RigidBodyMapping () |
Private Attributes | |
| std::vector< RigidBodyInfo > | mHostRigidBodyStates |
| std::vector< SphereInfo > | mHostSpheres |
| std::vector< BoxInfo > | mHostBoxes |
| std::vector< TetInfo > | mHostTets |
| std::vector< CapsuleInfo > | mHostCapsules |
| DArray< RigidBodyInfo > | mDeviceRigidBodyStates |
| DArray< SphereInfo > | mDeviceSpheres |
| DArray< BoxInfo > | mDeviceBoxes |
| DArray< TetInfo > | mDeviceTets |
| DArray< CapsuleInfo > | mDeviceCapsules |
| std::vector< BallAndSocketJoint > | mHostJointsBallAndSocket |
| std::vector< SliderJoint > | mHostJointsSlider |
| std::vector< HingeJoint > | mHostJointsHinge |
| std::vector< FixedJoint > | mHostJointsFixed |
| std::vector< PointJoint > | mHostJointsPoint |
| std::vector< Pair< uint, uint > > | mHostShape2RigidBodyMapping |
Additional Inherited Members | |
Static Public Member Functions inherited from dyno::Object | |
| static bool | registerClass (ClassInfo *ci) |
| static Object * | createObject (std::string name) |
| static std::map< std::string, ClassInfo * > * | getClassMap () |
| static ObjectId | baseId () |
| Base Id. | |
Protected Attributes inherited from dyno::OBase | |
| std::vector< FBase * > | fields_input |
| std::vector< FBase * > | fields_output |
| std::vector< FBase * > | fields_param |
Implementation of a rigid body system containing a variety of rigid bodies with different shapes.
Definition at line 33 of file RigidBodySystem.h.
| typedef ::dyno::BallAndSocketJoint<Real> dyno::RigidBodySystem< TDataType >::BallAndSocketJoint |
Definition at line 46 of file RigidBodySystem.h.
| typedef dyno::TOrientedBox3D<Real> dyno::RigidBodySystem< TDataType >::Box3D |
Definition at line 41 of file RigidBodySystem.h.
| typedef dyno::TContactPair<Real> dyno::RigidBodySystem< TDataType >::ContactPair |
Definition at line 44 of file RigidBodySystem.h.
| typedef TDataType::Coord dyno::RigidBodySystem< TDataType >::Coord |
Definition at line 37 of file RigidBodySystem.h.
| typedef ::dyno::FixedJoint<Real> dyno::RigidBodySystem< TDataType >::FixedJoint |
Definition at line 49 of file RigidBodySystem.h.
| typedef ::dyno::HingeJoint<Real> dyno::RigidBodySystem< TDataType >::HingeJoint |
Definition at line 48 of file RigidBodySystem.h.
| typedef TDataType::Matrix dyno::RigidBodySystem< TDataType >::Matrix |
Definition at line 38 of file RigidBodySystem.h.
| typedef ::dyno::PointJoint<Real> dyno::RigidBodySystem< TDataType >::PointJoint |
Definition at line 50 of file RigidBodySystem.h.
| typedef TDataType::Real dyno::RigidBodySystem< TDataType >::Real |
Definition at line 36 of file RigidBodySystem.h.
| typedef ::dyno::SliderJoint<Real> dyno::RigidBodySystem< TDataType >::SliderJoint |
Definition at line 47 of file RigidBodySystem.h.
| typedef dyno::TSphere3D<Real> dyno::RigidBodySystem< TDataType >::Sphere3D |
Definition at line 40 of file RigidBodySystem.h.
| typedef dyno::Quat<Real> dyno::RigidBodySystem< TDataType >::TQuat |
Definition at line 42 of file RigidBodySystem.h.
| dyno::RigidBodySystem< TDataType >::RigidBodySystem | ( | ) |

|
override |
| std::shared_ptr< PdActor > dyno::RigidBodySystem< TDataType >::addBox | ( | const BoxInfo & | box, |
| const RigidBodyInfo & | bodyDef, | ||
| const Real | density = Real(100) ) |

| std::shared_ptr< PdActor > dyno::RigidBodySystem< TDataType >::addCapsule | ( | const CapsuleInfo & | capsule, |
| const RigidBodyInfo & | bodyDef, | ||
| const Real | density = Real(100) ) |

| std::shared_ptr< PdActor > dyno::RigidBodySystem< TDataType >::addSphere | ( | const SphereInfo & | sphere, |
| const RigidBodyInfo & | bodyDef, | ||
| const Real | density = Real(100) ) |

| std::shared_ptr< PdActor > dyno::RigidBodySystem< TDataType >::addTet | ( | const TetInfo & | tet, |
| const RigidBodyInfo & | bodyDef, | ||
| const Real | density = Real(100) ) |
| void dyno::RigidBodySystem< TDataType >::bindBox | ( | const std::shared_ptr< PdActor > | actor, |
| const BoxInfo & | box, | ||
| const Real | density = Real(100) ) |

| void dyno::RigidBodySystem< TDataType >::bindCapsule | ( | const std::shared_ptr< PdActor > | actor, |
| const CapsuleInfo & | capsule, | ||
| const Real | density = Real(100) ) |

| void dyno::RigidBodySystem< TDataType >::bindSphere | ( | const std::shared_ptr< PdActor > | actor, |
| const SphereInfo & | sphere, | ||
| const Real | density = Real(100) ) |

| void dyno::RigidBodySystem< TDataType >::bindTet | ( | const std::shared_ptr< PdActor > | actor, |
| const TetInfo & | tet, | ||
| const Real | density = Real(100) ) |
|
protected |

|
inline |
|
inline |
|
inline |
|
inline |
| std::shared_ptr< PdActor > dyno::RigidBodySystem< TDataType >::createRigidBody | ( | const Coord & | p, |
| const TQuat & | q ) |

| std::shared_ptr< PdActor > dyno::RigidBodySystem< TDataType >::createRigidBody | ( | const RigidBodyInfo & | bodyDef | ) |
|
inline |
|
inline |
Definition at line 142 of file RigidBodySystem.h.
| dyno::RigidBodySystem< TDataType >::DEF_ARRAY_STATE | ( | Attribute | , |
| Attribute | , | ||
| DeviceType::GPU | , | ||
| "Rigid body attributes" | ) |
| dyno::RigidBodySystem< TDataType >::DEF_ARRAY_STATE | ( | CollisionMask | , |
| CollisionMask | , | ||
| DeviceType::GPU | , | ||
| "Collision mask for each rigid body" | ) |
| dyno::RigidBodySystem< TDataType >::DEF_ARRAY_STATE | ( | Coord | , |
| AngularVelocity | , | ||
| DeviceType::GPU | , | ||
| "Angular velocity of rigid bodies" | ) |
Rigid Angular Velocity.
| dyno::RigidBodySystem< TDataType >::DEF_ARRAY_STATE | ( | Coord | , |
| Center | , | ||
| DeviceType::GPU | , | ||
| "Center of rigid bodies" | ) |
Rigid Position.
| dyno::RigidBodySystem< TDataType >::DEF_ARRAY_STATE | ( | Coord | , |
| Velocity | , | ||
| DeviceType::GPU | , | ||
| "Velocity of rigid bodies" | ) |
Rigid Velocity.
| dyno::RigidBodySystem< TDataType >::DEF_ARRAY_STATE | ( | Matrix | , |
| Inertia | , | ||
| DeviceType::GPU | , | ||
| "Inertia matrix" | ) |
| dyno::RigidBodySystem< TDataType >::DEF_ARRAY_STATE | ( | Matrix | , |
| InitialInertia | , | ||
| DeviceType::GPU | , | ||
| "Initial inertia matrix" | ) |
| dyno::RigidBodySystem< TDataType >::DEF_ARRAY_STATE | ( | Matrix | , |
| RotationMatrix | , | ||
| DeviceType::GPU | , | ||
| "Rotation matrix of rigid bodies" | ) |
Rigid Rotation.
| dyno::RigidBodySystem< TDataType >::DEF_ARRAY_STATE | ( | Real | , |
| FrictionCoefficients | , | ||
| DeviceType::GPU | , | ||
| "FrictionCoefficients of rigid bodies" | ) |
| dyno::RigidBodySystem< TDataType >::DEF_ARRAY_STATE | ( | Real | , |
| Mass | , | ||
| DeviceType::GPU | , | ||
| "Mass of rigid bodies" | ) |
Rigid Mass.
| dyno::RigidBodySystem< TDataType >::DEF_ARRAY_STATE | ( | TQuat | , |
| Quaternion | , | ||
| DeviceType::GPU | , | ||
| "Quaternion" | ) |
| dyno::RigidBodySystem< TDataType >::DEF_INSTANCE_STATE | ( | DiscreteElements< TDataType > | , |
| Topology | , | ||
| "Topology" | ) |
| dyno::RigidBodySystem< TDataType >::DEF_VAR | ( | bool | , |
| FrictionEnabled | , | ||
| true | , | ||
| "A toggle to control the friction" | ) |
| dyno::RigidBodySystem< TDataType >::DEF_VAR | ( | bool | , |
| GravityEnabled | , | ||
| true | , | ||
| "A toggle to control the gravity" | ) |
| dyno::RigidBodySystem< TDataType >::DEF_VAR | ( | Real | , |
| FrictionCoefficient | , | ||
| 200 | , | ||
| "" | ) |
| dyno::RigidBodySystem< TDataType >::DEF_VAR | ( | Real | , |
| GravityValue | , | ||
| 9. | 8, | ||
| "" | ) |
| dyno::RigidBodySystem< TDataType >::DEF_VAR | ( | Real | , |
| Slop | , | ||
| 0. | 0001, | ||
| "" | ) |
|
inlineoverridevirtual |
Reimplemented from dyno::Node.
Definition at line 162 of file RigidBodySystem.h.
|
inline |
Definition at line 257 of file RigidBodySystem.h.
|
inline |
Definition at line 256 of file RigidBodySystem.h.
|
inline |
Definition at line 254 of file RigidBodySystem.h.
| Mat3f dyno::RigidBodySystem< TDataType >::pointInertia | ( | Coord | v1 | ) |
|
overrideprotectedvirtual |
|
overrideprotectedvirtual |
Reimplemented from dyno::Node.
Reimplemented in dyno::Tank< TDataType >, dyno::TrackedTank< TDataType >, dyno::UAV< TDataType >, and dyno::UUV< TDataType >.
|
private |
| DArray2D<Vec3f> dyno::RigidBodySystem< TDataType >::m_deviceNormals |
Definition at line 249 of file RigidBodySystem.h.
| DArray2D<Vec3f> dyno::RigidBodySystem< TDataType >::m_deviceSamples |
Definition at line 248 of file RigidBodySystem.h.
| int dyno::RigidBodySystem< TDataType >::m_numOfSamples |
Definition at line 247 of file RigidBodySystem.h.
|
private |
Definition at line 234 of file RigidBodySystem.h.
|
private |
Definition at line 236 of file RigidBodySystem.h.
|
private |
Definition at line 231 of file RigidBodySystem.h.
|
private |
Definition at line 233 of file RigidBodySystem.h.
|
private |
Definition at line 235 of file RigidBodySystem.h.
|
private |
Definition at line 227 of file RigidBodySystem.h.
|
private |
Definition at line 229 of file RigidBodySystem.h.
|
private |
Definition at line 238 of file RigidBodySystem.h.
|
private |
Definition at line 241 of file RigidBodySystem.h.
|
private |
Definition at line 240 of file RigidBodySystem.h.
|
private |
Definition at line 242 of file RigidBodySystem.h.
|
private |
Definition at line 239 of file RigidBodySystem.h.
|
private |
Definition at line 224 of file RigidBodySystem.h.
|
private |
Definition at line 244 of file RigidBodySystem.h.
|
private |
Definition at line 226 of file RigidBodySystem.h.
|
private |
Definition at line 228 of file RigidBodySystem.h.
| std::vector<Vec3f> dyno::RigidBodySystem< TDataType >::normals |
Definition at line 252 of file RigidBodySystem.h.
| std::vector<Vec3f> dyno::RigidBodySystem< TDataType >::samples |
Definition at line 251 of file RigidBodySystem.h.