Different collision behavior in VR mode for attached component to skel mesh

Hello guys,

I’m trying to create an interactive menu attached to my left hand, and be able to push / drag buttons with my right hand.
I’m using the Leap motion device to manage the hands, and i’ve got different collision behavior between “VR preview” and “new editor window”.
I thought at [first][1] i made a bad collision set up, but it seems i’m not the only one to get this issue, it may be a bug.

Here is my set up :

I’ve created myHands class (inherited from LeapRiggedEchoHandActor), and attached a cube to the Left hand as component, and using a parent socket near the wrist. This class is attached to a camera in a basic Character BP.

I’ve changed the collision of the cube and the hands to generate overlaps.

I’ve added debug prints when the events BeginOverlap and EndOverlaps of the cube are called.

Issue

In normal preview, the events are called once by collision, like they should, but when playing in VR mode the events Begin and End are called like every frame.
I’ve made a 45sec video to show the different behavior for the same project.

I’ve added leap event interface, and a leap controller as component in order to call “Optimize for HMD” function, but the doesn’t change anything about this issue.

Did i made something wrong about the collisions ? or forget another optimize for collision under VR ?
I’m using the Ovulus CV1 (if i remember well, issue is present with the DK2 too)

Thanks for your time

Hey Marcassin__,

Can you try this in 4.13, we had a similar bug occuring (UE-33432). The fix for that may have resolved this issue as well.

Hello ,

I’ve tried the same project set up in 4.13 and i’ve got the same issue in VR mode.

For my project, I removed the link between Cube and the left hand ( The collision actor - here a box - is spawned into the world without beeing a child component of my character, no parent socket attachment). In this case the overlaps events work very well.
I believe the overlap issue came in VR mode when the actors which collide are subcomponent of the same actor.. The component attachement to the LeftHand make this issue visible.

I’ve read some old posts in this forum about collisions handling in the Engine, where collision between subcomponents isn’t a fully implemented feature due to perfomance loss.

Am I right ? maybe its’t a bug but an undesired feature. ?

Thanks for the following

Hey Marcassin,

Apologies for the delay, but we have finally gotten this tested. Unfortunately, we are not seeing the same issues that you are with our test project (using Oculus Rift for VR). From what I can tell, they are both set up the same. Would you be willing to migrate your blueprints to a test project and send it to me? There could be something you aren’t showing me that is causing an issue.

If you want, you can PM me a download link on the forums.

Hello EerinaHart,

It seems you didn’t got the issue in 4.12, did you change something in your project between testing in these 2 different engine versions ?
If it’s with a gearVR, you may not using the Leap motion i guess. Is the overlapped component attached to your character ?

The previouse Engine version I used was 4.10.
So I migrated all the assets from 4.10 to 4.13 right away…nothing changed.
The overlapped component attached to the camera component.(of the first person character).

I think it’s definitely vr-related issue,
because It’s working fine in other platforms.

Hey Marcassin,

Apologies for the slow testing on this, but I’ve entered UE-36103.

Hi .
don’t worry, it didn’t block us for the development.
At least I know it wasnt a bad BP scripting in my character.
Thanks a lot for following the issue anyway.

Marcassin

This is also an issue with the vive.

Hey , is it still an issue in 4.15 and above? Why was that ticket marked won’t fix?

Hey muchcharles,

You can track the Bug Report from the link in my answer.

I am also getting this problem, it would be great if the devs would consider fixing this bug.

Hey SlimeQ,

Are you saying this occurs with Leap Motion and a Vive or with the vive motion controllers?

Note: I’ve re-opened UE-36103 for re-evaluation if it’s happening with VR motion controls.

Does “Won’t fix” mean it is permanently dropped, or just put on a queue/backlog?

this is a pretty major issue for me. on vive, 4.15. Only seems to be a real issue on the edges of a phys body

This is a very late post to this bug, but it occurs with Vive motion controls even in 4.25 and 4.26.1. Since it’s still marked as won’t fix, is there an effective workaround for this? More importantly, what’s the root cause of this happening? I don’t have leap motion, but the per-frame overlaps are exactly as described here.

I have the same issue! I really hope they fix this bug!!! It’s very annoying!

I found a work around. I believe the issue has to do with poor parent child relationships, for example my blueprint children of my C++ parent class is experiencing multiple fires on each tick, however overlap events setup with in the blueprint child fire properly, once each time.

So I just set up a pair of Blueprint callable functions, one for begin and one for end, in my C++ file and have the blueprint handle the overlap and immediately call the blueprint callable function to take me back to my C++ code. I hope this helps anyone with a similar issue.

UPDATE This requires more investigation that I will do tomorrow. It appears if you go into the blue print implement the on overlap nodes connect them to a function test it and then delete the function you connected them to but leave the “On overlap nodes” for some odd reason it works properly solely from the code in the parent class. I’m baffled, but I swear that’s all I did and it works now, it fires only once per overlap.

After experimentation, this fix only works for one of my child classes while the other still fires both one after another, whether in blueprint or triggering the C++ code.

I tried doing a work-around with a timer function that used the GetOverlappingActors function for the collider. GetOverlappingActors seems to suffer from the same bug.

As a work-around to UE-36103, I wrote a function that uses a sphere-trace to keep track of when actors enter and leave a space. When actors enter, I call the equivalent of OnComponentBeginOverlap, and when an actor is no longer in the space, I call the equivalent of OnComponentEndOverlap.