Oculus showcase of hand tracking based interactions in Unreal.


Hand Gameplay Showcase

This project contains reusable components based on the most robust hand tracking mechanics from First Steps with Hand Tracking and Tiny Castles.

You can try the showcase for yourself on Quest here.

This codebase is available both as a reference and as a template for multiplayer VR games. All code and assets are under the license found here unless otherwise specified.

See the CONTRIBUTING file for how to help out.

How to Use

To try the showcase, simply load the project in the Unreal Editor, build, and launch!

To integrate these features into your own project, install the OculusHandTools plugin into your project. The easiest way to do so is to download the latest release of OculusHandTools.zip and extract it into your project's Plugins folder.

You can find a detailed breakdown of how the mechanics are implemented here. In addition to the featured mechanics, the OculusHandTools plugin has several useful C++ modules:


Teleportation A simple movement mechanic using pose recognition from the Hand Pose Showcase.
Grabbing A system for recognizing natural grab gestures, attaching the object to your hand, and overriding the pose of your rendered hand for visual feedback.
Throwing                                                  This component uses the hand’s historical data to determine the velocity of the thrown object.
Button Pushing A reliable digital interaction. (Get it, digital? It’s on or off, but also your pointer finger is a digit. I’ll let myself out…)
Punching Punching is a fulfilling interaction with your hands, despite the fast movement being a cause of tracking loss.
Hand Movement Filtering Stabilizes the hand and finger movement while tracking is low quality or lost. This significantly improves the feel of using your hands, particularly in poor tracking situations like while punching. You can read more about the implementation of this component here.
Two-handed Aiming Aiming is a reliable, useful, and fulfilling hand interaction when done with both hands.
Example Hands for Tutorials Effectively illustrate to users the poses your app expects.
  • IsHandTrackingEnabled called and crashes dedicated servers.

    IsHandTrackingEnabled called and crashes dedicated servers.

    Dedicated servers crashes when a VR player joins.

    Visual studio debugger shows that the bug is from FOculusHandTracking::IsHandTrackingEnabled function.

    In another project, I've fixed the crash by returning false before any null errors can be made. Though this fix would probably result in handtracking not working.

    To get the debugger to work, you need to go into project files and enable 'include debug files', and then build the dedicated server build of the game. You then attach the process of the built dedicated server after you've launched it.

    opened by MichaelBurgess777 4
  • [UE4.27.2] Getting Crashed on editor VR mode.

    [UE4.27.2] Getting Crashed on editor VR mode.

    • Any suggestion to resolve this issue?

    I've cleaned the project and removed IIntermediate folders but nothings work.

    Assertion failed: InOutSizeX != 0 && InOutSizeY != 0 [File:D:/Build/++UE4/Sync/Engine/Plugins/Runtime/Oculus/OculusVR/Source/OculusHMD/Private/OculusHMD.cpp] [Line: 1467]
    opened by westside 3
  • Required engine version?

    Required engine version?

    Maybe I missed it in the readme, but is there a specific version of the engine this project works with? I've tried opening it with 4.27 (both the default 4.27 as well as the Oculus branch) and 4.26, but the .uasset files weren't being recognized by the engine. If I just import the plugin to a project, the blueprints seem to show up fine. Thanks!

    opened by emretanirgan 3
  • Could you clarify the build configuration?

    Could you clarify the build configuration?


    I'm looking to build this against the Oculus unreal fork and wanted to double check the following steps:

    1. Set HandGameplay as the start-up project and Development Editor as the configuration.
    2. Hit F5 to build and debug the project
    • Are you saying here that I should build Development Editor|x64? Will that actually work? Across Oculus Link? I think that would be awesome but as far as I know the Hand APIs won't work using the link. You do go on in the next step to use F5 to debug so...
    • Or should this be Development | Android?
    • Or does Development Editor | Android?

    Thanks, Sean

    opened by spayne 2
  • Network Replication

    Network Replication

    Hi, I'm testing the demo and I noticed that it's not networked, is this by design? If yes, what do you recommend as the best approach to make it fully networked?


    opened by WalidCHEKKOURI 1
  • Unable to load the assets

    Unable to load the assets

    It appears that the project requires specific UE version, since both binary 4.27.2 nor 4.27.1 Oculus Fork seems to NOT load the assets. Asset files are visible with windows explorer and are there, this happens when you try to open a project that's been build with higher version of the engine, with lower version (you could however open the files build with lower ver with higher ver of the engine). Please advise as to which engine version this should work with. Plugin seems to load and compile fine, so no idea what's causing map and all other blueprints not to load with the project.

    opened by VirtualLilies 1
  • How to get Pose Strings

    How to get Pose Strings

    In all of the documentation for this project "Pose Strings" are referenced. For example when you want to grab an object, it has the pose of the hand in the grab state in a "Pose String". But how can you create your own? And why not use pose assets (Unreal Animation Assets) for this?

    opened by mediaruebe 1
Unreal Engine Plugin to wrap Nuitrack SDK ( skeleton tracking solution by 3DiVi )

Nuitrack for Unreal Engine Unreal Engine plugin to bridge Nuitrack. Nuitrack is a middleware to provide 3d skeleton tracking solution using a depth se

Ayumu Nagamatsu 11 Nov 10, 2022
Full source code for WarriOrb, a Dark-Souls like action platformer - using Unreal Engine 4

WarriOrb source code WarriOrb is a hardcore action platformer where you play as a demon who is trapped in an unlikely body. The game mixes the difficu

Not Yet 243 Nov 25, 2022
Design-agnostic node editor for scripting game’s flow in Unreal Engine

Flow plug-in for Unreal Engine provides a graph editor tailored for scripting flow of events in virtual worlds. It's based on a decade of experie

Moth Cocoon 532 Nov 25, 2022
Niagara UI Renderer | Free Plugin for Unreal Engine 4

Niagara UI Renderer | Free Plugin for Unreal Engine 4 Niagara UI Plugin adds Niagara Particle System Widget that allows you to render Niagara particle

null 154 Nov 29, 2022
Third-person survival game for Unreal Engine 4 made entirely in C++.

Third-person survival game for Unreal Engine 4 made entirely in C++. Originally built as a 6 section tutorial series, now available as open-source C++ sample project.

Tom Looman 2.7k Nov 29, 2022
RenderStream plugin for Unreal Engine

This project relies on http://disguise.one software to function. For the plugin setup process - please see https://help.disguise.one/Content/Configuri

disguise 39 Nov 21, 2022
Simple CSV localization system for Unreal Engine 4

BYG Localization We wanted to support fan localization for Industries of Titan and found that Unreal's built-in localization system was not exactly wh

Brace Yourself Games 55 Nov 24, 2022
Edycja PianoFall zrobiona na Unreal Engine

PianoFall - Unreal Engine Edition Edycja PianoFall zrobiona na Unreal Engine (mój pierwszy projekt w UE) Obsługa Po uruchomieniu programu i wciśnięciu

Nadwey 4 Jun 17, 2021
Lambda support for Unreal Engine dynamic delegates

DynamicLambda Lambda support for Unreal Engine dynamic delegates This is experimental feature. Now only parametless lambdas are supported To see more

Andrew Derkach 28 Nov 29, 2022
Dialogue scripting language for Unreal Engine

Supertalk Welcome to Supertalk! This is a simple dialogue scripting language for Unreal Engine created due to frustration with visual dialogue tree wo

Sam Bloomberg 41 Nov 18, 2022
An Unreal Engine 4 Dungeon Generator

DungeonGenerator A (hopefully) handy Unreal Engine 4 Dungeon Generator Read the full docs here: https://github.com/orfeasel/DungeonGenerator/blob/main

Orfeas Eleftheriou 66 Nov 4, 2022
Procedural Mesh Modeling Toolkit for Unreal Engine Artists

OpenLand Mesh Procedural Mesh Modeling Toolkit for Unreal Engine Artists. Installation Get it via the marketplace ??️ For non-commercial projects, you

GDi4K 26 Nov 19, 2022
Plugin to generate landscapes and oceans from the Unreal editor shader graph. Supports collisions, assets spawning, landscape layers. UE 4.26 / 4.27 / 5.0

Procedural Landscapes and Oceans as a plugin for unreal engine 4.26/4.27/5.0 using Editor Shader Graph Using the Editor Shader Graph, creating landsca

Maxime Dupart 0 Nov 19, 2022
Creating Unreal Engine infinite landscapes/oceans using the editor shader graph and rendering them using Geometry ClipMap. It also allows to spawn mesh on landscape surface. UE5 required

Procedural Landscapes and Oceans in Unreal Engine 5 using Editor Shader Graph Latest version of this project is available as a plugin for UE 4.26+ on

Maxime Dupart 10 Oct 4, 2021
Unreal Engine 4 plugin for SteamVR passthrough camera support

SteamVR Passthrough Plugin This Unreal Engine 4 plugin adds SteamVR passthrough camera support using the OpenVR TrackedCamera API. Example project: ht

null 9 Nov 26, 2022
HLSL Material for Unreal Engine

HLSL Material for Unreal Engine Ever wanted to write complex material functions directly in HLSL? Now you can! Unreal Engine 4.26, 4.27 and 5.0 are su

null 412 Nov 21, 2022
Building Escape is a simple room escape game made with Unreal Engine 4.27 and C++.

Building-Escape Building Escape is a simple room escape game made with Unreal Engine and C++. The main purpose of the game is to find a way to escape

Christine Coomans 2 Dec 13, 2021
An Unreal Engine 4 SDK generator using SdkGenny

UE4Genny UE4Genny is an SDK generator for Unreal Engine 4 games. It aims to provide a functional SDK that requires little to no editing after generati

null 90 Nov 21, 2022
Unreal Engine OpenDRIVE plugin

Unreal Engine OpenDRIVE plugin This plugin allows you to manipulate your OpenDRIVE road network in Unreal Engine. It is built around esmini's RoadMana

Bertrand Richard 63 Nov 26, 2022