Git Product home page Git Product logo

questhands's Introduction

QuestHands

An Unreal Engine 4 plugin for the new Oculus Quest hands tracking. To tied us over till Oculus's official release.

This plugin version requires Epics Unreal Release 4.25 which includes Oculus SDK version 12 required for hands tracking.

For other versions of the plugin see the branches of this repository.

Implementation Details

  • Full hand tracking from API
  • Hand bones setup
  • Hand mesh deforming using bone positions
  • Hand collision capsules

Example Pawn

There is an example pawn setup with a number of features consistent with those found on the Oculus Dashboard hands such as:

  • Interaction laser pointers
  • Pinch cone markers with color and scaling based on pinch
  • Widget Interaction Components
  • Color changes based on System state
  • Outlined hands It also contains an example of using your own PoseableMeshComponent. The pawn can be found in the plugins content directory and is called BP_QuestHandsPawn

Usage

Your projects Engine ini should contain a section called [/Script/AndroidRuntimeSettings.AndroidRuntimeSettings] with at least two additions. Here is an example:

[/Script/AndroidRuntimeSettings.AndroidRuntimeSettings]
+PackageForOculusMobile=Quest
bSupportQuestHandsTracking=True

Note bSupportQuestHandsTracking bool. If the QuestHands plugin is enabled this is true by default. Setting it to false will disable the important android manifest options which lets the app have hands tracking.

If you want a configuration which works well for the Quest you can use this projects configuration as a starting point.

The plugin contains a function library for querying the Oculus hand tracking API directly OR you can use the supplied QuestHands component to do all the work.

The component is called QuestHandsComponent and just has to be assigned to your pawn to function.

By default it will create the PoseableMeshComponents for the hands and deform them and move them to coincide with the hand tracking data. If you would like to use custom hand meshes you can do so by either choosing different meshes in the mesh chooser under the QuestHandsComponent details panel OR adding two PoseableMeshComponent components parented to the QuestHandsComponent, giving them names and assigning those names in the QuestHandsComponent details panel. With the latter option you can control what is parented to the hands which can be useful for adding particle FX etc. The QuestHandsComponent will only look for already placed PoseableMeshComponents if the bool CreateHandMeshComponents is set to false.

For an example of a basic implementation into a pawn actor check out the example pawn blueprint under the plugins content directory called BP_QuestHandsPawn

To implement the plugin into your own project copy the folder QuestHands from this repos Plugins directory to your own project and activate the plugin.

Alt text

Future Enhancements

  • Integrate the tracking hand bone positions as a blueprint animation graph node so it can be part of the animation composition. This will open the door to add extra additive enhancements such as finger IK which so far in the Unity projects has looked very promising.

License

MIT

questhands's People

Contributors

rfsheffer avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.