Unigine::JointParticles Class
Header: | #include <UniginePhysics.h> |
Inherits from: | Joint |
This class is used to pin cloth body or rope body to rigid bodies, ragdolls or dummy bodies.
Example#
The following code illustrates connection of a rope body (rope) and a dummy body (dummy) using a particles joint. The anchor is placed at the position of a dummy body.
include <UniginePhysics.h>
/* .. */
//the anchor point is placed at the position of a dummy body, pinning area size is (0.5f, 0.5f, 1.5f)
JointParticlesPtr joint = JointParticles::create(dummy, rope, dummy->getObject()->getPosition(), Vec3(0.5f, 0.5f, 1.5f)));
// setting pinning threshold
joint->setThreshold(0.001f);
// setting number of iterations
joint->setNumIterations(4);
See Also#
Usage examples:
JointParticles Class
Members
static JointParticlesPtr create ( ) #
Constructor. Creates a particle joint with an anchor at the origin of the world coordinates.static JointParticlesPtr create ( const Ptr<Body> & body0, const Ptr<Body> & body1 ) #
Constructor. Creates a particle joint connecting two given bodies. An anchor is placed in the center of the body to which the cloth or rope is pinned.Arguments
- const Ptr<Body> & body0 - First body to be connected with the joint. It can be one of the following:
- const Ptr<Body> & body1 - Second body to be connected with the joint. It can be one of the following:
static JointParticlesPtr create ( const Ptr<Body> & body0, const Ptr<Body> & body1, const Math::Vec3 & anchor, const Math::vec3 & size ) #
Constructor. Creates a particles joint connecting two given bodies with specified pinning area size and an anchor placed at specified coordinates.Arguments
- const Ptr<Body> & body0 - First body to be connected with the joint. It can be one of the following:
- const Ptr<Body> & body1 - Second body to be connected with the joint. It can be one of the following:
- const Math::Vec3 & anchor - Anchor coordinates.
- const Math::vec3 & size - Area for pinning vertices of cloth or rope body to another body.
int getNumParticles ( ) #
Returns the total number of pinned particles of the cloth or rope body.Return value
The number of pinned particles.float getParticleMass ( int num ) #
Returns the mass of the pinned particle of the cloth or rope body.Arguments
- int num - Particle number.
Return value
Particle mass.Math::vec3 getParticlePosition ( int num ) #
Returns the position of the pinned particle of the cloth or rope body.Arguments
- int num - Particle number.
Return value
Particle position.void setSize ( const Math::vec3 & size ) #
Updates a size of the area for pinning vertices of cloth or rope body to another body.Arguments
- const Math::vec3 & size - Size of the area to be pinned.
Math::vec3 getSize ( ) #
Returns the current size of the area of pinned vertices of cloth or rope body to another body.Return value
Size of the pinned area.void setThreshold ( float threshold ) #
Updates a threshold that determines the distance for pinning vertices of cloth or rope body to another body. If vertices are closer than the threshold, they are pinned together; otherwise, particles stay loose.Arguments
- float threshold - Threshold of pinning distance.
float getThreshold ( ) #
Returns the current threshold that determines the distance for pinning vertices of cloth or rope body to another body. If vertices are closer than the threshold, they are pinned together; otherwise, particles stay loose.Return value
Threshold of pinning distance.void clearParticles ( ) #
Unpins the cloth or rope body completely.Last update:
2023-06-23
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)