Latest Threads |
Cloth has stretchy behavi...
Forum: Obi Cloth
Last Post: Andreia Mendes
24-07-2025, 03:15 PM
» Replies: 16
» Views: 331
|
Rope ignoring colliders o...
Forum: Obi Rope
Last Post: josemendez
24-07-2025, 07:03 AM
» Replies: 1
» Views: 72
|
Ladder made by Ropes (Rat...
Forum: Obi Rope
Last Post: josemendez
23-07-2025, 01:43 PM
» Replies: 5
» Views: 207
|
can you remove particles ...
Forum: Obi Softbody
Last Post: josemendez
22-07-2025, 02:19 PM
» Replies: 1
» Views: 146
|
ObiRope Mesh Renderer
Forum: Obi Rope
Last Post: quent_1982
08-07-2025, 11:27 AM
» Replies: 4
» Views: 500
|
How to dynamically change...
Forum: Obi Rope
Last Post: quent_1982
08-07-2025, 06:34 AM
» Replies: 6
» Views: 705
|
Pipeline that bends
Forum: Obi Softbody
Last Post: josemendez
04-07-2025, 09:52 AM
» Replies: 13
» Views: 1,470
|
How to implement/sync Obi...
Forum: Obi Rope
Last Post: quent_1982
01-07-2025, 01:48 PM
» Replies: 2
» Views: 416
|
Collisions don't work con...
Forum: Obi Rope
Last Post: chenji
27-06-2025, 03:05 AM
» Replies: 3
» Views: 484
|
Force Zone apply differen...
Forum: Obi Rope
Last Post: chenji
26-06-2025, 11:41 AM
» Replies: 11
» Views: 1,338
|
|
|
Particle attachments dont attach correctly on quest2 |
Posted by: drone - 13-02-2025, 02:49 PM - Forum: Obi Rope
- Replies (1)
|
 |
Hi, in my company we have Obirope asset and i have a few problems setting it up.
We have overcomplicated vr setup using MetaXR sdk. Obirope 7.0.3, burst solver.
There is image limit on forum so i uploaded it here. In Editor it looks ok (attachment 1. Cables in editor image),
but when app is built and run on quest2 cables are not snapped in place(attachment 2. Cables on the device).
Attachments 3-7 show my in editor setup. On image 4 control points on the edges collide with noting. Image 7 shows attachments that are set up on both sides of rope.
Stuff is connected to each other using meta SnapInteractable to SnapInteractor connection creating ”chains” of objects (they must be coupled/decoupled dynamically).
I also tried to write custom script for forcing renderable position into target Transform position. Sadly there is no visible change on the device.
Another issue is that I have problems with setting up rope as cable so it will behave more like cable, not like rope. Any suggestions?
And fps drop (-20fps) but I assume it's caused by multiple ropes, for now I just want rope endings to attach.
Please let me know if I can specify something more or you need any additional information regarding my setup.
|
|
|
Changing rope lenth creates erratic behaviour |
Posted by: VAbert - 10-02-2025, 09:46 AM - Forum: Obi Rope
- Replies (3)
|
 |
Hello!
Using Obi Rope, I'm trying to make a simple system where a rope is connected to a wall (attachment pin), and to an object that the player can control (another attachment pin); both of those static. I want to make sure that when the object moves away from the wall attachment, the rope gets longer, and when it gets closer, the rope gets shorter. I'm using a cursor, and I tried a few different solutions, but I couldn't get it to work. Here is the current code:
Code: float dist = Vector3.Distance(obj.position, wallAttachment.position) * 1.2f;
if(dist - rope.restLength > 0.1f)
{
objCursor.ChangeLength(Time.deltaTime * ropeSpoolSpeed);
}
else if(dist - rope.restLength < -0.1f)
{
objCursor.ChangeLength(Time.deltaTime * -ropeSpoolSpeed);
}
The result is extremely chaotic, as you can see in this video :
Am I missing something?
Also, along my experiences, I managed to make the rope shorter than zero, which results in an error spamming (in my opinion, it should not be possible), and also to crash Unity, probably by making it too long ? (I feel like there should also be a failsafe there).
Thank you!
|
|
|
Preventing fabric from vibrating and drooping |
Posted by: CptnFabulous - 09-02-2025, 04:22 AM - Forum: Obi Cloth
- Replies (1)
|
 |
We have a system where a virtual garment is procedurally generated, consisting of multiple fabric shapes stitched and stretched around the character model. I’ve noticed an issue where the fabric vibrates and sometimes clips through the model, and I think this is because of the fabric being stretched too tight.
I tried loosening the stretch scale and stretch compliance (they’re normally at 1 and 0 respectively), but any value loose enough to stop the vibrating also resulted in the fabric drooping and losing its shape (more than it already does). I compensated by increasing the particle inverse mass (to try and decrease the mass and make the fabric less likely to droop down), but this makes it start vibrating again.
Another solution I thought of was to directly modify the mesh before generating. The cloth has two halves, front and back, which are initially flat meshes. I made some code that uses raycast checks to manually modify each vertex, to make the mesh wrap more closely around the body. This reduces some of the vibration, but still has some jittering and causes the fabric to droop (albeit in a slightly more crinkly and polygonal way).
I've been thinking about making a system to have most of the garment non-simulated. so it conforms to the model and doesn't move about in ways it doesn't need to, but since the garment is procedurally generated I'm not sure yet how to differentiate between the bits that need to simulate realistically and the bits that can stay in place.
What other methods could I try to reduce jittering?
Thanks!
|
|
|
Collider interactions |
Posted by: AnupamSingh - 07-02-2025, 09:26 AM - Forum: Obi Softbody
- Replies (1)
|
 |
Is it possible for a Unity (non-Obi) collider to detect interaction events with Obi colliders? Do Obi colliders adapt according to the shape of a deformed object? I intend to use it for haptic feel so shape of colliders is important. I added a Unity mesh collider with softbody and that does not appear to deform with particles. Kindly suggest any possible approach.
|
|
|
RuntimeRopeGenerator basic questions |
Posted by: ayoci - 04-02-2025, 04:30 PM - Forum: Obi Rope
- Replies (1)
|
 |
Hi!
I had to upgrade Obi Rope from version 3 to 7 because I bought Obi SoftBody as well, and unfortunately, they don't work on separate versions.
I’m not quite familiar with this version yet.
How can I generate a ropes that always has the same length?
Currently, it generates the rope based on the distance between the Start and End points, but I don’t want that. I tried using "controlPoints.Add(Vector3.down * ropeLength);" like in the old version but it's does not work anymore.
Code: public Transform startp;
public Transform endp;
public Material material;
private ObiRope rope;
public ObiSolver solver;
public ObiRopeBlueprint ropeBlueprint;
private ObiRopeCursor cursor;
public void createropeline()
{
solver = GameObject.Find("Obi Solver").GetComponent<ObiSolver>();
GameObject ropeObject = new GameObject("ObiRope");
ropeObject.transform.SetParent(solver.transform);
rope = ropeObject.AddComponent<ObiRope>();
var pinConstraints = rope.GetConstraintsByType(Oni.ConstraintType.Pin) as ObiConstraints<ObiPinConstraintsBatch>;
pinConstraints.Clear();
var ropeRenderer = ropeObject.AddComponent<ObiRopeLineRenderer>();
ropeRenderer.uvScale = new Vector2(1, 5);
ropeRenderer.material = material;
rope.bendConstraintsEnabled = false;
rope.stretchingScale = 0.5f;
rope.aerodynamicsEnabled = false;
int filter = ObiUtils.MakeFilter(ObiUtils.CollideWithEverything, 0);
ropeBlueprint.path.Clear();
ropeBlueprint.path.AddControlPoint(startp.position, Vector3.zero, Vector3.zero, Vector3.zero, 0.05f, 0.05f, 0.3f, filter, Color.white, "Start");
ropeBlueprint.path.AddControlPoint(endp.position, Vector3.zero, Vector3.zero, Vector3.zero, 0.05f, 0.05f, 0.3f, filter, Color.white, "End");
ropeBlueprint.path.FlushEvents();
rope.ropeBlueprint = ropeBlueprint;
AttachRopeEnds();
}
public void AttachRopeEnds()
{
if (rope == null || ropeBlueprint == null)
return;
var attachmentA = rope.gameObject.AddComponent<ObiParticleAttachment>();
attachmentA.target = startp;
attachmentA.particleGroup = ropeBlueprint.groups[0];
attachmentA.attachmentType = ObiParticleAttachment.AttachmentType.Dynamic;
var attachmentB = rope.gameObject.AddComponent<ObiParticleAttachment>();
attachmentB.target = endp;
attachmentB.particleGroup = ropeBlueprint.groups[ropeBlueprint.groups.Count - 1];
attachmentB.attachmentType = ObiParticleAttachment.AttachmentType.Dynamic;
}
If i switch startp.position, endp.position to Vector3.zero, Vector3.one Then nothing happens when i create the rope.
This is the script I’m currently using, and it works well, but compared to the ExtendableGrapplingHook.cs, it seems quite incomplete.
Could it cause any issues that I’m not using a Coroutine or that "var batch = new ObiPinConstraintsBatch();" section?
Or could it be that the missing parts are exactly why my rope isn't generating properly when I use Vector3.zero, Vector3.one instead of my Transforms?
I know my questions are very basic but i didn't find a normal "Runtime Rope Generator" example.
Thank you in advance.
|
|
|
static 2nd attachment causing rope to control 2nd 3D object |
Posted by: enhilljrRTI - 04-02-2025, 01:42 AM - Forum: Obi Rope
- Replies (1)
|
 |
Brief Description:
Rope attached to separate GameObjects at each end seems to be pushing around the GameObject that is attached to the far end (per the blueprint) even though the Type is set to Static in both ObiParticleAttachment components.
Detailed Description:
I'm trying to simulate a piece of flexible tubing in VR in the Meta Quest 3 that a user can grab at each end and connect to other objects. I have a 3D model of a short 1" piece of tubing that I have duplicated and positioned for use at each end. The ObiRope is created with an Extruded Renderer and contains two ObiParticleAttachment components to attach it to each of the GameObject models. The blueprint and ObiRopeExtrudedRenderer settings have been adjusted so that the rope looks very similar to the 3D tubing model. Each of the tubing model GameObjects has a BoxCollider, Rigidbody, ObiCollider, and ObiRigidbody component on it. Each GameObject also contains a child object with the scripts needed to make the object interactive in VR.
When the simulation starts, the GameObject at the starting end of the rope/tubing stays put and can be picked up and generally behaves as expected. The GameObject on the far end of the rope/tubing however immediately begins to dance around and is very difficult to grab. At all times, the rope remains attached to both GameObjects so it is being rendered properly. The problem is that ObiRope appears to be applying motion to the 2nd attachment unexpectedly.
Can someone recommend ObiRope settings that I should look into or tests I should run to try to understand why this is happening?
Any suggestions would be greatly appreciated!
|
|
|
Obi rope collider produce errors when exit Play mode |
Posted by: Apoll0 - 21-01-2025, 11:35 AM - Forum: Obi Rope
- Replies (3)
|
 |
Hello!
I am using obi rope with some colliders. I have about 8-10 ropes. They are disabled at start and are used as ropes pool. And I also have some objects with obi colliders on the scene.
A few seconds after game start I enable some ropes and move them by static particle attachments. Ropes are colliding with the objects as expected.
Everything seems working ok but when I exit play mode in Unity I get the following errors in console:
Code: InvalidOperationException: The previously scheduled job BurstColliderCollisionConstraintsBatch:CollisionConstraintsBatchJob reads from the UNKNOWN_OBJECT_TYPE CollisionConstraintsBatchJob.shapes. You must call JobHandle.Complete() on the job BurstColliderCollisionConstraintsBatch:CollisionConstraintsBatchJob, before you can deallocate the UNKNOWN_OBJECT_TYPE safely.
Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle.CheckDeallocateAndThrow (Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle handle) <0x1dab97b60 + 0x00052> in <956eaa8539d84df5ae2a3cddf87260d0>:0
Obi.ObiNativeList`1[T].Dispose (System.Boolean disposing) (at Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeList.cs:140)
Obi.ObiNativeList`1[T].Dispose () (at Assets/Obi/Scripts/Common/DataStructures/NativeList/ObiNativeList.cs:148)
Obi.ObiColliderWorld.Destroy () (at Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs:201)
Obi.ObiColliderWorld.DestroyIfUnused () (at Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs:225)
Obi.ObiColliderWorld.DestroyColliderData (Obi.ObiColliderHandle handle) (at Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs:429)
Obi.ObiColliderWorld.DestroyCollider (Obi.ObiColliderHandle handle) (at Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs:333)
Obi.ObiColliderBase.RemoveCollider () (at Assets/Obi/Scripts/Common/Collisions/ObiColliderBase.cs:174)
Obi.ObiColliderBase.OnDisable () (at Assets/Obi/Scripts/Common/Collisions/ObiColliderBase.cs:223)
Code: NullReferenceException: Object reference not set to an instance of an object
Obi.ObiColliderWorld.UpdateRigidbodyVelocities (Obi.ObiSolver solver) (at Assets/Obi/Scripts/Common/Collisions/ObiColliderWorld.cs:634)
Obi.ObiSolver.CompleteSimulation () (at Assets/Obi/Scripts/Common/Solver/ObiSolver.cs:1741)
Obi.ObiSolver.Teardown () (at Assets/Obi/Scripts/Common/Solver/ObiSolver.cs:1282)
Obi.ObiSolver.RemoveActor (Obi.ObiActor actor) (at Assets/Obi/Scripts/Common/Solver/ObiSolver.cs:1918)
Obi.ObiActor.RemoveFromSolver () (at Assets/Obi/Scripts/Common/Actors/ObiActor.cs:381)
Obi.ObiActor.OnDisable () (at Assets/Obi/Scripts/Common/Actors/ObiActor.cs:343)
|
|
|
|