Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help  Rope extending issue
#1
Howdy! First, let me say I'm a newbie and love your asset! I have few questions on Obi Rope, pls view the video link attached to better understand what I'm trying to accomplish:
The main use of rope is to pull and drag to tangle the rope between cylinders. Here are the questions:

Video link: https://www.youtube.com/watch?v=K-Qg3fuCsBE

1. As you can see from the video, when I pull and extend the rope, it wiggles (moves left and right) a lot. What I want is when you pull and drag the rope, it should be a stable extension. I'm using Obi Rope Cursor component to extend the rope. If there are any better solution to extend the rope very stably, pls let me know.

(here's the code how I extend the rope: cursor.ChangeLength(rope.CalculateLength() * 0.9f))

2. At the end of the video, you can see that the rope goes through the cylinder, I understand it happens because of performance issues, but I just wanted to know if there are any better solution not to get the rope pass through cylinders.

I bought this asset only few days ago so I'm sure I'm missing some optimal solution to get the result I want.

Best,

Billy
Reply
#2
Hi Billy,

1.) Increasing rope length adds new particles to the rope, so its discretization will change and as a result, the rope might move. There's no way to prevent this.

2.)
You might want to:

- Use more substeps. This will increase simulation quality, making the rope less elastic and collisions more robust. You can find this setting in the ObiFixedUpdater component.

- Use surface collisions. See:
http://obi.virtualmethodstudio.com/manua...sions.html

kind regards,
Reply
#3
(18-04-2022, 09:34 AM)josemendez Wrote: Hi Billy,

1.) Increasing rope length adds new particles to the rope, so its discretization will change and as a result, the rope might move. There's no way to prevent this.

2.)
You might want to:

- Use more substeps. This will increase simulation quality, making the rope less elastic and collisions more robust. You can find this setting in the ObiFixedUpdater component.

- Use surface collisions. See:
http://obi.virtualmethodstudio.com/manua...sions.html

kind regards,

Hey Jose Mendez! Thanks for the clarification!
One more question, I'm also cutting the rope when it contacts with a knife or saw, I'm using this function to detect the collision:
void Solver_OnCollision(object sender, Obi.ObiSolver.ObiCollisionEventArgs e)
This function correctly cuts the rope only when surfaced based collisions are disabled, now that I'm using surface based collision, it cutting at a wrong position. How can I correctly detect the right particle when its enabled?
Reply
#4
(18-04-2022, 10:49 AM)nmbileg Wrote: This function correctly cuts the rope only when surfaced based collisions are disabled, now that I'm using surface based collision, it cutting at a wrong position. How can I correctly detect the right particle when its enabled?

Probably the code you're using in Solver_OnCollision ignores simplices. When using surface collisions, the way you get particle indices is slightly different. See the manual ("Retrieving the particle involved in a contact") for details:
http://obi.virtualmethodstudio.com/manua...sions.html
Reply
#5
(18-04-2022, 11:31 AM)josemendez Wrote: Probably the code you're using in Solver_OnCollision ignores simplices. When using surface collisions, the way you get particle indices is slightly different. See the manual ("Retrieving the particle involved in a contact") for details:
http://obi.virtualmethodstudio.com/manua...sions.html
Hey Jose, I got it worked thanks to your help! Sonrisa
Reply