MotionInput v3.4 System Design
The release of MotionInput V3.4 introduced significant updates, enhancing the system's modularity and flexibility, and leading to various efficiency improvements. As depicted in Figure 1, the MotionInput codebase is organized into two primary directories: lib
and data
.
Library Directory
The lib
directory houses all the backend components essential for operating MotionInput. It includes a central Processor
that receives frames from the camera and coordinates their interaction with the ModeController
. This setup is complemented by several view classes that determine the type of overlay applied to the camera feed. The directory also contains classes that identify landmarks such as head
, body
, and hand
. These landmarks are crucial for defining poses or gestures within the system.
Data Directory
The data
directory is primarily used for storing assets and houses the Config
file, which specifies the system settings and the default mode activated upon starting MotionInput. This directory also includes definitions for JSON-based poses and gestures.

MotionInput v3.4 Migration
The transition to MotionInput version 3.4 brought with it a significant leap forward in functionality and user experience. Despite the multitude of advancements introduced in this update, it significantly altered the core mechanics of the application. This shift rendered many of the functionalities developed for previous versions incompatible, necessitating a meticulous process of adaptation and integration to harness the full potential of the new version. To this end, our team embarked on an extensive project to not only migrate existing features to version 3.4 but also to conceptualize and implement new functionalities in alignment with the feedback gathered from discussions with our clients and prospective users.
Workflow Design
We design a strategic workflow made to optimize the migration process, ensuring a smooth transition to the new version without compromising on quality or functionality. It goes as follows:
The initial phase of our workflow involves an in-depth analysis of both the previous and current versions of MotionInput. This step is crucial in identifying the key features that require migration and understanding the new capabilities offered by version 3.4. Armed with this knowledge, we meticulously plan our migration strategy, prioritizing features based on their importance and complexity.
To accelerate the migration process, we are adopting a parallel working model. Our project team is segmented into specialized units, each tasked with a specific set of features. This approach not only facilitates focus and expertise in handling each feature but also enables us to iterate rapidly. Each feature undergoes rigorous testing and peer review, ensuring that every aspect of the migration meets the required criteria for quality and performance.

MotionInput SDK and DLL
Our system architecture diagram depicts the MotionInput SDK's development and distribution workflow. At the outset, the MotionInput Repository, housing drivers, poses, modes, and modules, forms the system's backbone.
Central to this architecture is the transformation of the MotionInput repository into a Windows-compatible executable, which we aim as the compilation team to optimise. Parallelly, the repository also gives rise to a dynamic link library written in Python.
The distribution of this Python DLL file branches into two key paths: the Python Cross Platform Distribution, catering to Unix-like systems within a Python environment, and the Cross-Language Windows Distribution, leading to a standalone DLL file. This DLL enables the integration of MotionInput across various programming languages, broadening its applicability on Windows platforms.
The culmination of these distribution channels at the diagram's right signifies the SDK's ultimate beneficiaries - the developers. They are equipped with the flexibility to employ the Python package on Mac and Linux systems or leverage the cross-language DLL on Windows, thereby enriching their application development efforts with MotionInput's capabilities.
