Massless Cable Technical Documentation
Massless Segment Summary
Here you will find a supplement to the documentation on the Massless Cable Segment which describes how the massless segments are constructed, and the advanced uses of the feature.
Use Case
The intended use case for the massless segment is to model cables which are under tension, and where the dynamic behavior of the pulleys in the run of massless segments is not required. The Massless Cable Segment has been designed to improve performance of cable simulations. If you have performance issues, when trying to simulate a complex cable system under tension, which has many constraints from the cable, and the hinges used to create the pulleys, the massless cable segments can help you reduce the overall computational cost of the simulation. This makes massless segments especially useful for modelling complex reeving systems in an efficient way.
Â
Summary
Using the feature is simple. To change the segment type to a massless segment, find the appropriate segment in the Segment Definitions container of the Dynamic Generic Cable Extension and select the ‘Massless Definition’ option.
Below is a short summary of the massless segment and its uses and functionality. More detailed information can be found in the following sections.
Selecting to use the massless cable segment instructs Vortex to use a massless cable constraint to model the cable for that cable segment.
The massless segment option is mutually exclusive to the other cable segment types. If the flexible definition is selected, the segment will be flexible. If the massless definition is selected, the segment will be massless. If neither is selected, the segment will be a default rigid segment.
The massless cable constraint is a special constraint used just by the cable system, and is special because it optimizes the number of constraints required to model the cable by using the same constraint to model massless segments which occur one after the other.
The constraint uses the same stiffness and damping values as other segments in the cable, which are set either in the ‘Dynamics Properties’ extension that is created when the ‘Generic Cable’ extension is added to the work document, or in the ‘Dynamics Generic Cable Extension' if there is no 'Dynamics Properties’ extension.
Like the default Rigid Cable segment, the Massless Cable can go slack, e.g. can have zero tension, and does not compress. If the cable becomes slack, then the cable length continues to accrue, and can be observed in the elongation output.
Constraints in Vortex can only constraint a maximum of six parts. The massless cable constraint optimizes the constraint by treating a collection of merged parts as a single part, and by merging pulleys to the parts to which they are hinged, depending on the merge request selected in the point definition.
Key frames are fully supported for massless cable systems.
Limitations
The massless segment does not support a collision geometry
The massless segment does not support torsion
The massless segment does not support fluid interactions
Therefore, the Collision Geometry, Support Torsion, Fixed Point-Point Distance and the Fluid Definition container fields in the Segment Definition will be ignored.
Comparison to Rigid Cables
The rigid cables use a similar, but simpler, constraint model as the massless cables. Specifically, the rigid cable model assumes that the cable interacts with the pulley with infinite friction, so that the points where cable segments attach to pulleys are assumed to be stuck, even in cases of misalignment (i.e. systems where the cable segment is not exactly perpendicular to the pulley rotation axis). The massless cable model, in contrast, assumes that the cable can slide over the pulley and unwrap in misaligned configurations, and mimics the action of the friction which turns the pulley by turning it kinematically.
To see the impact of the misalignment, consider a cable system consisting of an attachment, a central pulley, and a winch. The winch is spooled in to place the entire cable system under tension. The pulley is hinged to its base part, which is further attached to a static world part by means of an RPRO joint. The attachment is static.
Rigid Case
We will construct two separate rigid cable segments so that we may observe the tension in each segment separately.
For the segment connecting the attachment to the central pulley, the tension reads around 12 000 N:
For the segment connecting the central pulley to the hinge, the tension reads around 9900 N:
The initial misalignment generates torques that caused the pulley to turn, elongating the cables and changing the tension in the cable segments until the net torque is zero. Therefore, a misaligned system of rigid cables will not have uniform tension at equilibrium.
Massless Case
Now consider replacing the rigid cables with a single massless cable system. Now the tension is uniform throughout the cable, as there is only one constraint force for the entire system.
Moreover, the constraint torque about the x-axis on the RPRO joint hinging the pulley base part to the static world part is 0, so there are no torques transmitted to the merge root of the configuration:
Choosing Rigid Cables over Massless Cables
If you are working with well-aligned systems and the performance of complex reeving systems is not a bottleneck in your simulation, but you require cables that support collision, and inertial properties, then you should opt to use the rigid cables.
Massless Segment Technical Information
In this section we discuss the implementation of the constraint, in order to assist in debugging your content, and knowing when and how to use this feature.
Constraint Implementation
The massless cable segments use a constraint, known as the massless cable constraint, to model the cable. This constraint attempts to ensure that the calculated length of the cable over the specified segments has a specific length. This is similar to the rigid segments, DoubleWinch constraint, or SumDistance constraint; see Constraint Types for details.
The rest length of the cable is initially determined by the initial condition of the system. When the simulation begins, it is assumed that the cable is not under tension. The specified length of the part of the cable handled by the constraint is updated kinematically based on how the pulleys at either end of the sequence of massless segments are turning. If both ends do not have a pulley, the length of the sequence of massless segments will be unchanged.
No torque is applied to pulleys with massless segments on both sides by the cable. Any internal pulley like this is merged to its base, and will be turned kinematically for the sake of correct visualization. A consequence of this is that information about the force from the hinge, and the angular velocity of the pulley, will not be available.
As with other constraints in the cable system, the constraint acts on the parts in the point definitions of the cable. A sequence of massless cable segments does this in a more complex way than other cable system constraints in order to minimize the number of constraints which are needed for the model. Fewer constraints means a faster solve time, so this allows the performance to be improved for certain types of cable systems.
Constraints in Vortex can simultaneously constrain a maximum of six parts. In order to maximize how many point definitions can be involved in the same massless cable constraint, the massless cable constraint doesn’t always use the parts associated to the point definition directly; if those parts are merged, the constraint will use a single representative part for all the parts which are merged together.
As discussed above, pulleys internal to the series of massless segments are merged to their base part, unless the ‘Dynamic’ merge request option is selected. In this case, a new constraint is begun. Any pulley which is internal to a massless constraint will be merged. See the Merge Request Options document for more details about merge requests.
An example of a system with massless segments can be seen below. It shows that the two adjacent massless segments are modelled using a single massless constraint, that the pulley internal to the series of massless segments is merged, and that the pulley at the end of the series of massless segments is dynamic.
Massless Segments in the Editor
Massless Constraint Options
In the editor, Massless Segments can be chosen easily in the segment definition container of the Dynamic Generic Cable Extension.
To set a segment to be massless, simply select the ‘Massless Definition’ checkbox in the segment definition container for the appropriate segment. An ‘Arc Segment’ definition in-between two massless segments will not interrupt the constraint, and the two segments with a pulley between them will be part of the same constraint, unless that pulley is required to be dynamic via a merge request.
The merge request options (detailed here: Merge Request Options) are found in the Point Definition container.
The merge request can be used to request a specific merge type for the point definition. If the merge request cannot be satisfied, the pulley will instead remain unmerged, and provide an interface between two adjacent massless constraints. A merge request cannot be satisfied if the pulley is at the ‘end’ of a massless constraint, meaning that adding the pulley to the constraint will saturate the number of parts it can contain.
Debugging Massless Constraints
There are some options for establishing whether the constraint is working correctly from within the editor.
Edit-time warnings
If the cable is configured so that there is a ring between a massless segment, and a segment of another type, a warning will be shown in the editor. This is because this configuration is not currently supported by the massless constraint.
Simulation-time warnings
As whether a pulley can be merged or not, and so how many parts are added to a massless constraint are not known until simulation time, it is possible that upon simulating, the constraint will find that the last point definition constrained by the massless constraint is a ring. Since this is unsupported currently, the editor will display a warning and the cable will not be built. An attempt can be made to rectify this problem by setting the merge request of the last pulley before the ring to ensure that it is dynamic. This will start a new constraint as close to the ring as possible, and give the best chance of fitting all parts in the constraint.
In general, the massless constraints made by the cable system can be configured by using the merge requests to force massless constraints to be started at specific points.
If the pulley and base are in different solver groups, then the pulley will not be merged.
The constraint accessory can be activated at simulation time to show the attachment frames relevant to the massless constraints. The attachment frames are placed at the center of mass positions of the groups of merged parts, and show what is constrained together via spring-shaped links between the frames. In this way, the parts involved, and the number of parts in, the massless constraints can be established. An example is shown below where a cable system with many falls has three constraint attachment frames at the winch, the center of mass of the upper row of pulleys, and the center of mass of the lower row of pulleys.
Â