User Tools

Site Tools


You are not allowed to perform this action
reference_guide:thinkingparticles_nodes:operator_nodes:bulletphysics:bt_joint

BTJoint

The BT Joint is used to created BulletPhysics Joints between particles. This can be done at any time and can be controlled in a variety of ways, most basically with the On input. The only required inputs are the Particle From and Particle To which define the two particles involved, where one particle is identified as the start of the joint (From) and the other as the end of the joint (To).

The joint occupies a single point in space, which can be specified with either the Position From and Position To, or with the World Position. Position From and Position To can sometimes be difficult to calculate as the same point in space, so the World Position input is often preferred. (If you simply use the Particle From position as the Position From, and the Particle To's position as Position To, the joint will likely behave erratically and explode because the single point in space is attempting to exist in two locations at once.)

Calculating the joint World Position can be as simple as averaging the two particle positions with an Expression operator ((v1+v2)/2). Keep in mind that as a single point in space the joint would ideally be located somewhere in-between the two particle meshes. This can require more advanced calculations, such as using an Intersect calculation from each particle towards the other particle in order to get a surface position on each particle mesh, then averaging those two positions. Of course you could also simply calculate one Intersect and use that one result as the joint location. The options are wide open.

Once the joint is defined you can connect the Joint* output to an BTJointDataOperator to create additional properties such as velocity and rotational breaking thresholds, or spring values, or dampening, etc.

Operator Inputs

ON - (Bool) This input data stream determines whether the operator is considered 'on' or 'off.' You can connect other operators to this input channel such as a Bool Helper to activate/deactivate the whole operator.

Time - (Time) This input data stream is used to define the local time for the operator when the user wants to override the default system time.

Particle From - sets the “From” particle ID that will be used to create a Joint

Particle To - sets the “To” particle ID that will be used to create a Joint

Important You must supply both object space positions when using these inputs. One input alone will cause an invalid Joint. This Joint position in space should be the same point in world space for each of the positions you feed into these inputs.

Position From - defines the joint position in object space as seen from the “From” particle where the Joint will be placed between the two Joint partners.

Position To - defines the joint position in object space as seen from the “To” particle where the Joint will be placed between the two Joint partners.

Type - lets you set the type of Joint that will be created between the two particles. Possible options are:

0 = Point To Point 1 = Hinge 2 = Cone Twist 3 = Slider 4 = D6 5 = D6 Spring 6 = Rope Anchor 7 = Soft-body Cluster

World Position - inputs the Joint's position in world space coordinates that needs to be created between the two particles.

World Alignment - inputs the Joint's alignment in world space coordinates that needs to be created between the two particles.

Operator Outputs

Joint - outputs the currently created joint ID. The BT Joint is used to created BulletPhysics Joints between particles.

Rollout Menu

Collision - lets you choose, from the drop down menu, the physics engine solver to use for the Joint simulation. All compatible solvers found in the thinkingParticles setup will be automatically listed. Type - lets you choose a certain type of Joint for the particle pair, connected to this operator.

0 = Point To Point 1 = Hinge 2 = Cone Twist 3 = Slider 4 = D6 5 = D6 Spring 6 = Rope Anchor 7 = Soft-body Cluster

Find below a description of the supported constraint types.

Point to Point Joint  

pointtopoint.jpg

Use this Joint option to create a fixed type joint between objects

Collision - check this option to allow for collision detection between Joint objects

Breakable - when checked this Joint is able to break off

Impulse- sets the maximum velocity allowed before the Joint “breaks off”

Code - defines a fixed code or number to break off this joint

Light - sets an illumination threshold for breaking off this Joint

Damping - sets a dampening value for this joint


Hinge Joint

hingecontstraint.jpg

Choose this option to create a “Hinge” type joint between Objects

Collision - check this option to allow for collision detection between Joint objects

Breakable - when checked this Joint is able to break off

Impulse- sets the maximum velocity allowed before the Joint “breaks off”

Code - defines a fixed code or number to break off this joint

Light - sets an illumination threshold for breaking off this Joint

Angular Limit - when checked, the angular limits are in effect.

Lower - defines the lower rotational constraining angle of this joint. A disc, or a segment thereof visually represents the angular constraint of this joint axis.

Upper - defines the upper rotational constraining angle of this joint. A disc, or a segment thereof visually represents the angular constraint of this joint axis.

Bias - sets the tolerance for a correctional force to counteract an error in the simulation when the limits are reached. The higher this value the loser the limit becomes ( objects may go over the limit). You should be aware of the fact that physics engines may show all kinds of weird behavior,mostly because they use numbers to calculate their simulations. Using numbers isn't a bad thing on its own, it's how they are used. Doing calculations over and over again let's say a 1000 times, it is very likely to introduce a bigger error by adding up even the smallest amounts of errors on each cycle.

Relaxation - Sets the amount of bounciness when the limit is reached.  The higher the amount the more the object will bounce off the limits.

Motor Enable - When checked, the motor is enabled and in action.  A motor is nothing else than a constant force that is applied to the object

Velocity - sets the amount of velocity to be used to move the object along its joint axis.

Max Impulse - Sets the maximum allowed impulse. Most physics engines use an impulse based model, hence the need to use impulses on nearly every aspect of the simulation.  Due to possible errors when doing physics simulations, it is a good idea to restrict the maximum impulse that can be applied to a calculation.

  

Cone Twist Joint

To create rag dolls, for example,  the cone twist constraint is very useful for limbs; like the upper arm. It is a special point to point constraint that adds cone and twist axis limits. The x-axis serves as a twist axis.

Collision - check this option to allow for collision detection between Joint objects

Breakable - when checked this Joint is able to break off

Impulse- sets the maximum velocity allowed before the Joint “breaks off”

Code - defines a fixed code or number to break off this joint

Light - sets an illumination threshold for breaking off this Joint

Limit - defines the angular limits of this joint.

X-Twist Span - sets the limits for the X-axis (mirror ).

Y-Twist Span - sets the limits for the Y-axis (mirror)

Z-Twist Span - defines the maximum possible limits for the Z-axis (mirror).

Softness - sets the “softness” of the joint. The higher the value, the softer the joint becomes.

Bias - sets the tolerance for a correctional force to counteract an error in the simulation when the limits are reached. The higher this value the loser the limit becomes ( objects may go over the limit). You should be aware of the fact that physics engines may show all kinds of weird behavior,mostly because they use numbers to calculate their simulations. Using numbers isn't a bad thing on its own, it's how they are used. Doing calculations over and over again let's say a 1000 times, it is very likely to introduce a bigger error by adding up even the smallest amounts of errors on each cycle.

Relaxation - sets the amount of bounciness when the limit is reached.  The higher the amount the more the object will bounce off the limits.

Damping - defines the dampening force for this joint.

 

Slider Joint

slider_constraint.jpg

The slider constraint allows the body to rotate around one axis and translate along this axis.  

Collision - check this option to allow for collision detection between Joint objects

Breakable - when checked this Joint is able to break off

Impulse- sets the maximum velocity allowed before the Joint “breaks off”

Code - defines a fixed code or number to break off this joint

Light - sets an illumination threshold for breaking off this Joint

Angular Limit - when checked, the angular limits are active and evaluated.

Lower - sets the lower angular limit of this joint.

Upper - sets the upper angular limit of this joint.

Softness - controls the “bounciness” or springiness of the joint. The higher this number the more the joint will bounce back from its limits.

Angular Motor - when checked the angular motor becomes active. This motor is a constant force applied to the attached joint object.

Velocity - defines the force along the limit axis. The higher this value the faster the object attached to the joint will move.

Max Impulse - sets the maximum impulse allowed to apply to the joint object. This parameter is meant to be a last resort to avoid “exploding” joints caused by induced calculation errors from the solver side.

 

D6 Joint

The D6 joint is the mother of all joints, in fact it is so flexible you can make out of this joint any other type of joint.  This joint allows access and control of all the axes.

Collision - check this option to allow for collision detection between Joint objects

Breakable - when checked this Joint is able to break off Impulse- sets the maximum velocity allowed before the Joint “breaks off” Code - defines a fixed code or number to break off this joint Light - sets an illumination threshold for breaking off this Joint

Angular Group of Controls

Lower X,Y,Z - either axis may be checked individually, when checked the lower and upper limits become active for the selected axis. The angular restrictions or limits are visualized in the 3ds Max view port with the help of half disks or pie charts along with arrows to give a visual feedback of the angular restrictions.

Upper X,Y,Z -either axis may be checked individually, when checked the lower and upper limits become active for the selected axis. The angular restrictions or limits are visualized in the 3ds Max view port with the help of half disks or pie charts along with arrows to give a visual feedback of the angular restrictions.

Motor X,Y,Z - activates the motor for each of the axis.  The motor acts as an independent force that is constantly applied to the selected axis.

Velocity - sets the force the motor will use to drive or move the joint. This force can be adjusted/set for each axis.

Max Impulse - sets the maximum impulse allowed to apply to the joint object. This parameter is meant to be a last resort to avoid “exploding” joints caused by induced calculation errors from the solver side.

Linear Group of Controls

Lower X,Y,Z - either axis may be checked individually, when checked the lower and upper limits become active for the selected axis. The linear restrictions or limits are visualized in the 3ds Max view port with the help of half disks or pie charts along with arrows to give a visual feedback of the linear restriction limits.

Upper X,Y,Z -either axis may be checked individually, when checked the lower and upper limits become active for the selected axis. The linear restrictions or limits are visualized in the 3ds Max view port with the help of half disks or pie charts along with arrows to give a visual feedback of the linear restrictions.

Motor X,Y,Z - activates the motor for each of the axis.  The motor acts as an independent force that is constantly applied to the selected axis.

Velocity - sets the force the motor will use to drive or move the joint. This force can be adjusted/set for each axis.

Max Impulse - sets the maximum impulse allowed to apply to the joint object. This parameter is meant to be a last resort to avoid “exploding” joints caused by induced calculation errors from the solver side.


D6 Spring Joint

The D6 spring joint offers similar functionality  as  found in the D6 joint.  However, the main difference is that this joint type also offers additional controls for spring behavior. Please note, you cannot mix a motor and spring in the same joint.  

Collision - check this option to allow for collision detection between Joint objects

Breakable - when checked this Joint is able to break off

Impulse- sets the maximum velocity allowed before the Joint “breaks off”

Code - defines a fixed code or number to break off this joint

Light - sets an illumination threshold for breaking off this Joint

Angular Group of Controls

Lower X,Y,Z - either axis may be checked individually, when checked the lower and upper limits become active for the selected axis. The angular restrictions or limits are visualized in the 3ds Max view port with the help of half disks or pie charts along with arrows to give a visual feedback of the angular restrictions.

Upper X,Y,Z -either axis may be checked individually, when checked the lower and upper limits become active for the selected axis. The angular restrictions or limits are visualized in the 3ds Max view port with the help of half disks or pie charts along with arrows to give a visual feedback of the angular restrictions.

Motor X,Y,Z - activates the motor for each of the axis.  The motor acts as an independent force that is constantly applied to the selected axis.

Velocity - sets the force the motor will use to drive or move the joint. This force can be adjusted/set for each axis.

Max Impulse - sets the maximum impulse allowed to apply to the joint object. This parameter is meant to be a last resort to avoid “exploding” joints caused by induced calculation errors from the solver side.

Spring X,Y,Z - check any of the spring axes to activate a spring for the selected axis. Keep in mind, when motor is checked for any of this axes as well, the spring will be inactive!

Stiffness - sets the overall strength of the sprint. The higher this value the stronger the forces of the spring will be.

Damping - defines a counter force for the spring, it is the main force that will stop a spring from “springing”.

Linear Group of Controls

Lower X,Y,Z - either axis may be checked individually, when checked the lower and upper limits become active for the selected axis. The linear restrictions or limits are visualized in the 3ds Max view port with the help of half disks or pie charts along with arrows to give a visual feedback of the linear restriction limits.

Upper X,Y,Z -either axis may be checked individually, when checked the lower and upper limits become active for the selected axis. The linear restrictions or limits are visualized in the 3ds Max view port with the help of half disks or pie charts along with arrows to give a visual feedback of the linear restrictions.

Motor X,Y,Z - activates the motor for each of the axis.  The motor acts as an independent force that is constantly applied to the selected axis.

Velocity - sets the force the motor will use to drive or move the joint. This force can be adjusted/set for each axis.

Max Impulse - sets the maximum impulse allowed to apply to the joint object. This parameter is meant to be a last resort to avoid “exploding” joints caused by induced calculation errors from the solver side.

Spring X,Y,Z - check any of the spring axes to activate a spring for the selected axis. Keep in mind, when motor is checked for any of this axes as well, the spring will be inactive!

Stiffness - sets the overall strength of the sprint. The higher this value the stronger the forces of the spring will be.

Damping - defines a counter force for the spring, it is the main force that will stop a spring from “springing”.


Rope Anchor Joint

The rope anchor joint is a special purpose joint type that only works with soft body objects, in this case the rope object. There are no parameters to adjust for this joint type. By definition, this is a ball  joint attached objects are free to move around and rotate around that joint.  

Collision - check this option to allow for collision detection between Joint objects

Breakable - when checked this Joint is able to break off

Impulse- sets the maximum velocity allowed before the Joint “breaks off”

Code - defines a fixed code or number to break off this joint

Light - sets an illumination threshold for breaking off this Joint

Spline Knot - sets the vertex number of the spline object to be used by this joint. Rope Anchor Joints can only be placed on spline knots (vertices) and nowhere else.

Soft-body Cluster

Collision - check this option to allow for collision detection between Joint objects

Breakable - when checked this Joint is able to break off

Impulse- sets the maximum velocity allowed before the Joint “breaks off”

Code - defines a fixed code or number to break off this joint

Light - sets an illumination threshold for breaking off this Joint

Linear - when checked; movement along the axis is allowed

Angular - when checked; rotation is possible along all axis

Steering - controls the rotation around the selected Axis (see below)

Steering Axis - sets the axis to rotate around.

Motor - when checked; it activates the motor for each of the axis. The motor acts as an independent force that is constantly applied to all axis.

Velocity - sets the force the motor will use to drive or move the joint.

Max Torque - sets the maximum impulse allowed to apply to the joint object. This parameter is meant to be a last resort to avoid “exploding” joints caused by induced calculation errors from the solver side.  

©2024, cebas Visual Technology Inc.

reference_guide/thinkingparticles_nodes/operator_nodes/bulletphysics/bt_joint.txt · Last modified: 2024/01/24 18:34 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki