Search Forums

(Advanced Search)

Latest Threads
Change rod section at run...
Forum: Obi Rope
Last Post: matty337s
Today, 06:07 AM
» Replies: 0
» Views: 18
Sliding along a rope
Forum: Obi Rope
Last Post: vrt0r
Yesterday, 07:43 PM
» Replies: 0
» Views: 19
In SolidifyOnContact exsa...
Forum: Obi Fluid
Last Post: asimofu_ok
Yesterday, 04:15 PM
» Replies: 2
» Views: 49
Is it possible to render ...
Forum: Obi Fluid
Last Post: asimofu_ok
Yesterday, 10:07 AM
» Replies: 2
» Views: 75
Cloth has stretchy behavi...
Forum: Obi Cloth
Last Post: Andreia Mendes
31-07-2025, 02:38 PM
» Replies: 22
» Views: 839
Get separate particles pa...
Forum: Obi Fluid
Last Post: slimedev
29-07-2025, 06:51 PM
» Replies: 6
» Views: 3,181
Solver outside of hierarc...
Forum: General
Last Post: Jawsarn
29-07-2025, 06:19 PM
» Replies: 4
» Views: 169
Rope ignoring colliders o...
Forum: Obi Rope
Last Post: josemendez
24-07-2025, 07:03 AM
» Replies: 1
» Views: 131
Ladder made by Ropes (Rat...
Forum: Obi Rope
Last Post: josemendez
23-07-2025, 01:43 PM
» Replies: 5
» Views: 315
can you remove particles ...
Forum: Obi Softbody
Last Post: josemendez
22-07-2025, 02:19 PM
» Replies: 1
» Views: 182

 
  Obi Scripts Backends Burst issues
Posted by: digimbyte - 31-03-2023, 07:42 AM - Forum: Obi Rope - Replies (1)

I have Burst 1.8.4  and Obi Rope 6.5.1 in a new project in 2022.2.12
With this, my console has the following 3 errors:

  • Assets\Obi\Scripts\Common\Backends\Burst\Solver\DequeueIntoArrayJob.cs(12,31): error CS8377: The type 'T' must be a non-nullable value type, along with all fields at any level of nesting, in order to use it as parameter 'T' in the generic type or method 'NativeQueue<T>'
  • Assets\Obi\Scripts\Common\Backends\Burst\DataStructures\NativeMultilevelGrid.cs(34,13): error CS0305: Using the generic type 'UnsafeList<T>' requires 1 type arguments
  • Assets\Obi\Scripts\Common\Backends\Burst\DataStructures\NativeMultilevelGrid.cs(88,36): error CS8377: The type 'NativeMultilevelGrid<T>.Cell<T>' must be a non-nullable value type, along with all fields at any level of nesting, in order to use it as parameter 'T' in the generic type or method 'NativeList<T>'
I found a thread where it was suggested that Burst 1.8.3 works, however this did not resolve it for me.
Additionally, I have tried looking for something in FAQ incase I missed a step or dependency version but it seems this is a niche or new bug.

Looking for a way to proceed, thanks.

Print this item

  Can I gather obi cloth
Posted by: Elsiehar - 31-03-2023, 02:28 AM - Forum: Obi Cloth - Replies (3)

I am trying to simulate a beach towel over my characters shoulder but I can't get the cloth to gather at the shoulder.  At the moment I am working outside the character.  I have set up 4 particle attachments and put them where the four corners of the shoulders would be and a capsule collider underneath to simulate the shoulder but the cloth isn't gathering.  I am just using the exiting materials for now and will change to a beach towel once it is working.

See video below which shows what happens and how I have it set up.

https://360.articulate.com/review/conten...0a3/review

Is this possible using Obi Cloth or do I need to set up the prefab with the gathers already there.

Thanks
Elsiehar

Print this item

  Having Trouble Making the Mesh Update in Sync with the Softbody
Posted by: oski223 - 29-03-2023, 07:51 PM - Forum: Obi Softbody - Replies (1)

Ive tried binding the skin of the mesh multiple times as well as re-generating my soft body, but every time I try to use the soft body, the mesh acts like a normal rigid body. When I add a particle renderer it shows the particles working, but the mesh still dysynced.

Any help would be much appreciated.

Thanks!

Print this item

  Oscillations when setting cable lengths, probably due to dynamics
Posted by: rohit_dhak - 29-03-2023, 09:36 AM - Forum: Obi Rope - Replies (7)

So I have a scene as shown below:

   

I am sending control to change cable lengths of all 4 cables at once (action = [25.23, 26.18, 35, 33.67]).

Code:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//|Method to control cables individually
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   
    // Method to perform control actions for cable 1
    public void set_c1()
    {
        if (c1_len > c1_control_ip)
        {
            cursor_1.ChangeLength(rope_1.restLength - c1_control_ip * time_dt/10);
        }

        else if(c1_len < c1_control_ip)
        {
            cursor_1.ChangeLength(rope_1.restLength + c1_control_ip * time_dt/10);
        }

        else
        {
            Debug.Log("Current Length and Control input are the same");
        }
       
    }

// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//

    // Method to perform control actions for cable 2
    public void set_c2()
    {
        if (c2_len > c2_control_ip)
        {
            cursor_2.ChangeLength(rope_2.restLength - c2_control_ip * time_dt/10);
        }

        else if(c2_len < c2_control_ip)
        {
            cursor_2.ChangeLength(rope_2.restLength + c2_control_ip * time_dt/10);
        }

        else
        {
            Debug.Log("Current Length and Control input are the same");
        }
       
    }

// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//

    // Method to perform control actions for cable 3
    public void set_c3()
    {
        if (c3_len > c1_control_ip)
        {
            cursor_3.ChangeLength(rope_3.restLength - c3_control_ip * time_dt/10);
        }

        else if(c3_len < c3_control_ip)
        {
            cursor_3.ChangeLength(rope_3.restLength + c3_control_ip * time_dt/10);
        }

        else
        {
            Debug.Log("Current Length and Control input are the same");
        }
       
    }

// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------//

    // Method to perform control actions for cable 4
    public void set_c4()
    {
        if (c4_len > c4_control_ip)
        {
            cursor_4.ChangeLength(rope_4.restLength - c4_control_ip * time_dt/10);
        }

        else if(c4_len < c4_control_ip)
        {
            cursor_4.ChangeLength(rope_4.restLength + c4_control_ip * time_dt/10);
        }

        else
        {
            Debug.Log("Current Length and Control input are the same");
        }
       
    }

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//|Method to control all cables parallely
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    public void set_control()
    {
        Parallel.Invoke(set_c1, set_c2, set_c3, set_c4);
    }

However it looks like the cable lengths are overshooting while setting and because of that

Code:
        if (c2_len > c2_control_ip)
        {
            cursor_2.ChangeLength(rope_2.restLength - c2_control_ip * time_dt/10);
        }

        else if(c2_len < c2_control_ip)
        {
            cursor_2.ChangeLength(rope_2.restLength + c2_control_ip * time_dt/10);
        }


These above 2 conditions are counteracting to each other and I am getting an oscillating behavior of the system as shown in the following video.

Oscillation behavior

Print this item

  Releasing softbody particles from anchor
Posted by: blobman - 26-03-2023, 11:57 PM - Forum: Obi Softbody - Replies (2)

Following along the script example here:

Code:
using UnityEngine;
using System.Collections;
using Obi;

[RequireComponent(typeof(ObiActor))]
public class DistanceAnchor : MonoBehaviour {

    ObiActor actor;
    public Transform anchor;
    public float anchorRadius = 0.5f;

    void Awake(){
        actor = GetComponent<ObiActor>();
    }

    void Start(){
        if (actor.isLoaded){
            for (int i = 0; i < actor.solverIndices.Length; ++i){

                int solverIndex = actor.solverIndices[i];

                // if the particle is visually close enough to the anchor, fix it.
                if (Vector3.Distance(actor.GetParticlePosition(solverIndex), anchor.position)
                        < anchorRadius)
                {
                    actor.solver.velocities[solverIndex] = Vector3.zero;
                    actor.solver.invMasses[solverIndex] = 0;
                }
            }
        }
    }
}
From: http://obi.virtualmethodstudio.com/manua...icles.html

What is a good approach to later release the softbody particles from the anchor?
I tried saving a copy of `velocities` and `invMasses` prior to setting them to 0, and then restoring them on the actor's solver when some callback gets invoked. This did not seem to work.

or is there a way to disable gravity on the exclusively on the softbody particles?

Print this item

  Following Seas
Posted by: MEPETAMINALS - 26-03-2023, 09:52 PM - Forum: Made with Obi - Replies (2)

Wanted to show my WIP sailing game that heavily features Obi Cloth/Rope.

Lots of little issues yet, but pleased with the process. Excellent product overall.

Three masted ship at sail:

https://www.youtube.com/watch?v=EG71Li-lR44

Single masted ship, showing cloth and rope interaction mechanics:

https://www.youtube.com/watch?v=Rvcmep5855I

Print this item

  Using Obi cloth for unskinned 3D garment on a 3D avatar
Posted by: mandeepdhalor28 - 23-03-2023, 12:59 PM - Forum: Obi Cloth - Replies (5)

Hi 

I have purchased obi cloth for trying my 3D garments on my 3D avatars. The tutorials those I have seen uses skinned clothes on 3D avatar to simulate the clothes. But I want to simulate my clothes using unskinned 3D garments. Can you please share a tutorial or example which I can follow to implement the same.

Thanks

Print this item

  Raise the rope from a new position
Posted by: Stader - 21-03-2023, 10:33 PM - Forum: Obi Rope - Replies (1)

Is it possible to edit the rope by code after it has been generated?

Just to exemplify what I would like to do, in the game we are going to have the rope in an initial state with a pin. As the player clicks on the board, we add new pins. 

The idea is to make the rope go through these pins. So the idea was to pass the next rope position with a transform and increase its size. It is possible?

Another solution I was given was to generate another rope and delete the previous one quickly so the player doesn't notice, but I believe this is a very dirty solution.

[Image: bBXfi8.png]

Print this item

  Close off mesh face
Posted by: netjeenpetje - 21-03-2023, 02:04 PM - Forum: Obi Rope - Replies (1)

Hi,

The end of the rope mesh doesnt have a face. Is there a way to add a face?

Print this item

  Teleporting Characters with Solver
Posted by: masamoto - 20-03-2023, 04:06 PM - Forum: Obi Cloth - Replies (4)

Hello, I have a character with solvers under it.
The character needs to be able to teleport freely in the world.
At the moment the ways character are spawned is at World Origin and then Teleported to the designated location.
What would be the best way to allow teleportation.
The Solver is set to gravity "World Space" and the whole prefab is being Teleported with the solver somewhere inside it.

Best Regards

Thomas P.

Print this item