cancel
Showing results for 
Search instead for 
Did you mean: 

Hand grab interaction fails if OVRCameraRig is child of high speed moving object

DeveloperXenia
Explorer

Hi all,

I'm facing an unexpected scenario while using the grab feature provided by the Meta Interaction SDK.
It looks like that if the OVRCameraRig object (with OVRHands and/or OVRControllerHands properly configured with HandGrabInteractors) is set as child of a "moving object" (together with the objects designed to be grabbed), depending on the speed of this object the grab actions fail.

The scenario I'm working on is a train cabin moving along binaries designed as a spline path, with the VR user/player (represented by the OVRCameraRig object) parented to this cabin, since it must be inside the moving train. Inside the cabin I have a lever that must be grabbed to modify the speed of the train.
At slow speeds the lever can be grabbed without problems, while increasing a little bit the speed, the lever can't be grabbed anymore!

I tested it multiple times, trying to understand the root cause of the failure. I guess it's something related to the frequency of checks for the hands vs the lever intersections/collisions made by the Meta scripts.
However I couldn't find any solution.

Is that something I'm missing in the documentation? Maybe some script property to be set or fine tuned?

NOTE: I don't think it would be acceptable, in a 3D application, to invert the scenario where the train is still and the whole environment is moving towards it.... Of course in this case both the objects to grab and the "player" would be still and the grabbing action should work like a charm. But I still believe it is an ugly workaround.

Is someone having any clue on how to fix this "misbehaviour"?
Thanks in advance!

2 REPLIES 2

Big_Flex
Expert Protege

Hi @DeveloperXenia, thanks for posting this! I've checked with one of the engineers on the Interaction SDK team (I maintain the SDK's docs), and he said this:

Thanks for bringing this up, certainly there seems to be a problem when checking if the collider is intersecting with the hand trigger when moving at high speeds.
While you wait for the official fix, here are some ideas to patch the issue:
  • Try making your colliders bigger when moving.
  • In v63, it is not mandatory to reference the (optional) grip and pinch colliders in the HandGrab Interactor. If you don't need to distinguish between these two grab modes, do not reference these optional Sphere colliders there (but keep them in the rig).
  • If you are importing ISDK as a local package and can modify the code, in HandGrabInteractor.cs , replace the call to OverlapsSphere with Physics.ComputePenetration(sphere, sphere.transform.position, sphere.transform.rotation, collider, collider.transform.position, collider.transform.rotation, out _, out _)

Hi @Big_Flex, thank you for the reply!

At the moment I'm working on other projects and I had to temporarily set aside the Meta Quest SDK based development. Anyway I'll give a try to your suggestions as soon as possible, after upgrading the Interaction SDK to ver. 63, and come back to you!