Search Forums

(Advanced Search)

Latest Threads
ObiRope Mesh Renderer
Forum: Obi Rope
Last Post: quent_1982
11 hours ago
» Replies: 4
» Views: 51
How to dynamically change...
Forum: Obi Rope
Last Post: quent_1982
Today, 06:34 AM
» Replies: 6
» Views: 170
Pipeline that bends
Forum: Obi Softbody
Last Post: josemendez
04-07-2025, 09:52 AM
» Replies: 13
» Views: 850
How to implement/sync Obi...
Forum: Obi Rope
Last Post: quent_1982
01-07-2025, 01:48 PM
» Replies: 2
» Views: 207
Collisions don't work con...
Forum: Obi Rope
Last Post: chenji
27-06-2025, 03:05 AM
» Replies: 3
» Views: 270
Force Zone apply differen...
Forum: Obi Rope
Last Post: chenji
26-06-2025, 11:41 AM
» Replies: 11
» Views: 786
Can I blend in and out of...
Forum: Obi Cloth
Last Post: josemendez
24-06-2025, 04:42 PM
» Replies: 3
» Views: 260
Using a rigidbody/collide...
Forum: Obi Cloth
Last Post: josemendez
24-06-2025, 09:29 AM
» Replies: 1
» Views: 160
Solver is too performance...
Forum: Obi Rope
Last Post: quent_1982
20-06-2025, 08:09 AM
» Replies: 40
» Views: 4,300
Obi 7 Model Scaling
Forum: Obi Cloth
Last Post: alkis
19-06-2025, 02:37 PM
» Replies: 2
» Views: 270

 
Pregunta Intertwining of ropes in Obi Rope
Posted by: mayktr - 18-07-2024, 11:19 PM - Forum: Obi Rope - Replies (3)

Hello, I have been working on a mechanic with obi rope for a while. My aim is to prevent the threads from passing through each other and entwining each other. Although I was able to achieve some of this, I could not get it to the level I wanted. Even a simple force causes the ropes to intertwine. Has anyone dealt with this problem before and been able to solve it?



https://drive.google.com/file/d/102LpEO5...sp=sharing

Here is my solver, rope and project settings

   
   
   
   
   

Print this item

  Trying to render bubbly foam
Posted by: Barliesque - 17-07-2024, 12:11 AM - Forum: Obi Fluid - Replies (3)

I'm working on creating an effect where sudsy white foam pours down from the ceiling to the floor.  Here's a look at what I've got so far:



It's pretty close to what I'm after, but there are a couple of things yet I need to be able to control:  

  1. The total number of particles per emitter seems to be restricted to 1000, making it problematic for the foam to pour down continuously rather than in bursts.  
  2. I'd also like to be able to adjust the shininess of the liquid renderer.  The Obi Fluid Renderer doesn't seem to do anything--I can remove it entirely, and everything stays the same.

Print this item

  Question About Collision Impulse
Posted by: wenhao_zheng - 16-07-2024, 08:24 AM - Forum: Obi Softbody - Replies (5)

Hi! 

Under your guidance, I was able to clamp the soft body with the rigid body. This effect is very good and meets our needs.  Sonrojado

In our further requirements, we hope to use ArticulationBody to replace Rigidbody. In fact, ArticulationBody does not seem to be compatible with Obi.
Therefore, I hope to simulate the reaction force of the soft body in physical collision, so as to manually apply the reaction force to ArticulationBody.

In the collision-related documents, it is mentioned that developers can obtain the impulse of the collision.
For the above purpose, I collected this impulse information in the collision callback.
In my previous attempt, I directly used the impulse as the reaction force of the collision, but it seems that this is not the case.

I would like to ask if there is a way to convert the collision impulse into a reaction force.

Sorry, my physics is not very good. Thank you for your help.

Print this item

  Burst not installed?
Posted by: Barliesque - 16-07-2024, 01:16 AM - Forum: Obi Fluid - Replies (6)

I'm getting pretty poor performance, which I'm guessing is due to Burst apparently not being active.
The BurstCollisionWorld script is disabled because OBI_BURST is undefined.  I see that the Obi asmdef defines it, as long as the installed version of Burst is at least 1.2.3-verified.  Burst 1.8.12 is installed in the project, so I don't understand what the issue is.  Any help would be greatly appreciated!

Print this item

  Can't Install
Posted by: PaPiPuGames - 13-07-2024, 09:35 PM - Forum: Obi Fluid - Replies (1)

When I tried to import Obi Fluid from package manager, I can't import files under libOni.bandle.
Script Updating Consent window shows when I importing.
The window say that "Some of this projects source files refer to API that has changed. These can be automatically updated. It is recommended to have a backup of the project before updating. Do you want these file to be updated?"
Assets/Obi/Scripts/Common/Rendering/ObiDistanceFieldRendere.cs

Whiecever I chose Yes or No, I can't import files in libOni.bundles folder.
I tried several times with erasing Obi folder in my project, but it didn't work.

The below error is shown at console.
Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/NativeMultilevelGrid.cs(74,46): error CS1061: 'UnsafeList<K>' does not contain a definition for 'length' and no accessible extension method 'length' accepting a first argument of type 'UnsafeList<K>' could be found (are you missing a using directive or an assembly reference?)

Unity:2022.3.24f1
MacBook Pro 16 inch, 2023
Apple M2 Max, 96GB Memories, OS Sonoma 14.4.1

Please tell me how to fix this.
Thanks.



Attached Files Thumbnail(s)
       
Print this item

Exclamación Bug of particle sleep
Posted by: GuoliZheng - 12-07-2024, 06:02 AM - Forum: Obi Fluid - Replies (2)

Dear Developers,
I have encountered a bug related to particle sleeping, which has caused significant issues in my application scenario. As demonstrated in the video, I initially set the sleep threshold value to 0.5. When particles are emitted at a low height, they correctly enter a sleep state. However, when the emission height is increased, the particles fall to the ground and exhibit slow creeping movements. At this point, I have to increase the sleep threshold to 10 to get them to sleep. The higher the velocity the particles experience during activity, the harder it is for them to sleep, which seems unreasonable.
My particles have a relatively small radius of 0.01m. However, this issue also occurs with larger particles, such as those with radii of 0.03m, 0.05m, and 0.08m. Could you please explain why this happens and how it can be resolved? The burst solver back end also shows this issue, although to a lesser extent.
I look forward to your response.
Best regards,

bug video:↓
https://www.bilibili.com/video/BV1kebHec...782833d31a

Print this item

  Usage of particle position variables
Posted by: wenhao_zheng - 11-07-2024, 03:12 PM - Forum: Obi Softbody - Replies (3)

hi!


I see multiple variables about particle coordinates in IkSolver. They are: positions, restPositions, prevPosition, startPosition.
What is the specific update time for them?


In my case,I used two rigid bodies to try to lift the soft body.
Since I can't lift the soft body directly through friction, my design is to use collision detection to update the positions of the particles on the contact surface, so that the outer wall of the soft body is lifted by the rigid body.
For example, as shown in the following code, when OnObiCollision, the y component change of the rigid body is provided to the colliding particles. Although this implementation can make the soft body shake slightly, it still cannot be lifted completely.
If my code implementation is correct, I don't quite understand this problem. In my code, shouldn't the contact surface of the soft body be completely at the same height as the rigid body?
   


Code:
    public void OnObiCollision(ObiSolver solver, ObiNativeContactList contacts)
    {
        collisionnParticleSolverIndexes.Clear();
        leftCollisionParticleSolverIndexes.Clear();
        rightCollisionParticleSolverIndexes.Clear();

        for (int index = 0; index < contacts.count; index++)
        {
            Oni.Contact contact = contacts[index];

            int particleIndexInSolver = solver.simplices[contact.bodyA];

            ObiColliderBase collider = colliderWorld.colliderHandles[contact.bodyB].owner;
            if (collider.transform == leftClaw)
            {
                leftCollisionParticleSolverIndexes.Add(particleIndexInSolver);
            }
            else if (collider.transform == rightClaw)
            {
                rightCollisionParticleSolverIndexes.Add(particleIndexInSolver);
            }
        }

        isBind = leftCollisionParticleSolverIndexes.Count + rightCollisionParticleSolverIndexes.Count > 400;

        if (isBind)
        {
            float leftClawHeightOffset = leftClaw.transform.position.y - leftClawHeightBuffer;
            float rightClawHeightOffset = rightClaw.transform.position.y - rightClawHeightBuffer;

            for (int index = 0; index < leftCollisionParticleSolverIndexes.Count; index++)
            {
                int particleIndex = leftCollisionParticleSolverIndexes[index];

                solver.positions[particleIndex] = solver.startPositions[particleIndex] + new Vector4(0, leftClawHeightOffset, 0);
                solver.velocities[particleIndex] = Vector4.zero;
                solver.angularVelocities[particleIndex] = Vector4.zero;
                solver.externalForces[particleIndex] = Vector4.zero;
                solver.externalTorques[particleIndex] = Vector4.zero;
            }
            for (int index = 0; index < rightCollisionParticleSolverIndexes.Count; index++)
            {
                int particleIndex = rightCollisionParticleSolverIndexes[index];


                solver.positions[particleIndex] = solver.startPositions[particleIndex] + new Vector4(0, rightClawHeightOffset, 0);
                solver.velocities[particleIndex] = Vector4.zero;
                solver.angularVelocities[particleIndex] = Vector4.zero;
                solver.externalForces[particleIndex] = Vector4.zero;
                solver.externalTorques[particleIndex] = Vector4.zero;
            }
        }

        leftClawHeightBuffer = leftClaw.transform.position.y;
        rightClawHeightBuffer = rightClaw.transform.position.y;
    }

By the way, in addition to modifying the positions of the contact surface particles during the collision callback, I also tried to provide the particles with additional upward velocity. But I always feel that the particles on the contact surface seem to be given a downward momentum at some point in some way I don't know.

While retaining gravity, I hope to find a way to present the effect of the soft body being stably fixed in the air by external forces. To be honest, the effect I expected is like ObiParticleAttachment, but due to some project reasons, I can't use ObiParticleAttachment.

Print this item

Triste Issues with Obi Cloth Simulation in Unity – "Shirt Exploding"
Posted by: gunmec - 10-07-2024, 02:48 PM - Forum: Obi Cloth - Replies (5)

Hi everyone,

I'm having trouble with the Obi Cloth asset in Unity. I'm trying to fit a 3D shirt model onto a 3D human model, but the shirt behaves unpredictably and appears to explode.

Details:

- Unity Version: 2022.3.3f1
- Obi Cloth Version: 6.5.4

Setup:
- A human model with MeshCollider and ObiCollider
- A shirt model with ObiCloth, ObiClothRenderer, and a correctly assigned blueprint
- ObiSolver with 8 substeps and Max Depenetration set to 10

Problems:

The shirt tears and looks like it's exploding, even when initially not colliding with the body.

Error Message when Generating Blueprint:

NullReferenceException: Object reference not set to an instance of an object
Obi.ObiActorBlueprintEditor.Refresh () (at Assets/Obi/Editor/Common/Blueprints/ObiActorBlueprintEditor.cs:416)
...


(But I can click on Edit and see the particles of the shirt).

I've tried adjusting physical parameters like Stretch Compliance and Bend Compliance, but without success. Does anyone have any idea how I can fix this issue?

Thanks in advance for your help!

Print this item

Corazón How can I extract the fluid rendering mesh?
Posted by: GuoliZheng - 10-07-2024, 02:34 PM - Forum: Obi Fluid - Replies (3)

Hello,
I have recently tried out the new grid-based fluid renderer and it looks fantastic, very captivating. Now, I would like to extract the mesh from a specific frame. There are many interesting things that can be done with this mesh, such as freezing it and setting it as a mesh collider. The possibilities are quite exciting to think about.
So, how should I go about doing this? How can I extract the mesh from a specific frame and turn it into a prefab, etc.?
Thank you!

Print this item

Corazón Version update help
Posted by: GuoliZheng - 10-07-2024, 09:41 AM - Forum: Obi Fluid - Replies (9)

Hello,
Thank you very much for the tremendous effort you put into Obi 7. I have obtained the custom package for this version. However, I have done a lot of work using Obi Fluid 6.5, and I have projects in the older version. How can I quickly update these projects to Obi Fluid 7 to avoid redundant work? When I tried to directly import the installation package and overwrite the existing one, many errors occurred.

Print this item