03-08-2020, 08:22 AM
(This post was last modified: 03-08-2020, 08:25 AM by josemendez.)
Tethers were used in ropes up to Obi 5.0. With the inclusion of substepping (from this article: http://mmacklin.com/smallsteps.pdf), we found they were no longer needed in most cases -as substepping boosts convergence enormously- so we removed them. Tethers had a plethora of associated issues that made their use cases quite limited:
- You can't change rope length, or cut it, while using tethers.
- You can't dynamically attach/detach particles while using tethers.
- They only work in pendulum-like cases, in which the object attached to the rope and the anchored point of the rope lie in a straight line. Pulleys and similar systems don't benefit from tethers.
- Sections of the rope in-between tethers would have too much slack if not enough distance constraint iterations were used.
The mention of ropes in the manual is a leftover from the 4.X manual, so it should not be there. Removing it.
Distance constraints are the basic building blocks of ropes. Without them , the rope would lose all structural integrity and just collapse into a point. Increasing the amount of distance constraint iterations will solve your problem, however using more substeps is even more effective.
Tethers rely on a pre-process of the rope, so you can't have topological changes of any kind while using them. This makes them really limited as I just explained. The problem they used to solve is no longer a problem when using a few substeps. If this is not possible/ideal in your case, hearing more about what you're trying to accomplish will allow me to help further.
This message is usually thrown by a quaternion that has been made to look in a direction that's the zero vector. Quaternions are not used in ropes simulation as rope particles do not have any orientation. Are you using rods instead by any chance?
This is something to be concerned about, as any out of bounds array is considered a bug. Can you give steps to reproduce this?
- You can't change rope length, or cut it, while using tethers.
- You can't dynamically attach/detach particles while using tethers.
- They only work in pendulum-like cases, in which the object attached to the rope and the anchored point of the rope lie in a straight line. Pulleys and similar systems don't benefit from tethers.
- Sections of the rope in-between tethers would have too much slack if not enough distance constraint iterations were used.
The mention of ropes in the manual is a leftover from the 4.X manual, so it should not be there. Removing it.
Quote:I don't believe distance constraints are the solution to my problem, i believe they are the source, and i believe that your tether's were designed to fix exactly this problem;
Distance constraints are the basic building blocks of ropes. Without them , the rope would lose all structural integrity and just collapse into a point. Increasing the amount of distance constraint iterations will solve your problem, however using more substeps is even more effective.
Tethers rely on a pre-process of the rope, so you can't have topological changes of any kind while using them. This makes them really limited as I just explained. The problem they used to solve is no longer a problem when using a few substeps. If this is not possible/ideal in your case, hearing more about what you're trying to accomplish will allow me to help further.
Quote:Every now and then, my console throws a "Look rotation viewing vector is zero" at me, it doesn't seem to cause any problems, its not even classified as a warning or error in the unity console, its just a regular message like that of Debug.Log(), but it only does this when i'm using an ObiRope;
This message is usually thrown by a quaternion that has been made to look in a direction that's the zero vector. Quaternions are not used in ropes simulation as rope particles do not have any orientation. Are you using rods instead by any chance?
Quote:I also, every now and then, when increasing my rope length, get a IndexOutOfRangeException sub scripted with "Obi.ObiActor.SwapWithFirstInactiveParticle (System.Int32 actorIndex)(at assets/Obi/Script/Common/Actors/ObiActor.cs:420) error, again it doesn't cause any immediately noticeable problems, is it something i should be concerned about?
This is something to be concerned about, as any out of bounds array is considered a bug. Can you give steps to reproduce this?