Download

Vr Interaction Tablet/Pad

Hello Everyone, here the goal trying to archive; creating hand tablet/pad and physically touching/interacting with finger(sphere/capsule collider) to the buttons, without gravity user can grab and drag anywhere else (floating in the air while not grabbing)…
i just used default BP_Pickup blueprint turn into BP_Pickup_Bsfpad which is contain static mesh (tablet/pad) and widget (button/s) on it for interaction, without gravity. Here the components:


As i planned, trying to give a tag to BP_Pickup_Bsfpad for triggering pointing hand animation according to this awesome tutorial: UE4.15.1 - VRInteractables - Part 16 FingerPointing setup for Button - YouTube

Tag implented to BP_Motion_Controller here: (Red arrows showing the tag connection)

The problem is whenever i try to approach to button (widget) hand always getting ‘CanGrap’ state because BP_Pickup_Bsfpad(tablet/pad) on top everything, in this case how can i bypass/avoid cangrab/grab states for reaching to button and firing(trigger) pointing finger animation and execute interaction stuff (eg. quit game, turn on/off music etc.) ?

If i can solve the animation state problem, do i need to add another collision into widget(button) for colliding with finger capsule/sphere collider, how can i physically touch a single button ?

I also tried that, widgetinteraction inside BP_MotionController turning on ‘show debug’ and using the trigger button for executing something totally working but there is a 2 issue with that:


first issue: debug shapes showing up with extra black duplicates (as you can see on the first hand pic.)
second issue: MotionController (R) Trigger for Press/Release Pointer key cause losting other ‘open/cangrab/grab/pointing’ states !

Is there is a way to pointing with debug(redbeam)+progressbar, without pressing any button hovering for awhile and executing something ?

If you have anykind of idea would be really really great for me guys, thank you for your time…

Cheers

  1. Add widget component to tablet
  2. Add widget interaction component to index finger.
  3. Disable ‘show debug’ property of the widget interaction component.
  4. Add a thin box collider (0.5 cm or less) attached to widget component and a small sphere collider attached to index finger.
  5. On BeginOverlap event of the index collider make sure it’s overlapping box collider of a tablet actor and call WidgetInteraction component -> ButtonPress(Left Mouse Button) to simulate touch event.

Hand animations. Universal and correct approach is to use a priority system. For each interactive object save required animation and priority index just like you save ‘PointTo’ in tags.
But ‘PointTo’ animation has a priority over ‘CanGrab’ in most cases, so you can simply check a current animation and ignore overlaps with ‘can grab’ components if you’re playing ‘point to’.

Thank you, i will post here when im done…

I have a problem with this.
I realized that UMG simulates the touch of the mouse, and the touch of the mouse is very fast.
If I overlap slowly, nothing happens.
So with the finger I can’t give a slight touch, but I have to quickly penetrate the button of the widget so that it receives the command.
How can I solve this problem?