Project background

UCL (University College London) MotionInput is one of the world’s leading software packages for touchless computing, first launched in September 2020. From its inception it provided an intuitive way to control the mouse of a computer purely by the detection of hand movement and the activation of different actions through broad movements such as walking. These two functionalities are still at the core of the software but since then has expanded massively over the last few years.

Modules such as MediaPipe, Dlib, OpenVino and Vosk have been used extensively to grow the functionality of MotionInput and give rise to individual Hand, full Body, Eyes and Head modules that can work in tangent with each other. PsuedoVR is the name given to the combination of different MotionInput modules that are used in conjunction with each other including other functionalities such as on-screen buttons and voice commands.

This is currently the fourth year of MotionInput with Version 3.2, a more incremental upgrade of the software rather than a massive overhaul over previous years. However, the work done this year will justify a completely updated version of MotionInput for the next year given the extra functionalities developed by this team as well as others on various aspects. Our team’s stakeholders are Prof Dean Mohamedally, Dr Atia Rafiq, Prof Phillippa Chick (Intel), Prof Costas Stylianou (Intel), Lee Stott (Microsoft), John McNamara (IBM).

Client Requirements

Our initial prompts and communication with our clients near the beginning of the project led us to some main broad objectives:

  • Implement the essential controls for each game using Pseudo-VR (enough to play the tutorial or first activity in game)
  • Provide two explicit modes for each game for standing play and sitting play to be switched by the user if desired.
  • Use the initial MotionInput gesture recorder that records body movement over 5 seconds to create controls that would require gestures.
  • Create a Microsoft Foundation Class (MFC) desktop application to be launched onto the Microsoft Store that would be used to control the settings and configuration of our MotionInput application

Project Ananlysis

Since our project solely involved using the MotionInput API, we needed to have a close look at the codebase to see what modules would be the most appropriate for us to use. In that process we found several obstacles that would need to be tackled to effectively implement our solutions

Obstacles found regarding gesture recording/detection:

  • The current gesture recorder implemented in the current MotionInput repository is highly flawed. It was implemented on the basis that gestures would be recorded over five seconds which requires a large amount of data to be processed causing the feature to be extremely slow.
  • Another issue is that the gesture detector (using the data from the gesture recorder) was designed to be extremely rigid so that for a user to perform the action their movements would have to be the same as the movements that were recorded. This causes successful detection percentage to be exceptionally low.
  • As a result of the previous point, gesture detection when done correctly would only work for the user that recorded the gesture as the data points would be mapped specific to them and would not work for any other user due to differing body types.
  • The current gesture recorder is full body only which requires a large amount of data but also limits the utility for users.

Obstacles found regarding other issues:

  • Making modes (for specific games) is extremely difficult, new features must be added to many different modules in many separate places in both the code and in data files for functionality to work properly. This makes the system unextendible and will be difficult to design any front end to make new modes if that functionality is required.
  • In 3D games where hand detection is used to move the cursor and hence the aim in the game, there is a limit to how far the hand can be moved which hence limits the range of aim in the game. It is unlikely for this method of changing the view in games will aid in making gameplay as seamless as possible.
  • There is a severe lack of documentation for the entire MotionInput codebase and therefore makes it extremely difficult for us to extend it and utilise the modules that exist in the API.

Final Requirements

Throughout development, evaluating the state of the MotionInput API and with discussion with our clients we came to a list of final requirements and deliverables for out project which are:

  • Design and implement an improved system for locomotion in games, one that is highly configurable and customizable to allow users to tailor their experience to their needs.
  • Continue to implement individual game modes for a variety of genres of games for both standing AND sitting configurations.
  • Design and build a static pose recorder that would be able to record static poses made by the body to be used as poses in MotionInput.
  • Design and implement a static pose detector that is implemented into MotionInput to detect recorded poses in real time.
  • Design and build a new dynamic gesture recorder that improves over the current MotionInput gesture recorder in both efficiency and accuracy.
  • Design and implement a dynamic gesture recorder that is implemented into MotionInput to detect recorded gestures in real time.
  • Unify pose and gesture data in one data format.
  • Create one unified MFC to adjust the settings for MotionInput and to launch it.

MoSCoW Requirements List

    • Use the Hand Modules to create a sub-system that effectively handles both movement and aiming in game
    • Distinct customized feature profiles for each game
    • Two profiles for each game for both standing and sitting
    • A full body gesture recorder that records movement over time
    • One MFC app launched to the Microsoft Store to launch MotionInput and configure settings
    • A uniform format for gesture data that would be used by future developers of MotionInput
    • Overlay on top of games
    • Utilize multiple modules concurrently to make up modes
    • Have clear documentation on how to continue using the modules we build
    • Ability to extend for other modules
    • Adaptability for most PC games
    • Ability to record gestures from pre-recoded videos
    • Ability to record gestures live
    • Allow users to use multiple gestures at once in game modes
    • Clear UI on the user side
    • Clear instructions on how to use the system for the user
    • Ease of experience for users to configure the system
    • Ease of experience for users to customize game profiles and controls
    • Optimized detection times for gestures
    • Require nothing more than a low-cost webcam and PC
    • Visual feedback on which controls are being activated
    • Allow the user to choose the mode of movement and aiming from a selection
    • Generic gamepad moves for retro controllers
    • Customizability for default game modes
    • A non full body gesture recorder
    • A static pose recorder
    • Automatically load recorded gestures into game profiles
    • Ability to play in multiplayer
    • N/A