UVRF 2.0 - framework that solves locomotion, grabs, world interaction, text and number inputs

UVRF is ‘hand presence’ cross platform template including hands that are properly placed in space (per platform), properly animated, allows interaction with objects including UI elements and locomotion. UVRF is what we use internally at iNFINITE Production, we’ve completed many projects using this framework. Ensuring it’s both production ready and feature rich.

Downloads
Stable version: 2.0
Link: https://www.infinite.cz/downloads/uvrf.zip

Preview version: 2.1
Available on Discord ( http://discord.gg/rnEpcujtNr)

Change log

Features

  • **Animated Hands **supporting both SteamVR Input 2.0 (Index controlers) and Oculus Touch on PC and Quest.

  • **Grabable component **for object interaction with hands.

    • 4 ways to grab an object

      • Relative grab aka grab anywhere

      • Fixed grab where position of object in hand and hand anim is defined

      • Directional grab to move along side one axis, for sliders, levers, doors

      • Rotational grab for rotation alongside axis, for valves, hatches etc.

    • Object interaction using controllers - Thumb action event (for facebutton) and Index action (for trigger)

    • Notifies on grab and release

    • Highlights when an object can be grabbed

  • Locomotion options

    • Free movement with snap or smooth turns

    • Teleportation

    • Disabled

  • Laser Interaction with objects in world using Laser Interact Component

  • UMG Integration

    • UMG widgets can be operated both using index finger and lasers

    • Several prebuilt widgets to address most common use cases

      • Keyboard for text input

      • A text field type button that will spawn keyboard when clicked and despawn when clicked elsewhere

      • A few options to select numbers - animated sliders, dropdown menus or +/- components

      • Buttons

  • Support for interaction using just fingertips (buttons etc.)

Compatibility
Unreal Engine 4.26
SteamVR Input 2.0 (Valve Index controllers etc.)
Oculus Input (Touch for CV1 / S / Quest / Quest 2)

Tutorials

1. Project Setup
2. Grabs and Object Interactions

Documentation

Licence: MIT

I’ve managed to squeeze some time to get this out, including documentation and 2 tutorials to get you started. Shout out to Mr_Squarepeg who went to ask in Machizzle discord if it’s ever coming, making me realize there are still people who want this. Anyway enjoy and if you’d like to support us, please check our upcomming VR game Machizzle. I’m not sure if I’ll be able to support this in the future, as all my attempts to get any basic funding or even support for this project failed, so this might be the final update. But enjoy. Feel free to strip it by any functionality you might like or hacks.

  • NX
3 Likes

Hey guys, first update!

Highlights

The object you’re about to grab can become highlighted, which is useful when there are multiple small objects around and who want to know which one to pick. This is done as post process effect using custom stencil, so you need to have custom depth and stencil enabled, you need to add highlight material to your post process volume. This is also completely optional, if you don’t want this simply set HighlightGrabs bool in HandBP to false.

Oculus Dash support
Oculus Dash and life cycle handling should be fully supported, the hands will completely dissappear and you cannot interact anyhow with the world when Dash is up. If you don’t have Oculus VR plugin enabled, you’re likely to seem compilation errorr, simply delete the problematic code. It seems like I’ll be turning UVRF into a plugin to allow integration with things like gloves, so I’ll wrap those platform specific functions into my own, so you don’t have to worry about platforms at all.

Ingame controller (Touch only)
Also using menu button on Oculus Touch, you can now see the controller model in VR, and see your hand relation to it and grabbed object relation to it. Touch controller model is licensed under Oculus SDK license, so it’s the only part of the demo that’s not CC0. Full text of the license can be found ‘\Content\Framework\Controllers\Touch’.

Changelog 1.1

  • Oculus Dash Support
  • Added ClearGrab, when object can no longer be grabbed
  • Added GrabObject function to HandBP, so object can be grabbed as reaction to some ingame event (like changing objects in hand)
  • Grab now looks for closest object to grab, which is useful when there are multiple small objects around
  • Highlights the object that is about to be grabbed, this is optional
  • Touch controller model added, with permission from Oculus. The model remains under Oculus SDK License (included in Touch controller root).

Download: http://infinite.cz/UVRF/UVRF-Template.zip

Also some time ago a wrote a medium.com article about this > iNFINITE | UVRF Handpresence

Once again I hope you’ll find this useful :slight_smile:

1 Like

We implemented the template into one of our projects. Great template overall. Worked with no issues. Good job!

1 Like

ENiKS,
Thanks to your help in a previous post, I was able to comprehend nearly everything that you have built and I appreciate how much time you have spent on this project!
In celebration I made this demo and recorded this clip:

Hi great work, sucha a nice piece to start making VR experiences i have one problem, i need to activate the teleport in the right hand too, i was searching in the touch controller “Oculus” But if i duplicate the right hand blueprints and choose the inputs for the left its still not working, Any Suggest? Thanks

@ Hi! I love your template, I am trying to use your hands in a side project because I love their transparency effect. However, it seems that trying to use the same hand skeletal mesh as HandBP in my pawn yields a different effect - do you have any idea what might be causing this? Is there some operation performed on HandBP in VRPawn that would effect the material’s opacity like this, and therefore causing it to appear correct only when used in VRPawn? I attached 3 pictures in the order of VRPawn in game, my pawn in game, and what the mesh looks like in the skeletal mesh editor. Notice how in 2/3 I can see my fingers through my hand

I have used the UVRF template in a project using UE 4.22. As it can be seen in the attached picture, when the arrow hits the ground, a big arrow is shown (indicated by a red box in the picture). The collision setting of the ground is set to BlockAll. What’s wrong with this setting and how i can fix it?

Hi I tried that method. It isn’t working on the Quest. Max Influences already = 4. I set the triangle percentage to 0.99 and regenerated LOD.
Please Help.

To @ amazing work. Might wanna consider setting up a Patreon account or a gift option, tonnes of devs would be willing to pay for your contributions.

YES YES YES. Finally solved it -> BP hands now working on Oculus Quest. Its to do with UE4 4.20 and some android bug:
See Forum post of possible solutions: https://answers.unrealengine.com/questions/848288/skeletal-mesh-is-not-visible-in-mobile-preview-aft.html

I first changed UE4 rendering to ES2 Preview (Some say 3.1 will solve all skeletal mesh problems).
Configured LowPolyHand as shown in image.

Apparently in HandBP on Even BeginPlay, if on Android LowPolyHand is used.

Make sure as well in HandBP skeletal component properties mesh is visible or not hidden in game.

@ I did so and it still doesnt work :frowning: I can see the blue teleport line but I dont get an arrow and still can´t teleport…here is a screenshot of the bp

Links for download are dead?

as this thread seems to have lost majority of it’s content, i’ve made a new one

Very thanks EnNiKs.

Hi, smoeone have link with UE project ?