How can I interact with 3D widget in VR?


3D widget is very useful to build a scene with runtime font, multiple child widgets… But I have problem about interaction with these widgets, in VR.

I’ve found current interaction, like mouse over and mouse click, is based on desktop’s cursor position, I doubt it would work in VR, especially without desktop window, only VR application exist.

Is there any tips? I really hate methods like manually placing collision bodies to make widgets “interactive”.


You are in luck… watch my tutorials. You need 4.13 though: 4.13/4.14 Widget Interaction Component - YouTube

Or you can use Mitch’s UMGInteraction Plugin, which is compatible with 4.11/4.12:

No problem! Don’t forget to mark it Answered!

I am using 4.11 so I just download Mitch’s plugin, it worked!

Really thank you very much, you make my life much easier!

Hi VictorBurgos,

I still have problems.

After “::ShowWindow((::HWND)GEngine->GameViewport->GetWindow()->GetNativeWindow()->GetOSWindowHandle(), false)”, the interaction is far from perfect. Only “pressed” and “released” event is available for button, while “clicked”, “hovered”, “unhovered” never get fired.

I have made some hack and get inputs directly from steam vr plugin, so at least I got “pressed” and “released”. But I still want a perfect interaction with 3D widget if posssible, can you help me?

Does your tutorial fix these problems or any ideas is appreciated!!!

I found a workaround to fix most of problems. There is a ‘bAppIsActive’ in FSlateApplication, after window got hidden, this variable would turn to false and block mouse capturing. Adding a new variable like bHMDIsActive world fix that.

Besides, ‘hover’/‘unhover’ still are not fired. For Mitch’s plugin, I think add another two emulators to call SWidget’s OnMouseEnter/OnMouseLeave world be good, hope that should be good enough for me.

I am not familiar with input event routing. Thanks again for inspiring!