|
|
Forcing obi rope through rings |
Posted by: Henning - 30-08-2023, 10:57 PM - Forum: Obi Rope
- Replies (2)
|
 |
Hi,
My goal is to create a series of rings where the user needs to drag the rope through. The end of the rope is attached to a rigid body that can be controlled.
However, the rope often penetrates the rings. This even happens when the rigid body is moving very slowly.
I have tried so far to increase the sub-steps of the updater (to 20), and increase the iterations of the distance/collision constraints (I increased them to 15 separately). Their effects are not really observable. Increasing the number of particles did not lead to positive results either (as the surface collision has always been on).
I understand that this 'tunneling' issue is very difficult to solve, but by any chance are there other solutions for me to explore?
If there is none, the first trick that I can think of is to create the rings with obi ropes, rather than thin shell meshes. However, how can I stop the rope rings from moving? As I understand, disabling the ropes would remove the particles from the solver, and therefore no more collision detection.
Another way to cheat is to add a constraint that says one of the particles has to be at the centre of the ring with the same orientation, but how can I add such a constraint to the solver (if possible)?
Many thanks in advance!
|
|
|
Saving blueprint not including points added during runtime |
Posted by: yashgarg - 29-08-2023, 08:59 AM - Forum: Obi Rope
- Replies (1)
|
 |
Hello Team,
I had a rope for which I changed its length at runtime with obi cursor logic as given in user manual. Then I tried saving the runtime blueprint as an asset for later use. But the saved asset does not contain the new particles that were added when I increased the length of the rope.
Similar issue happens when I tried to move a rope (whose length has been increased) from one ObiSolver to a new ObiSolver. All the new points/particles that were added as part of increasing the rope length disappeared instantaneously as I moved the rope to new ObiSolver. I did this experiment as in one of the previous forum answers it was mentioned that switching ropes among ObiSolver uses the same save blueprint function.
Is there a way for me to store the runtime blueprint (with increased particles) and then use it later directly.
Thanks
|
|
|
Concerns about performance |
Posted by: 1234567398 - 27-08-2023, 10:46 PM - Forum: Obi Rope
- Replies (6)
|
 |
Hi!
I've successfully used Obi Rope in my project, and I am very satisfied with how it works. However, I'm still a little concerned about the performance, and I hope that it can be somehow improved.
For context, my project has an ObiFixedUpdater with 3 substeps and 3 attached solvers. Each solver has 8 ObiRods, they're 0.6m long with resolution of 0.2 and have two static and two dynamic attachments. All the collisions are disabled, the only constrains enabled in solvers are pin, stretch&shear and bend&twist with sequential evaluation and 1 iteration. The rods use ObiRopeExtrudedRenderer with ObiPathSmoother with smoothing set to 1.
What worries me are the long durations of BeginStep in FixedUpdate and Interpolate in Update. Also, I'm wondering if it should work that way, that the Substep worker threads are barely used in parallel, and are idle most of the time. The most interesting part is that in build the durations of this processes under same conditions can get even 2 times longer. I've tried to do all the steps listed in the manual, i.e. enabling Burst compilation and disabling jobs debugger, safety checks and leak detection, but I didn't notice any big change in performance. I'm using 1.8.4 version of Burst package, 1.2.6 version of Mathematics and 2.1.4 version of Collections, on Unity 2022.3.0f1.
Is there a way to employ all the worker threads more, so the calculations in the steps can be done more efficiently, or maybe I've missed some steps in the setup and that causes this issues? I managed to cut some of the calculations, so the simulation runs a little bit faster, but I hope that there is still some room for improvement. I would be really grateful for your help.
|
|
|
Multiple obi solvers |
Posted by: Adammm - 25-08-2023, 03:34 PM - Forum: Obi Softbody
- Replies (1)
|
 |
Hey! I have my objects which is moved by script and there are multiple objects moved randomly.
I made my softbody and worked just fine with 1 object, but I realized I cannot move the child with the arrows (Tested with arrows in the scene view while playing). I tried to make multiple obi solvers for each objects but they don't behave the same way as if I add multiple childes under 1 obi solvers.
How can I make multiple obi solvers and make them behave/collide the same way as if there would be one obi solver and childs under it?
Thanks!
|
|
|
Obi Rope Asset reference |
Posted by: rohit_dhak - 24-08-2023, 07:21 AM - Forum: Obi Rope
- Replies (1)
|
 |
So I am using Obi rope asset for one of my research papers and would like to know the reference for the asset to cite in the paper.
Is there a paper published which is the backbone of obi rope, which I could cite?
Thank You.
Kind Regards.
|
|
|
When adding rope, the new rope section gets "stuck" and behaves strangely |
Posted by: ShawnF - 22-08-2023, 01:57 PM - Forum: Obi Rope
- Replies (2)
|
 |
So there's an action in my prototype that will cause a rope to lengthen so that it's usable. When this is done, I'm seeing two problems:
1) The rope gets a bit longer, but not as long as defined... until you jump on it, at which point it sort of gets "unstuck".
2) The rope doesn't seem to be simulated correctly until it gets "unstuck". This doesn't actually hurt my use case, but I thought it might be a hint about what's going on.
Here's the code I'm using for testing:
Code: void Update()
{
if (Input.GetKeyDown(KeyCode.F12) )
{
resizeRope = true;
MainCanvasScript.instance.ShowQuickInfoMessage("Start Rope Resize", 1f);
//cursor.sourceMu = 1f; // default 0
cursor.cursorMu = 1f; // default 0; start adding rope at the end
cursor.direction = false; // default true; don't understand why, but no visible rope spools out if this is true
}
}
void FixedUpdate()
{
if (resizeRope && obiRope.restLength < resizedLength)
{
cursor.ChangeLength(obiRope.restLength + lengthAddedPerStep);
Debug.Log(obiRope.restLength);
}
if (resizeRope && obiRope.restLength >= resizedLength)
{
resizeRope = false;
MainCanvasScript.instance.ShowQuickInfoMessage("resize complete", 3f);
}
}
Here's a video showing the behavior that I'm talking about. You can see how the rope is using physics before it's resized, but stops reacting after the new section is added... until I jump on it and start swinging.
https://www.youtube.com/watch?v=tp34KpfQ1Ak
I can also post my janky WIP code for how the player attaches/climbs if it's useful, but I'm leaving it out for now because it's a bit long. Basically it's just moving the character to the next particle index and creating a particle group / attachment at that particle.
|
|
|
Match object orientation with a rope section (or particle) |
Posted by: Alberos - 21-08-2023, 12:04 PM - Forum: Obi Rope
- Replies (2)
|
 |
Hi,
I'm trying to create a 3D ring around the specific point of the rope. So far I have been able to set the position correctly using ObiPathSmoother.GetSectionAt() and some TransformPoint(). However, I couldn't get the orientation right. The ObiPathFrame given to me from ObiPathSmoother.GetSectionAt() do have main axis data (normal, binormal, and tangent), however, they seem to not align with the section orientation. It sometimes align sometimes don't (I Debug.DrawRay all 3 values and they're not align). Am I missing something here?
I'm using rope, so I think I can't use the orientation of the particle itself as I thought rope don't simulate particle orientation?
Here's the code for setting both position and rotation.
Code: ObiPathFrame section = mainRopePath.GetSectionAt(normalizeRopePoseOf62CM);
ring62CMHighlight.transform.position = mainRopePath.transform.TransformPoint(section.position);
ring62CMHighlight.transform.rotation = Quaternion.LookRotation(section.tangent, section.binormal);
Thanks
|
|
|
|