Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Softbody-based Crawling
#1
Hi! 

As shown in the figure below, I try to use two soft bodies to grab a rigid body. For example, a claw machine.I expect the grabbing process to be achieved through friction.

I set the same collision material for both the claw soft body and the rigid body, with both dynamic and static friction set to 1.
In my attempt, I was able to grab the rigid body, but it soon fell slowly. In the real world, I would think that the friction is not enough. But I have set the friction to 1 in the collision material, and I expect that there should be no tangential movement of the object.
For reference I have attached my Obi Solver component configuration, although I have tried different things with it and I don't think the problem seems to be there.
Is it possible to achieve my needs based on ObiSoftbody? If it is feasible, I am very much looking forward to getting suggestions from developers.
Many thanks!

Please see the attachment for detailed configuration.
Thanks!


Attached Files Thumbnail(s)
                   
Reply
#2
Hi,

It's not possible to rely solely on friction to grab objects this way. The reason is that friction calculations are a simplified model (Coulomb with a 4-sided friction cone) that does not take into account contact manifold area, does not behave equally in all directions, does not consider torsional friction, and overall prioritizes performance over correctness.

Furthermore both Unity's rigidbody engine an Obi are iterative solvers, which do not guarantee convergence. So it's not possible to do this using rigidbodies either.

To my knowledge, there's no game-ready/realtime physics engine that can ensure perfect grabbing behavior based solely on contact friction. Grabbing objects in games typically involves some kind of specialized joint or constraint that latches the object to the manipulator grabbing it. Even simple cases like a character standing on a moving platform are generally achieved by parenting transforms, instead of relying on friction.

In Obi's case, you can use pin constraints or dynamic attachments + collision callbacks to achieve something similar.

kind regards
Reply
#3
(27-06-2024, 11:23 AM)josemendez Wrote: Hi,

It's not possible to rely solely on friction to grab objects this way. The reason is that friction calculations are a simplified model (Coulomb with a 4-sided friction cone) that does not take into account contact manifold area, does not behave equally in all directions, does not consider torsional friction, and overall prioritizes performance over correctness.

Furthermore both Unity's rigidbody engine an Obi are iterative solvers, which do not guarantee convergence. So it's not possible to do this using rigidbodies either.

To my knowledge, there's no game-ready/realtime physics engine that can ensure perfect grabbing behavior based solely on contact friction. Grabbing objects in games typically involves some kind of specialized joint or constraint that latches the object to the manipulator grabbing it. Even simple cases like a character standing on a moving platform are generally achieved by parenting transforms, instead of relying on friction.

In Obi's case, you can use pin constraints or dynamic attachments + collision callbacks to achieve something similar.

kind regards

Thanks!
By the way, I saw a component called Obi Stitcher, and there is also a constraint called Stitcher in Ik Solver.
But I didn't see this concept in the documentation. Is it deprecated?
Reply
#4
(27-06-2024, 10:40 AM)wenhao_zheng Wrote: Hi! 

As shown in the figure below, I try to use two soft bodies to grab a rigid body. For example, a claw machine.I expect the grabbing process to be achieved through friction.

I set the same collision material for both the claw soft body and the rigid body, with both dynamic and static friction set to 1.
In my attempt, I was able to grab the rigid body, but it soon fell slowly. In the real world, I would think that the friction is not enough. But I have set the friction to 1 in the collision material, and I expect that there should be no tangential movement of the object.
For reference I have attached my Obi Solver component configuration, although I have tried different things with it and I don't think the problem seems to be there.
Is it possible to achieve my needs based on ObiSoftbody? If it is feasible, I am very much looking forward to getting suggestions from developers.
Many thanks!

Please see the attachment for detailed configuration.
Thanks!

I have another question about the size of the soft body.

In this demo, I used a 0.5-high cylinder as the soft body, which is similar to 50cm in the Unity scene. At this scale, I set the volume resolution to 8 in the blueprint to have appropriate simulation performance and performance burden.

But in my final requirement, I need a 0.05-high cylinder as the soft body, which is 5cm. I did a test. For a 0.05-high cylinder, using a volume resolution of 8 in the blueprint will not generate any particles inside the cylinder. The resolution needs to be set to 32 to fill the cylinder. But such a high resolution will bring a huge performance burden to the scene.

So I would like to ask, for small-sized soft bodies, are there any recommended solutions or precautions in practice?   Sonrisa
Reply