Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
XPBD implementation / haptics
#1
Hi,

I just bought the Obi Softbody and started to play with it. It was a more extensive library that I expected, it looks well done at a first glance.

I want to try to use this package with haptic devices. I read another thread in this forum about haptics, where it is mentioned that the collision data can be subscribed to, like the depentration impulse, and friction impulses. This is mentioned also in the online manual. It looks good so far.

What I'm trying to find out now are some details about the implementation and how close it is to the XPBD original paper (Muller, Macklin ...). More specifically, I wonder if the mentioned "collision impulses" are in Newton-seconds or in Newtons, or even something non-physical?

Thanks,

DonFre
Reply
#2
(24-06-2021, 07:24 PM)donfre Wrote: What I'm trying to find out now are some details about the implementation and how close it is to the XPBD original paper (Muller, Macklin ...). More specifically, I wonder if the mentioned "collision impulses" are in Newton-seconds or in Newtons, or even something non-physical?

Hi,

Obi is a full XPBD implementation. In our webpage you can see a comprehensive list of all research articles implemented by Obi:

http://obi.virtualmethodstudio.com/references.html


The XPBD formulation for contact constraints simplifies to regular PBD though, as contacts are non-compliant (meaning they are perfectly stiff). All quantities in Obi are expressed using SI units: distances in meters, masses in kilograms, forces in Newtons, time in seconds, etc.

The normal impulse is expressed as a lagrange multiplier. Frictional impulses are regular impulses though. To get both in the same units, you need to multiply tangent and bitangent by the timestep size (or, divide the normal by the timestep size).

Impulse != force.

Impulse = Force x Time. To convert an impulse to a force you need to divide by the time delta.

Similarly, a lagrange multiplier (also known as  "lambda"):
Lambda = Impulse x Time.

So,
Lambda = Force x Time x Time.

To convert a lagrange multiplier to a force, you divide by time squared.
Force = Lambda / (Time x Time).

Let me know if I can be of further help.

Kind regards,
Reply
#3
(25-06-2021, 08:10 AM)josemendez Wrote: Hi,

Obi is a full XPBD implementation. In our webpage you can see a comprehensive list of all research articles implemented by Obi:

http://obi.virtualmethodstudio.com/references.html


The XPBD formulation for contact constraints simplifies to regular PBD though, as contacts are non-compliant (meaning they are perfectly stiff). All quantities in Obi are expressed using SI units: distances in meters, masses in kilograms, forces in Newtons, time in seconds, etc.

The normal impulse is expressed as a lagrange multiplier. Frictional impulses are regular impulses though. To get both in the same units, you need to multiply tangent and bitangent by the timestep size (or, divide the normal by the timestep size).

Impulse != force.

Impulse = Force x Time. To convert an impulse to a force you need to divide by the time delta.

Similarly, a lagrange multiplier (also known as  "lambda"):
Lambda = Impulse x Time.

So,
Lambda = Force x Time x Time.

To convert a lagrange multiplier to a force, you divide by time squared.
Force = Lambda / (Time x Time).

Let me know if I can be of further help.

Kind regards,

Thank you for your comprehensive answers, Jose! They answer all questions I have for the moment, and the implementation is made in the way I was hoping for. This should be useful for the haptics implementation.

Great, thanks!

Best Regards,

DonFre
Reply