Search Forums

(Advanced Search)

Latest Threads
Rope going through wall
Forum: Obi Rope
Last Post: josemendez
11 hours ago
» Replies: 1
» Views: 9
Change rod section at run...
Forum: Obi Rope
Last Post: matty337s
02-08-2025, 06:07 AM
» Replies: 0
» Views: 43
Sliding along a rope
Forum: Obi Rope
Last Post: vrt0r
01-08-2025, 07:43 PM
» Replies: 0
» Views: 37
In SolidifyOnContact exsa...
Forum: Obi Fluid
Last Post: asimofu_ok
01-08-2025, 04:15 PM
» Replies: 2
» Views: 81
Is it possible to render ...
Forum: Obi Fluid
Last Post: asimofu_ok
01-08-2025, 10:07 AM
» Replies: 2
» Views: 98
Cloth has stretchy behavi...
Forum: Obi Cloth
Last Post: Andreia Mendes
31-07-2025, 02:38 PM
» Replies: 22
» Views: 888
Get separate particles pa...
Forum: Obi Fluid
Last Post: slimedev
29-07-2025, 06:51 PM
» Replies: 6
» Views: 3,214
Solver outside of hierarc...
Forum: General
Last Post: Jawsarn
29-07-2025, 06:19 PM
» Replies: 4
» Views: 186
Rope ignoring colliders o...
Forum: Obi Rope
Last Post: josemendez
24-07-2025, 07:03 AM
» Replies: 1
» Views: 138
Ladder made by Ropes (Rat...
Forum: Obi Rope
Last Post: josemendez
23-07-2025, 01:43 PM
» Replies: 5
» Views: 320

 
  When will the GPU computable version of OBI FLUID be released?
Posted by: irispolar - 23-05-2023, 04:08 AM - Forum: Obi Fluid - Replies (1)

The current version of CPU compute, Obi Fluid, is slow to work with.
I got the information that you are preparing an OBI FLUID that can be calculated by GPU.
When will the GPU computable version of OBI FLUID be released?
Upgrades are urgently needed for quick progress. When will the GPU computable version of OBI FLUID be released?
Please tell me the release information

Print this item

  How to guarantee a rope will not go through a collider?
Posted by: Guillaume - 22-05-2023, 04:24 PM - Forum: Obi Rope - Replies (4)

Hi all,

Sorry if the question is not so precise or has already been answered earlier but here we go.

I'm trying to reproduce some of the rope mechanics as seen in The Last Of Us Part 2 because it's so fun (as reference: https://www.youtube.com/watch?v=VTRzaE3T5to).

I've got a lot of rocks, not so much buildings. Everything is mesh collider.

My avatar hold the rope and I make it grow (with a cursor) to a maximum points.

But when the rope need to be in tension (stretch), I often got the rope penetrating the collider.

I realize that's a tricky situation since I think I'm stressing the system by stretching the particles.


So I'm trying to tweak the lenght of the rope, but I still want it to feel stretched especially when the avatar is going to the opposite side of the rope!
I also tried to increase the solver Collision iterations.
My rope also use "surface-based collisions" since I think it will help detect collision between particles.
I considered using signed distance field, but there is too many different rock meshes and I think it will be too memory costly to store signed distance field.

I still get cases where the rope go inside a collision.

So my question is: how to prevent this from happening?
1) do I miss something obvious on the settings?
2) is it something that Obi solver can let us now by telling us "I couldn't solve this and a particle possibly went inside a collision"
3) can I help the system in some way? (at some point I was considering making some raycasts and spawn simpler collision shapes like spheres to "help" the solving but I don't know if it will work, it seems way to naïve). At some point in the Last Of Us video above (at 0:57 to be precise) we see that the rope is in tension and enter the wall... but the frame after there is a correction going on... and it's impressive!

Thanks for any help or advices!

And thanks for the plugin, it's fun to play around with it, but hard to master so far!

Print this item

  Obi7.0 Cloth
Posted by: xxxh123 - 22-05-2023, 02:52 PM - Forum: Obi Cloth - Replies (1)

ArgumentNullException: Value cannot be null.
Parameter name: buffer
UnityEngine.ComputeShader.SetBuffer (System.Int32 kernelIndex, System.Int32 nameID, UnityEngine.ComputeBuffer buffer) (at <d87da959c26443e0baa9578975afed03>:0)
UnityEngine.ComputeShader.SetBuffer (System.Int32 kernelIndex, System.String name, UnityEngine.ComputeBuffer buffer) (at <d87da959c26443e0baa9578975afed03>:0)
Obi.ComputeSolverImpl.SetDeformableTriangles (Obi.ObiNativeIntList indices, Obi.ObiNativeVector2List uvs) (at Assets/Obi/Scripts/Common/Backends/Compute/Solver/ComputeSolverImpl.cs:354)
Obi.ObiSolver.PushDeformableTriangles () (at Assets/Obi/Scripts/Common/Solver/ObiSolver.cs:1389)
Obi.ObiSolver.BeginStep (System.Single stepTime) (at Assets/Obi/Scripts/Common/Solver/ObiSolver.cs:1628)
Obi.ObiUpdater.BeginStep (System.Single stepDeltaTime) (at Assets/Obi/Scripts/Common/Updaters/ObiUpdater.cs:64)
Obi.ObiFixedUpdater.FixedUpdate () (at Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs:44)

Compute shader (DeformableTriangles): Property (deformableTriangleUVs) at kernel index (1) is not set
UnityEngine.StackTraceUtility:ExtractStackTrace ()
Obi.ComputeSolverImpl:ApplyInterpolation (Obi.ObiNativeVector4List,Obi.ObiNativeQuaternionList,single,single) (at Assets/Obi/Scripts/Common/Backends/Compute/Solver/ComputeSolverImpl.cs:953)
Obi.ObiSolver:Interpolate (single,single) (at Assets/Obi/Scripts/Common/Solver/ObiSolver.cs:1740)
Obi.ObiUpdater:Interpolate (single,single) (at Assets/Obi/Scripts/Common/Updaters/ObiUpdater.cs:133)
Obi.ObiFixedUpdater:Update () (at Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs:61)




something went wrong with my project in Obi7.0 Cloth with compute backend,
this project is from Obi6.0, and i just changed the backend and fixed some changement on "solverIndices".
these errors stuck my project.

i also tried some demo scenes in Obi7.0,and just changed the backend to compute, it sometimes poped out such error but still could run and work.
how can i fix it?

Print this item

  Obi rope removes itself
Posted by: Max360 - 22-05-2023, 11:52 AM - Forum: General - Replies (8)

Hello there,

Me and my team have been using Obi rope for about 5 months now and we keep running into an issue where obi rope seems to uninstall itself from our Unity project. Does anyone know what might be causing this and/or how to fix?

Unity version: 2021.3.2f1
Obi rope version: 6.5.2

Any help would be appreciated, thanks in advance!

Print this item

  Liquid cannot be left in the bottle
Posted by: jeffLin - 21-05-2023, 04:48 AM - Forum: Obi Fluid - Replies (2)

Hi Obi,

I refer to the settings of the WhiskeyBottle Scene to make a Bottle, how to set it so that the liquid stays in the Bottle
my settings are attached

(28) liquid is bounced off - YouTube



Attached Files Thumbnail(s)
                   
Print this item

  Loading rope state after changing it's length
Posted by: natko1412 - 19-05-2023, 10:37 AM - Forum: Obi Rope - Replies (2)

Hi again,

this thread is a continuation this one.

I am trying to load rope state after changing it's length in the previous run.
My workflow is as follows:

Saving:
1. Serialize position/orientation for each object I need
2. Serialize rope length changes throughout the run
3. Serialize particle positions and velocities

Loading:
1. Deserialize and set position/orientation for each object I need
2. Change rope for each entry in my serialized rope lengths field (got it from the post here)
3. Deserialize and set particle positions and velocities


The problem I encounter is that after initial position is correctly set, attachment particles jump to other position, and my attachment ends up with a big gap.
Here is the video:
https://streamable.com/4q8ib4

The particles seem to bee still attached, but attachment point should be as shown on this image:
https://ibb.co/2jbT9y2

Do you have any idea how to solve this?

Best regards

Print this item

  Burst Errors in 6.5.2
Posted by: goldfire - 18-05-2023, 03:37 AM - Forum: Obi Rope - Replies (1)

Everything is working great on 6.5.0, but once I upgrade to 6.5.2, I start getting thousands of these burst errors spamming the console. I roll back to 6.5.0 and they go away. I'm running on Unity 2021.3.18 with all the latest packages and the built-in pipeline.

Quote:System::InvalidOperationException: The UNKNOWN_OBJECT_TYPE has been declared as [WriteOnly] in the job, but you are reading from it.
This Exception was thrown from a job compiled with Burst, which has limited exception support.
#3 scripting_raise_exception(ScriptingExceptionPtr)
#4 AtomicSafetyHandle_CUSTOM_CheckWriteAndThrowNoEarlyOut_Injected(AtomicSafetyHandle const&)
#5 Unity.Jobs.IJobParallelForExtensions.ParallelForJobStruct`1<Obi.ApplyInertialForcesJob>.Execute
#6 ExecuteJobCopyData(ManagedJobData*, void (*)(void*, void*, void*, void*, int), int)
#7 ForwardJobForEachToManaged(ManagedJobData*, unsigned int)
#8 JobQueue::Exec(JobInfo*, long long, int, bool)
#9 JobQueue::Steal(JobGroup*, JobInfo*, long long, int, bool, bool)
#10 JobQueue::WaitForJobGroupID(JobGroupID, JobQueue::JobQueueWorkStealMode)
#11 CompleteFenceInternal(JobFence&, WorkStealMode)
#12 ScheduleBatchedScriptingJobsAndComplete(JobFence&, ScriptingExceptionPtr*)
#13 JobHandle_CUSTOM_ScheduleBatchedJobsAndComplete(JobFence&)
#14  (Mono JIT Code) (wrapper managed-to-native) Unity.Jobs.JobHandle:ScheduleBatchedJobsAndComplete (Unity.Jobs.JobHandle&)
#15  (Mono JIT Code) [JobHandle.bindings.cs:22] Unity.Jobs.JobHandle:Complete ()
#16  (Mono JIT Code) [BurstSolverImpl.cs:274] Obi.BurstSolverImpl:ApplyFrame (single,single,single)
#17  (Mono JIT Code) [ObiSolver.cs:1505] Obi.ObiSolver:UpdateTransformFrame (single)
#18  (Mono JIT Code) [ObiSolver.cs:1553] Obi.ObiSolver:BeginStep (single)
#19  (Mono JIT Code) [ObiUpdater.cs:63] Obi.ObiUpdater:BeginStep (single)
#20  (Mono JIT Code) [ObiFixedUpdater.cs:48] Obi.ObiFixedUpdater:FixedUpdate ()
#21  (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)
#22 mono_jit_runtime_invoke
#23 do_runtime_invoke
#24 mono_runtime_invoke
#25 scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool)
#26 ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool)
#27 MonoBehaviour::CallMethodIfAvailable(int)
#28 MonoBehaviour::CallUpdateMethod(int)
#29 void BaseBehaviourManager::CommonUpdate<FixedBehaviourManager>()
#30 FixedBehaviourManager::Update()
#31 InitPlayerLoopCallbacks()::FixedUpdateScriptRunBehaviourFixedUpdateRegistrator::Forward()
#32 ExecutePlayerLoop(NativePlayerLoopSystem*)
#33 ExecutePlayerLoop(NativePlayerLoopSystem*)
#34 PlayerLoop()
#35 EditorPlayerLoop::Execute()
#36 PlayerLoopController::UpdateScene(bool)
#37 PlayerLoopController::UpdateSceneIfNeeded()
#38 Application::TickTimer()
#39 -[EditorApplication TickTimer]
#40 __NSFireTimer
#41 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
#42 __CFRunLoopDoTimer
#43 __CFRunLoopDoTimers
#44 __CFRunLoopRun
#45 CFRunLoopRunSpecific
#46 RunCurrentEventLoopInMode
#47 ReceiveNextEventCommon
#48 _BlockUntilNextEventMatchingListInModeWithFilter
#49 _DPSNextEvent
#50 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]
#51 -[NSApplication run]
#52 NSApplicationMain
#53 EditorMain(int, char const**)
#54 main
#55 ???
System.NullReferenceException: Object reference not set to an instance of an object
This Exception was thrown from a job compiled with Burst, which has limited exception support.
#3 AtomicSafetyHandle::CheckWriteAndBumpSecondaryVersion(AtomicSafetyHandle, ScriptingExceptionPtr*)
#4 AtomicSafetyHandle_CUSTOM_CheckWriteAndBumpSecondaryVersion_Injected(AtomicSafetyHandle const&)
#5 AtomicSafetyHandle_CUSTOM_CheckWriteAndBumpSecondaryVersion_Injected(AtomicSafetyHandle const&)
#6 Unity.Jobs.IJobExtensions.JobStruct`1<Obi.FindFluidParticlesJob>.Execute
#7 ForwardJobToManaged(ManagedJobData*)
#8 JobQueue::Exec(JobInfo*, long long, int, bool)
#9 JobQueue::WaitForJobGroupID(JobGroupID, JobQueue::JobQueueWorkStealMode)
#10 CompleteFenceInternal(JobFence&, WorkStealMode)
#11 ScheduleBatchedScriptingJobsAndComplete(JobFence&, ScriptingExceptionPtr*)
#12 JobHandle_CUSTOM_ScheduleBatchedJobsAndComplete(JobFence&)
#13  (Mono JIT Code) (wrapper managed-to-native) Unity.Jobs.JobHandle:ScheduleBatchedJobsAndComplete (Unity.Jobs.JobHandle&)
#14  (Mono JIT Code) [JobHandle.bindings.cs:22] Unity.Jobs.JobHandle:Complete ()
#15  (Mono JIT Code) [ParticleGrid.cs:457] Obi.ParticleGrid:Update (Obi.BurstSolverImpl,single,Unity.Jobs.JobHandle)
#16  (Mono JIT Code) [BurstSolverImpl.cs:578] Obi.BurstSolverImpl:GenerateContacts (Unity.Jobs.JobHandle,single)
#17  (Mono JIT Code) [BurstSolverImpl.cs:506] Obi.BurstSolverImpl:CollisionDetection (single)
#18  (Mono JIT Code) [ObiSolver.cs:1569] Obi.ObiSolver:BeginStep (single)
#19  (Mono JIT Code) [ObiUpdater.cs:63] Obi.ObiUpdater:BeginStep (single)
#20  (Mono JIT Code) [ObiFixedUpdater.cs:48] Obi.ObiFixedUpdater:FixedUpdate ()
#21  (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)
#22 mono_jit_runtime_invoke
#23 do_runtime_invoke
#24 mono_runtime_invoke
#25 scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool)
#26 ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool)
#27 MonoBehaviour::CallMethodIfAvailable(int)
#28 MonoBehaviour::CallUpdateMethod(int)
#29 void BaseBehaviourManager::CommonUpdate<FixedBehaviourManager>()
#30 FixedBehaviourManager::Update()
#31 InitPlayerLoopCallbacks()::FixedUpdateScriptRunBehaviourFixedUpdateRegistrator::Forward()
#32 ExecutePlayerLoop(NativePlayerLoopSystem*)
#33 ExecutePlayerLoop(NativePlayerLoopSystem*)
#34 PlayerLoop()
#35 EditorPlayerLoop::Execute()
#36 PlayerLoopController::UpdateScene(bool)
#37 PlayerLoopController::UpdateSceneIfNeeded()
#38 Application::TickTimer()
#39 -[EditorApplication TickTimer]
#40 __NSFireTimer
#41 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
#42 __CFRunLoopDoTimer
#43 __CFRunLoopDoTimers
#44 __CFRunLoopRun
#45 CFRunLoopRunSpecific
#46 RunCurrentEventLoopInMode
#47 ReceiveNextEventCommon
#48 _BlockUntilNextEventMatchingListInModeWithFilter
#49 _DPSNextEvent
#50 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]
#51 -[NSApplication run]
#52 NSApplicationMain
#53 EditorMain(int, char const**)
#54 main
#55
???

Print this item

  Attaching "hose nozzle" to the end of the rope
Posted by: Alberos - 17-05-2023, 06:51 AM - Forum: Obi Rope - Replies (2)

Hi,

I'm using Obi rope to simulate a rubber tube. I'm trying to insert a head/nozzle at the end of the "rope". Think of it as a pump nozzle at the gas station. The nozzle is inserted into the tube and not just attached at the end. Because some part of the rigid nozzle is inside the tube, it make that section and a bit more running up the tube rigid and unable to bend.

In the past I can achieve the OK result by using Rod instead of Rope and using 2 attachment points, one at the extreme end and another a bit farther out (see my beautiful Paint drawing skill).
   
The black is the end piece model. The red dot is a static attachment. The grey line is the Obi Rod.

However, this time, I needed a Rope because I want to change its size at runtime. The tube will also be clear, which make it harder to hide stuff. Lastly, from what I understand, I need a dynamic attachment because I want to reel in the rope at the other end, dragging the head piece along with the rope. There is also a similar setup tube (in blue) branching off of a main clear tube. The End and EndPre control point and its dynamic attachment collider is set to not collide with each other. At least I want the rope to not do this:
   
The head piece (kind of like a plug) is not align with the tube. In some case it's worst than this (the plug is almost completely out of the tube)

Any advice to make the end piece stay inside the tube but not increasing performance cost too much? I'm really worried about the performance, I don't think using 4 dynamics would be OK in a mobile VR. I'm thinking of attaching the end piece to the rope particle instead (using particle position/rotation in code?) but this end piece do need to be able to be grabbed and moved by player (VR) so I fear if I do that it might not work.

I think I'm missing something here, any advice or correct way to do this kind of setup is greatly appreciated. I see myself doing this again in the future.


Solver setting (might need to be lowered in the future if the performance is not enough, ideally, keep it at least as possible):
Substeps: 8
Fixed timestep: 0.02

Distance: 2 (Sequential)
Bending: 1 (Parallel)
Particle collision / Queries: 1 (Sequential)
Collision: 1 (Sequential)
Pin: 4 (Parallel)
Stitch: 1 (Parallel)

Rope blueprint setting: 
Thickness: 0.005 (extremely thin, this is a very thin medical tube that goes.... into your nose)
Resolution: 0.5
Pooled Particle: 100

Thanks!

Print this item

  Cable jitters when extending and reducing cable lengths
Posted by: rohit_dhak - 16-05-2023, 07:57 AM - Forum: Obi Rope - Replies (6)

Hello,



So I am controlling the position of an object attached to 4 cables (Scene shown below).



   



When giving control to all the cable to move the robot. Sometimes the cables jitter continuously.

(check the video in the link below)



https://drive.google.com/file/d/139fZwr1...sp=sharing



I am using the following parameters.



# Rope Blueprint (same for all cables):

Thickness = 0.05

Resolution = 0.05

Pooled particles = 200



# All cables:

Substeps for Obi Fixed updater = 70


   



Obi Solver:
   

   


The code to control the cable lengths is given below.

Control_c1#.cs -----

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

[RequireComponent(typeof(ObiRope))]
public class Control_C1 : MonoBehaviour
{
    public ObiRope rope1;
    public ObiRopeCursor cursor1;
    public float rope_c1;
    public float rope_c1_rest;
    public float minLength = 0.1f;
    //public float speed = 1;
    public float cable_threshold = 0.02f;
    public float time_dt;
    public float cable1Velocity;
    public float velocityConstant = 1.0f;
    public float c1_control_ip;
    public TCPListenPipe listenerScript;





    // Use this for initialization
    void Start ()
       {
        rope1 = GetComponent<ObiRope>();
        cursor1 = GetComponent<ObiRopeCursor>();
        listenerScript = FindObjectOfType<TCPListenPipe>();
        time_dt = Time.deltaTime;
    }
    
    // Update is called once per frame
    public void Update()
    {
        rope_c1 = rope1.CalculateLength();
        rope_c1_rest = rope1.restLength;
        c1_control_ip = listenerScript.c1_action;
    }

    // Function to get current length of cable 1
    public float GetCable1CurrentLength()
    {
        return rope_c1;
    }

    // Function to get rest length of cable 1
    public float GetCable1RestLength()
    {
        return rope_c1_rest;
    }

    // Function to determine variable cable input velocity
    public float GetCable1Velocity(float length, float control_ip)
    {
        float c1_control_ip = control_ip;
        float c1_len = length;
        cable1Velocity =  velocityConstant * (c1_control_ip - c1_len);
        return cable1Velocity;
    }

    // Function to set cable 1 control input with variable velocity
    public Action SetCable1(float length, float control_ip, float velocity)
    {
        float c1_control_ip = control_ip;
        float c1_len = length;
        float c1_vel = velocity;

        return () =>
        {
            if (c1_len > c1_control_ip + cable_threshold)
            {
                cursor1.ChangeLength(c1_len - c1_vel * time_dt);
            }
            else if (c1_len < c1_control_ip - cable_threshold)
            {
                cursor1.ChangeLength(c1_len + c1_vel * time_dt);
            }
            else if (c1_len == c1_control_ip - cable_threshold)
            {
                Debug.Log("Current Length and Control input are the same for Cable 1");
                return;
            }
        };
    }


Control_main.cs -----

Code:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//|Method to control all cables parallely
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    public void set_control()
    {
        var CableParams = paramScript.allParams.Cable;
        var Control = paramScript.allParams.Control;
        var Velocity = paramScript.allParams.Velocity;

        if (Velocity.c1_vel!= 0 && Velocity.c2_vel!= 0 && Velocity.c3_vel!= 0 && Velocity.c4_vel!= 0)
        {
            // Setting control with variable velocity
            Parallel.Invoke(c1Script.SetCable1(CableParams.Cable1, Control.c1_control_ip, Velocity.c1_vel),
                            c2Script.SetCable2(CableParams.Cable2, Control.c2_control_ip, Velocity.c2_vel),
                            c3Script.SetCable3(CableParams.Cable3, Control.c3_control_ip, Velocity.c3_vel),
                            c4Script.SetCable4(CableParams.Cable4, Control.c4_control_ip, Velocity.c4_vel));
        }

       
        // Checking applied control and setting the action_completed status
        if (Control.c1_control_ip!= 0
            && Control.c2_control_ip!= 0
            && Control.c3_control_ip!= 0
            && Control.c4_control_ip!= 0
            && Math.Abs(CableParams.Cable1 - Control.c1_control_ip) < 0.2f
            && Math.Abs(CableParams.Cable2 - Control.c2_control_ip) < 0.2f
            && Math.Abs(CableParams.Cable3 - Control.c3_control_ip) < 0.2f
            && Math.Abs(CableParams.Cable4 - Control.c4_control_ip) < 0.2f
            && Math.Abs(CableParams.Cable1_rest-CableParams.Cable1)<0.05
            && Math.Abs(CableParams.Cable2_rest-CableParams.Cable2)<0.05
            && Math.Abs(CableParams.Cable3_rest-CableParams.Cable3)<0.05
            && Math.Abs(CableParams.Cable4_rest-CableParams.Cable4)<0.05)
        {
            if (action_completed == 0.0f)
            {
                action_done = 1.0f;
                action_status = "completed";
                //Debug.Log("Action Status: " + action_status);
                action_completed = 1.0f;
            }
        }
    }

The variable velocities for all cables and the cable control inputs are received from python using a TCP connection.

Any advice or suggestion is greatly appreciated.

Print this item

  low FPS in reproduced Benchmark scene
Posted by: OurObiForumUser - 15-05-2023, 11:43 AM - Forum: Obi Cloth - Replies (6)

Hello.

I tried to reproduce the "Benchmark" scene programmatically with my own 32 procedurally generated patches of cloth (no wind though). Everything worked fine! The blueprints, the connections with solvers, updaters, and so on. However, I observed differences in displayed FPS values: My scene always runs at 75% FPS relative to the benchmark scene. Since both are opened in the same project I don't suspect Unity's time/fixed time-settings, or similar things, to interfere here.
I also checked:
- updater cycles
- enabled constraints in solver

I even have no environment geometry, no textures and no wind, as mentioned.

Has anyone an idea what the reason for lower FPS could be in this case?

Thank you.

Print this item