Latest Threads |
How to dynamically change...
Forum: Obi Rope
Last Post: josemendez
4 hours ago
» Replies: 5
» Views: 132
|
Pipeline that bends
Forum: Obi Softbody
Last Post: josemendez
04-07-2025, 09:52 AM
» Replies: 13
» Views: 817
|
How to implement/sync Obi...
Forum: Obi Rope
Last Post: quent_1982
01-07-2025, 01:48 PM
» Replies: 2
» Views: 195
|
Collisions don't work con...
Forum: Obi Rope
Last Post: chenji
27-06-2025, 03:05 AM
» Replies: 3
» Views: 258
|
Force Zone apply differen...
Forum: Obi Rope
Last Post: chenji
26-06-2025, 11:41 AM
» Replies: 11
» Views: 762
|
Can I blend in and out of...
Forum: Obi Cloth
Last Post: josemendez
24-06-2025, 04:42 PM
» Replies: 3
» Views: 244
|
Using a rigidbody/collide...
Forum: Obi Cloth
Last Post: josemendez
24-06-2025, 09:29 AM
» Replies: 1
» Views: 148
|
Solver is too performance...
Forum: Obi Rope
Last Post: quent_1982
20-06-2025, 08:09 AM
» Replies: 40
» Views: 4,259
|
Obi 7 Model Scaling
Forum: Obi Cloth
Last Post: alkis
19-06-2025, 02:37 PM
» Replies: 2
» Views: 259
|
Obi Softbody instability?
Forum: Obi Softbody
Last Post: Aroosh
18-06-2025, 06:35 PM
» Replies: 0
» Views: 138
|
|
|
Changing solver gravity vector has no effect on particles |
Posted by: T-1000 - 13-05-2024, 06:21 PM - Forum: Obi Fluid
- Replies (2)
|
 |
I have a scene in Unity that uses Obi Fluid. The flow of the fluid can be controlled by rotating the Obi solver's gravity vector in response to WSAD (or the gyroscope input when running on a mobile device, which I haven't tested in the new version but which worked in the old). Note that changing the gravity vector is more convenient programmatically than rotating scene objects because it means I can more easily use a generic script. It also seems to be more stable than rotating geometry.
This all works fine when using `Obi Fluid v6.0.1 in Unity 2021.3.31`, but no longer works using `Obi Fluid 6.5.4 in Unity 2022.3.28`.
In the old version, I set the gravity vector in the `void Update()` method using
Code: if (Input.GetKey(KeyCode.W))
{
obiSolver.parameters.gravity = Quaternion.Euler(0, 0, zRotationRate * Time.deltaTime) * obiSolver.parameters.gravity;
}
obiSolver.PushSolverParameters();
(and three others for the other keys), and it works fine (I write the gravity vector to a textbox afterward) - the particles move in response to the changing direction of gravity.
However, in the new version this doesn't actually change the parameter at all. Weirdly, after some trial and error, I found I have to use a temporary `Vector3` variable and then set the parameter.
Code: if (Input.GetKey(KeyCode.W))
{
TempGravityVector = Quaternion.Euler(0, 0, zRotationRate * Time.deltaTime) * TempGravityVector;
}
obiSolver.parameters.gravity = TempGravityVector;
obiSolver.PushSolverParameters();
After setting `TempGravityVector = obiSolver.parameters.gravity;` in the `Start()` method, obviously). That does set the gravity parameter. However, it has no effect on the particles at all. The gravity vector does change but the particles don't seem to know it, and I'm flummoxed as to why. Anyone have any ideas?
PS I haven't tried other combinations of versions of Obi and Unity as that would seem to me to be a nightmare.
|
|
|
Problems deleting obi colliders with pin constraints |
Posted by: btduser - 12-05-2024, 07:29 AM - Forum: Obi Rope
- Replies (7)
|
 |
Hello, I'm trying to do something seemingly trivial - to cleanly delete an object with an ObiCollider and not have my pin constraints blow up - but apparently it's complicated.
I'm creating these pins via scripting, following examples from the documentation. The pinning works fine until I destroy a collider in my scene. When that happens, my console starts getting spammed with the following:
Code: System.IndexOutOfRangeException: Index 15 is out of range of '15' Length.
This Exception was thrown from a job compiled with Burst, which has limited exception support.
[redacted rest due to forum anti-spam]
After a lot of excruciatingly painful debugging, I finally have an idea of why this is happening, but no idea how to proceed.
From what I have gathered, the issue is due to the fact that when I destroy (or disable) a collider, this changes the number of items in `ObiColliderWorld.instance.colliderHandles`, but the collider handle indexes in the pin constraints don't ever get updated. This also happens if I disable the object. Presumably because in either case, `ObiColliderBase.RemoveCollider` is invoked, which modifies the collider handle list.
This either spams burst errors or causes the rope to jump to completely unrelated obi colliders. Even just disabling and re-enabling an obi collider will steal ropes from other objects - e.g. if I have 10 colliders in my scene, with a pin on collider A at index 9, disabling collider B at index 5 rearranges the list so that A is now at index 8 and index 9 is invalid, which will spam errors until I re-enable B, which causes B to get assigned index 9 again, and now the pin is pointing to B instead of A.
I have no idea how to proceed. I've tried deleting the collider at different steps of the process (using the actor callbacks) in case it was timing-related, but the issue persists. Explicitly calling `rope.SetConstraintsDirty(Oni.ConstraintType.Pin);` after destroying my object doesn't seem to fix anything either.
I don't know what I'm doing wrong - it seems like the issue is a fundamental one, that removing any collider in the scene has the potential to break completely unrelated pin constraints. The only solution I can think of is to modify my pins any time any obi collider is destroyed, but I don't see how that's feasible, since there's no way to make pins immediately aware of the change.
I'm using obi 6.5.4 with burst backend (burst 1.8.14), and the problem persists with oni backend as well (ropes just jump to wrong colliders instead of throwing exceptions). I'm basically at my wit's end here - any help is appreciated.
|
|
|
Can ObiBone work with Softbody? |
Posted by: spikebor - 08-05-2024, 03:36 PM - Forum: Obi Softbody
- No Replies
|
 |
Hi, I have this dummy.
![[Image: 35A5URH.png]](https://i.imgur.com/35A5URH.png)
I want to have the bag part to use softbody, and other rigid part to use ObiBone.
So far, after the setup and bind skin, I notice only the softbody takes effect, even though I had painted the influence for the rigid part black.
I think using both in a setup will be neat, the ObiBone can simulate the part is black, not just ignored completely.
So that's like a wishlist for new feature.
For now, I'll use a fullbody softbody setup and attach the rigid part to bone.
The downside of this setup versus ObiBone is obi bone is much more alive, if you collide with the environment the bone will bend.
The fullbody softbody can bend ofcourse, but the rigid part of it which attached to character bone will stay rigid.
If there is any better ideas please tell me, thanks.
|
|
|
OBI7 Surface Texture Rendering (Lava) discussion |
Posted by: spikebor - 07-05-2024, 03:40 PM - Forum: Obi Fluid
- Replies (16)
|
 |
Hi, I'm unable to edit the Foam shader, but I have a suggestion, try this if you're interested.
Using 1 Alpha + Life time info as threshold (0-1) will result in dissolve effect
If you can change the foam shader into this, we can have 5x-10x bigger foam, more coverage and dissolve effect over time with lesser foam count.
I've pack a texture that have parabol for main alpha ® + foam alpha circle (G) + foam alpha directional (B) as dissolve step.
The texture is made in Substance Designer, is free to pack into the final Obi package if you want.
https://drive.google.com/file/d/1aLCCs3I...sp=sharing
If you can pass the foam movement direction as UV, can use the B channel, else can use G channel.
|
|
|
|