Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help  Passing Through Collider?
#1
Hello all, I'm sure solution to my problem is simple but I can't find it.. Thank you for your time if you could help me out. 

I have a long rope, in a stretched position, and two ends are attached statically to two separate objects, keeping it firm. And there are obstacles in between. When I move one attachment up and down, rope passes through the colliders in between. It doesn't ignore though, I can see that there's some "collision" happening but it easily breaks through. I've tried out many different options, checked the phasers etc. I'm posting all settings below.

video: https://vimeo.com/531152898


Attached Files Thumbnail(s)
                   
Reply
#2
(31-03-2021, 08:38 AM)darthmerth Wrote: Hello all, I'm sure solution to my problem is simple but I can't find it.. Thank you for your time if you could help me out. 

I have a long rope, in a stretched position, and two ends are attached statically to two separate objects, keeping it firm. And there are obstacles in between. When I move one attachment up and down, rope passes through the colliders in between. It doesn't ignore though, I can see that there's some "collision" happening but it easily breaks through. I've tried out many different options, checked the phasers etc. I'm posting all settings below.

video: https://vimeo.com/531152898

Your relaxation factor for collisions and particle collisions is 0.1 (10%). This means only 10% of collision constraints will be enforced, which is close to having no collisions at all. Set your collision relaxation factor to 1 (100%) so that collisions can be fully applied. From the manual:

http://obi.virtualmethodstudio.com/tutor...olver.html
Quote:Values lower than 1 will only partially enforce constraints. For instance, with a relaxation factor of 0.25 constraints will only have a 25% of their normal effect.

Most other constraint parameters don't make much sense either. Using 10 iterations in parallel mode with 200% relaxation will yield extremely costly, very unstable constraints. From the manual:

Quote:High values can be used to help speed up convergence in any of the two modes (sequential or parallel), but keep in mind that simulation stability can degrade.

Use less iterations in sequential mode with 100% relaxation, optionally cranking it up to 120% or 150% if you need extra "oomph". Only go to 200% if you're absolutely sure of what the implications are.

Let me know if I can be of further help. cheers!
Reply
#3
(31-03-2021, 09:52 AM)josemendez Wrote: Your relaxation factor for collisions and particle collisions is 0.1 (10%). This means only 10% of collision constraints will be enforced, which is close to having no collisions at all. Set your collision relaxation factor to 1 (100%) so that collisions can be fully applied. From the manual:

http://obi.virtualmethodstudio.com/tutor...olver.html

Most other constraint parameters don't make much sense either. Using 10 iterations in parallel mode with 200% relaxation will yield extremely costly, very unstable constraints. From the manual:


Use less iterations in sequential mode with 100% relaxation, optionally cranking it up to 120% or 150% if you need extra "oomph". Only go to 200% if you're absolutely sure of what the implications are.

Let me know if I can be of further help. cheers!

Thank you! I'm quite new to the asset and getting hang of it. Great product!

I'll take my chance to ask one more thing though. When I manually tear this rope, I want it to fall freely from the breakage point, instead of jumping towards to attachment. Can you recommend any tricks to achieve that ? Maybe modifying a specific constraint just before calling the Tear() ?
Reply
#4
(31-03-2021, 10:45 AM)darthmerth Wrote: Thank you! I'm quite new to the asset and getting hang of it. Great product!

I'll take my chance to ask one more thing though. When I manually tear this rope, I want it to fall freely from the breakage point, instead of jumping towards to attachment. Can you recommend any tricks to achieve that ? Maybe modifying a specific constraint just before calling the Tear() ?

Glad you like it! Takes a while to get used to, as it's a really large engine.

If the rope "jumps" or "whips back" after being torn, it's likely due to it being overstretched. You can use more substeps (see:http://obi.virtualmethodstudio.com/tutorials/updaters.html) to make it less elastic, and you can increase the solver's velocity damping to make dynamics less "jumpy" (http://obi.virtualmethodstudio.com/tutor...olver.html).
Reply
#5
(31-03-2021, 10:51 AM)josemendez Wrote: Glad you like it! Takes a while to get used to, as it's a really large engine.

If the rope "jumps" or "whips back" after being torn, it's likely due to it being overstretched. You can use more substeps (see:http://obi.virtualmethodstudio.com/tutorials/updaters.html) to make it less elastic, and you can increase the solver's velocity damping to make dynamics less "jumpy" (http://obi.virtualmethodstudio.com/tutor...olver.html).

Yes it is quite large and powerful. I'm looking forward to getting other Obi assets as well Sonrisa 

Is there a way to change Solver parameters in runtime, via script ? I tried making two Solvers and changing the rope's solver but that's not possible either. I'm happy with the current solver parameters but I want it to behave a little differently after the tear occurs.
Reply
#6
(31-03-2021, 11:17 AM)darthmerth Wrote: Is there a way to change Solver parameters in runtime, via script ? I tried making two Solvers and changing the rope's solver but that's not possible either.

Yes and yes. You can change any parameters like this:

Code:
solver.parameters.gravity = <your gravity>
solver.PushSolverParameters();

Same for all damping, and all other parameters.

Also, you can move actors to a new solver just by reparenting them:

Code:
actor.transform.parent = <new solver transform>
Reply
#7
(31-03-2021, 11:23 AM)josemendez Wrote: Yes and yes. You can change any parameters like this:

Code:
solver.parameters.gravity = <your gravity>
solver.PushSolverParameters();

Same for all damping, and all other parameters.

Also, you can move actors to a new solver just by reparenting them:

Code:
actor.transform.parent = <new solver transform>


Thank you very very much, I appreciate your help. I'll make sure to comment on the asset. Have a nice day!
Reply