Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Soft Body with Haptics Feedback
#1
Hi,

I am using two Touch™ (formerly Geomagic Touch / Phantom Omni) haptic devices, and installed this Unity plugin from 3D Systems:
https://assetstore.unity.com/packages/tools/integration/3d-systems-openhaptics-unity-plugin-134024

I also bought Obi Softbody asset (ver 5.3) on Unity but realized that it is a bit more complex than I expected.

My ultimate goal: use the haptic device in Unity to touch a human avatar with soft skin - I should feel continuous force feedback when the collision occurs, visually the soft skin should deform (elastically) a bit. It is something like I press on a jelly and the jelly deforms.

My question:
Is it possible to do so? I am using Unity 2019.3.13f1
Theoretically, I could attach any object to my haptic device (e.g., a rigid sphere), but not sure if it is better to use rigid bodies or Obi soft bodies to attack an Obi soft body in order to get more stable force feedback and realistic visual feedback.

Any suggestions so that I could quickly figure out a minimally viable demo would be greatly appreciated.

Best,
phantom
Reply
#2
Hi phantom,

Keep in mind that Obi is a physics engine of its own (no way to get the required performance out of a traditional rigidbody engine like Unity's), that just happens to allow interaction with other engines via impulse exchange. So you will need to feed the haptic input to your device yourself.

I'm not a expert in haptic feedback by any means (In fact I have no experience at all), but assuming your device only needs some kind of "force" or "resistance" input from the software to create the haptic effects, you can easily get this from Obi: Subscribe to solver.OnCollision to retrieve the list of contacts generated each frame. Then, each contact provides three orthonormal axes, as well as three impulse magnitudes: normal (depenetration), tangent and bitangent (friction). You should be able to feed these to your device. See the manual for details: http://obi.virtualmethodstudio.com/tutor...sions.html

I'd use a regular rigidbody to touch the softbody, as softbody-softbody interaction is subject to worse tunneling due to particle sizes.

cheers!
Reply
#3
(19-05-2020, 08:27 AM)josemendez Wrote: Hi phantom,

Keep in mind that Obi is a physics engine of its own (no way to get the required performance out of a traditional rigidbody engine like Unity's), that just happens to allow interaction with other engines via impulse exchange. So you will need to feed the haptic input to your device yourself.

I'm not a expert in haptic feedback by any means (In fact I have no experience at all), but assuming your device only needs some kind of "force" or "resistance" input from the software to create the haptic effects, you can easily get this from Obi: Subscribe to solver.OnCollision to retrieve the list of contacts generated each frame. Then, each contact provides three orthonormal axes, as well as three impulse magnitudes: normal (depenetration), tangent and bitangent (friction). You should be able to feed these to your device. See the manual for details: http://obi.virtualmethodstudio.com/tutor...sions.html

I'd use a regular rigidbody to touch the softbody, as softbody-softbody interaction is subject to worse tunneling due to particle sizes.

cheers!

Hello Jose,

Thanks for the prompt reply, I managed to use my haptics devices to teleoperate a rigid body to touch a soft body (rubber ball) and it looks well.
Since the rigid body needs to be a child of the Obi solver, I wrote a simple script to make its motion follow the haptics device's.

Thanks again,
phantom
Reply