Search Forums

(Advanced Search)

Latest Threads
can you remove particles ...
Forum: Obi Softbody
Last Post: aardworm
09-07-2025, 07:09 AM
» Replies: 0
» Views: 39
ObiRope Mesh Renderer
Forum: Obi Rope
Last Post: quent_1982
08-07-2025, 11:27 AM
» Replies: 4
» Views: 179
How to dynamically change...
Forum: Obi Rope
Last Post: quent_1982
08-07-2025, 06:34 AM
» Replies: 6
» Views: 324
Pipeline that bends
Forum: Obi Softbody
Last Post: josemendez
04-07-2025, 09:52 AM
» Replies: 13
» Views: 1,055
How to implement/sync Obi...
Forum: Obi Rope
Last Post: quent_1982
01-07-2025, 01:48 PM
» Replies: 2
» Views: 253
Collisions don't work con...
Forum: Obi Rope
Last Post: chenji
27-06-2025, 03:05 AM
» Replies: 3
» Views: 339
Force Zone apply differen...
Forum: Obi Rope
Last Post: chenji
26-06-2025, 11:41 AM
» Replies: 11
» Views: 971
Can I blend in and out of...
Forum: Obi Cloth
Last Post: josemendez
24-06-2025, 04:42 PM
» Replies: 3
» Views: 316
Using a rigidbody/collide...
Forum: Obi Cloth
Last Post: josemendez
24-06-2025, 09:29 AM
» Replies: 1
» Views: 189
Solver is too performance...
Forum: Obi Rope
Last Post: quent_1982
20-06-2025, 08:09 AM
» Replies: 40
» Views: 4,878

 
  Performance issues
Posted by: khalvr - 24-01-2018, 04:00 PM - Forum: Obi Rope - Replies (12)

I'm using Obi Rope to simulate cords and wires in a VR truck service simulator. Since it was extremely unpractical and unstable to let Obi manage the rope length constraints, i decided to make all rigidbodies kinematicForParticles and use spring joints between the plugs (and dummy rigidbodies pinning the ropes together at all junctions) to keep them connected, just using ObiRope to simulate the aesthetics of the cords with pin constraints. The results are not 100% accurate, but it looks good enough for my purposes. Despite this, and despite rendering over 30 million triangles in the scene, ObiRope still stands for over 60% of the CPU load. This is despite the fact that i only use 2 solvers (one in each sub-scene), each with all constraints except pin, stitch, distance and collision disabled, and iteration counts set to 3 and below. There are maybe around 50 obi colliders in the scene. I also have a resolution of below 0.2 on all my ropes - in total, there are roughly 700 particles simulating. If i hang ropes on the wall (by attaching a fixed joint to one of the plug ends), obi will eventually even crash unity very suddenly and without warning. I have changed it so that the solvers run in LateUpdate, and reduced the advection radius to 0.05, but the performance is still utter crap. Am i doing something wrong, or does it simply not get better than this?

EDIT: Before Unity crashes, i get a huge wave of errors starting with:

Assertion failed: Assertion failed on expression: 'CompareApproximately(det, 1.0F, .005f)'
UnityEngine.Quaternion:FromToRotation(Vector3, Vector3)
Obi.CurveFrame:Transport(Vector3, Vector3, Single) (at Assets/Obi/Scripts/Actors/ObiRope.cs:61)
Obi.ObiRope:UpdateRopeMesh() (at Assets/Obi/Scripts/Actors/ObiRope.cs:962)
Obi.ObiRope:UpdateProceduralRopeMesh() (at Assets/Obi/Scripts/Actors/ObiRope.cs:892)
Obi.ObiRope:UpdateVisualRepresentation() (at Assets/Obi/Scripts/Actors/ObiRope.cs:590)
Obi.ObiRope:OnSolverFrameEnd() (at Assets/Obi/Scripts/Actors/ObiRope.cs:365)
Obi.ObiSolver:EndFrame(Single) (at Assets/Obi/Scripts/Solver/ObiSolver.cs:536)
Obi.ObiSolver:LateUpdate() (at Assets/Obi/Scripts/Solver/ObiSolver.cs:665)


Eventually i get this:

rigidbody.velocity assign attempt for 'Breakout Box' is not valid. Input velocity is { NaN, NaN, NaN }.
UnityEngine.RigidbodyConfundidoet_velocity(Vector3)
Obi.ObiRigidbody:UpdateVelocities() (at Assets/Obi/Scripts/Collisions/ObiRigidbody.cs:68)
Obi.ObiColliderBase:UpdateRigidbody(Object, EventArgs) (at Assets/Obi/Scripts/Collisions/ObiColliderBase.cs:262)
Obi.ObiArbiter:WaitForAllSolvers() (at Assets/Obi/Scripts/Solver/ObiArbiter.cs:82)
Obi.ObiSolver:SimulateStep(Single) (at Assets/Obi/Scripts/Solver/ObiSolver.cs:499)
Obi.ObiSolver:LateUpdate() (at Assets/Obi/Scripts/Solver/ObiSolver.cs:659)

Assertion failed: Assertion failed on expression: 'fRoot >= Vector3f::epsilon'
UnityEngine.Quaternion:FromToRotation(Vector3, Vector3)
Obi.CurveFrame:Transport(Vector3, Vector3, Single) (at Assets/Obi/Scripts/Actors/ObiRope.cs:61)
Obi.ObiRope:UpdateRopeMesh() (at Assets/Obi/Scripts/Actors/ObiRope.cs:962)
Obi.ObiRope:UpdateProceduralRopeMesh() (at Assets/Obi/Scripts/Actors/ObiRope.cs:892)
Obi.ObiRope:UpdateVisualRepresentation() (at Assets/Obi/Scripts/Actors/ObiRope.cs:590)
Obi.ObiRope:OnSolverFrameEnd() (at Assets/Obi/Scripts/Actors/ObiRope.cs:365)
Obi.ObiSolver:EndFrame(Single) (at Assets/Obi/Scripts/Solver/ObiSolver.cs:536)
Obi.ObiSolver:LateUpdate() (at Assets/Obi/Scripts/Solver/ObiSolver.cs:665)

And also this:

Assertion failed: Invalid worldAABB. Object is too large or too far away from the origin.

The way i interpret it, a rounding error propagates in the quaternion calculations causing forces to be scaled high enough to instantly propel objects out of the scene. It's just a qualified guess, though, and i'm not sure why forces would be applied anyway since the objects are all kinematic as far as Obi is concerned. In this particular case, the crash only occurs when the cord is hanging against the wall, but i've had it before as well in various situations (Always the AABB error).

EDIT2: Some more of the errors:

Assertion failed: Converting invalid MinMaxAABB
UnityEngine.Mesh:SetTriangles(List`1, Int32, Boolean)
Obi.ObiRope:CommitMeshData() (at Assets/Obi/Scripts/Actors/ObiRope.cs:911)
Obi.ObiRope:UpdateRopeMesh() (at Assets/Obi/Scripts/Actors/ObiRope.cs:1037)
Obi.ObiRope:UpdateProceduralRopeMesh() (at Assets/Obi/Scripts/Actors/ObiRope.cs:892)
Obi.ObiRope:UpdateVisualRepresentation() (at Assets/Obi/Scripts/Actors/ObiRope.cs:590)
Obi.ObiRope:OnSolverFrameEnd() (at Assets/Obi/Scripts/Actors/ObiRope.cs:365)
Obi.ObiSolver:EndFrame(Single) (at Assets/Obi/Scripts/Solver/ObiSolver.cs:536)
Obi.ObiSolver:LateUpdate() (at Assets/Obi/Scripts/Solver/ObiSolver.cs:665)

Mesh '': abnormal mesh bounds - most likely it has some invalid vertices (+/-inifinity or NANs) due to errors exporting.
Mesh bounds min=(-1.#J, -1.#J, -1.#J), max=(-1.#J, -1.#J, -1.#J). Please make sure the mesh is exported without any errors.

Assertion failed: Invalid worldAABB. Object is too large or too far away from the origin.

It seems to be triggered primarily by collisions between ObiColliders with an attached ObiRigidbody.

Print this item

  Earlier Versions of Obi Rope
Posted by: binhong87 - 24-01-2018, 11:04 AM - Forum: Obi Rope - Replies (2)

Hello,

Can you provide a earlier version of Obi Rope?
I want to use it on Unity 5.4.x.
I have already purchased this plugin, with order #12369623925197

Thanks,
Bin

Print this item

Pregunta How to reduce elastic effect in the rope
Posted by: AccqwTit - 23-01-2018, 09:19 AM - Forum: Obi Rope - Replies (1)

Good day,

I need to create a harness rope for safety when a player climbs a ladder. The one I implemented has elastic effect and I do not want elastic. 

How do I remove the elastic effect in the rope. I also do not want the rope to stretch when I pull it. In fact I want it to drag the other end of the rope.

See attachment for reference.

Please help.



Attached Files Thumbnail(s)
   
Print this item

  Meet our new asset : ARA trails - Trail rendering done right
Posted by: lidiamartinez - 22-01-2018, 04:14 PM - Forum: Announcements - Replies (1)

Hi folks,

this asset has been around for a very long time and Jose decided to create an asset for it so that you can use it in your projects.
If you are a Obi user you already know how much love Jose puts into his assets, so hopefully you like it!

Check out the videos!




Testing some cool trails here:





---> See the asset on the store! <--- <---

(this link is an affiliate link and if you buy this or anything else on the store will help us more, no charges applied to you! Thanks for your support!)

Print this item

  Simulate a solid steel chain
Posted by: zhuchun - 22-01-2018, 02:12 PM - Forum: Obi Rope - Replies (3)

Hi,

I'm new to Obi Rope and have finished the doc, But don't know how to simulate a solid steel chain without any elasticity.

Any help would be greatly appreciated!

Cheers,
Zhu Chun

Print this item

  obi fluvio how to work in steamVR
Posted by: xudaye - 22-01-2018, 05:51 AM - Forum: General - Replies (1)

Huh 我用unity打包出很卡,应该是渲染不正常

Print this item

  ObiClothDragger question
Posted by: rendezvous - 21-01-2018, 05:55 AM - Forum: Obi Cloth - Replies (2)

Jose,

I was wondering if there's a way to modify the default behavior of picking/dragging a mesh and letting go. It seems that the stretched part of the mesh always snaps back to its initial form. Is there a way to make the mesh transformation remain the way you left it after picking & dragging?

Print this item

  How to collide the cloth with the character?
Posted by: panda_pajama - 20-01-2018, 06:46 PM - Forum: Obi Cloth - Replies (3)

I want to have a loose skirt hanging from the waist of a character, and I want the animation of the character, especially the legs, to move the skirt from the inside.

It is not necessary for this to work in real time, as I will export the resulting animation for later playback in real time.

So I tried Option 1, which is to put an Obi Cloth in the skirt mesh, which locks the triangles in the waist very well, but I can't seem to correctly remove the bone influences so the rest of the cloth can move completely independent of the bones.

Then I tried Option 2, which is to have a non skinned mesh of just the skirt, as a child of the character pelvis. I then pin the vertices in the waist, and this gives a relatively good result, before collisions.

So now to add collisions, I first tried approximating the shape of the legs with capsule colliders, but either they're too thin, and the cloth intersects with the leg mesh, or they're too fat and the cloth bulges incorrectly.

Then I tried instead of capsule colliders, create an editor script that creates a small sphere collider at the center of each triangle in the leg mesh (remember I don't need this in real time), with a script that relocates the collider each frame to the skinned position of each triangle, but for some reason the cloth seems to completely ignore the colliders.

For most accuracy, I also tried creating mesh colliders, one for each triangle (as a prism to ensure the resulting mesh is convex), and updating them to relocate the resulting mesh each frame. Again, the cloth seems to ignore the colliders.

What would be a good way to achieve my goal of having the cloth pushed by the legs in the inside?

Print this item

  Cloth jumping on first frame
Posted by: panda_pajama - 20-01-2018, 06:33 PM - Forum: Obi Cloth - Replies (7)

I have created a cloth attached to a character.

In the editor, the character appears in T-pose, and the cloth is attached to this character.

When I press play, the first frame of the character animation is not quite the same as the T-pose, and so the cloth jumps abruptly in the direction of the movement between T pose and the first frame of the animation.

This jump puts the cloth in a place I don't want to, and getting it out of there is very difficult.

How do I make sure the cloth doesn't jump in the first frame of animation?

Print this item

  Initialize Obi Cloth is not working
Posted by: panda_pajama - 20-01-2018, 04:58 PM - Forum: Obi Cloth - Replies (3)

I am trying to create a type of skirt for a character with Obi Cloth.

So far what I've tried has worked pretty well, and it seems Obi Cloth will be what's going to solve all my problems.

However, I am having some problems when I try to create a cloth with the actual skirt mesh that I'm going to be using.

As per the tutorial, I add an Obi Cloth to the skirt mesh, I set the solver and the shared topology, but when I click on Initialize, I get the following error:

IndexOutOfRangeException: Array index is out of range.

Obi.ObiMeshTopology+<GetNeighbourFacesEnumerator>c__Iterator2.MoveNext () (at Assets/Obi/Scripts/DataStructures/ObiMeshTopology.cs:357)
Obi.ObiCloth+<GeneratePhysicRepresentationForMesh>c__Iterator0.MoveNext () (at Assets/Obi/Scripts/Actors/ObiCloth.cs:310)
Obi.CoroutineJob+<Start>c__Iterator0.MoveNext () (at Assets/Obi/Scripts/Coroutines/CoroutineJob.cs:99)
UnityEngine.Debug:LogException(Exception)
Obi.<Start>c__Iterator0:MoveNext() (at Assets/Obi/Scripts/Coroutines/CoroutineJob.cs:108)
Obi.EditorCoroutine:Update() (at Assets/Obi/Scripts/Coroutines/EditorCoroutine.cs:60)
Obi.EditorCoroutine:Start() (at Assets/Obi/Scripts/Coroutines/EditorCoroutine.cs:47)
Obi.EditorCoroutine:StartCoroutine(IEnumerator) (at Assets/Obi/Scripts/Coroutines/EditorCoroutine.cs:19)
Obi.ObiClothEditor:OnInspectorGUI() (at Assets/Obi/Editor/ObiClothEditor.cs:245)
UnityEngine.GUIUtilityLenguarocessEvent(Int32, IntPtr)

I've successfully done the same process for other simpler meshes, but only this mesh is giving me trouble.

Do you have any idea what may be causing this problem?

Print this item