VR pseudo-haptic force feedback for fencing
Skill: Pseudo-haptic feedback, VR, Unity
Context: Personal project (2019)
Link: Demonstration video
These dev aims at making the user feel the resistance of a saber they are holding in virtual reality, without dedicated haptic hardware, other than the classical controllers.
To do so, for one saber, I have in fact 2 sabers :
- one is the virtual reality version: it is a "normal" object, affected by the physics engine forces, blocked by other objects, ...
- one is the "IRL" ghost version : it can be grabbed with your VR controllers, but it cannot be blocked by anything (kinematic rigid body, to be more precise). If you really had a saber in your real life hand, it would be located exactly where you see this object. Thanks to my collision matrix settings, those 2 object can't collide together (in fact, the IRL version can just interact with the hand objects, that's all)
Then, "when needed" (ie when the VR saber is blocked, and so, out of sync with the IRL one), I apply forces so that the VR saber tries to join back the IRL one (and retrieve its orientation). I apply these force more or less at the grab position. And while the saber are not merged back, I make the controller vibrate, proportionally to the distance of the 2 saber version. To have a nice movements, for the moment I use an article by Digital Opus (http://digitalopus.ca/site/pd-controllers/) that explain how to have nice force based movements to a given position.
The magic is that our brain is tricked by 3 things :
- while the sabers are out of sync, the vibration is a bit unconfortable: we feel that there is a slight resistance, that our hand is not where it could normally be
- the ghost saber make it acceptable anyway: we "see" our real hand, there is no "where is my hand ??" effect (It works even better as we can see where is the saber "IRL"...even if it does not exists)
- ... while the VR saber is where we would expect in the VR world we are immerged