ReFlex Logo
ReFlex (Title)
Documentation
Navigation

Requirements Analysis

Table of Contents

  1. Functional Requirements
  2. Development Tools
  3. Non-Functional Requirements

The ReFlex framework evolved through the conception, implementation, and demonstration of Elastic Display case studies. Each application exposed requirements that existing tools did not yet meet. The tools were extended for that scenario, followed by a consolidation step: reusable functionality was integrated into the main framework, more specific mechanisms were generalized, and application-specific components remained outside the core.

This process distinguishes three kinds of contribution:

The following figure traces these contributions across the case studies and subsequent research projects. It records the origin of requirements and consolidation decisions rather than the complete feature set of each prototype.

Requirements derived from the case studies, showing integrated and excluded functionality, non-functional requirements, and developer tools. Blue entries indicate functionality integrated into the framework; grey entries indicate concepts excluded from the core; green entries represent non-functional requirements; orange entries identify development tools.

⬆ back to top

Functional Requirements

The progression began with direct use of surface-wide depth data, added discrete contact detection, and eventually separated tracking from visualization through a distributed architecture. The resulting framework needed to expose both continuous surface representations and individual interactions, with configuration and communication independent of a particular application technology.

Case study Functional contribution
DepthTouch + Calculate vector field from surface deformation
+ Three-point calibration to map sensor coordinates to screen coordinates

- physics simulation (application-specific)
FlexiWall + access to depth image
+ transform depth image coordinates between sensor and projection spaces
+ adjust depth values interaction range

- Pixel-based layer blending was not included in the framework
- Layer data management (application-specific)
DEEP + Processing of point cloud derived from depth image
+ Multi-touch detection without persistent Touch IDs
+ Definition of resting plane and deformation thresholds
+ Sensor abstraction: Switch between Kinect 1 and 2

- Physics simulation (application-specific)
- Zoomable UI
- Extended calibration (no siginicant improvement, too complicated)
Interactive Animations + Single-touch detection as generic functionality
+ Calibration based on matching projected image
+ Sensor abstraction: Intel RealSense support
+ Automatic sensor and application startup

- Navigation gestures (application-specific)
- Animation control (no general approach)
Zoomable Product Browser + Multi-touch with persistent IDs

- Gesture recognition (application-specific)
Glyphboard + Definition of common format for streaming interaction data
+ Communication via WebSockets

- Gesture recognition (application-specific)
DeepZoom + Point-cloud configuration (thresholds, distances, limits)
+ Point-cloud filtering (smoothing, outliers)
DisPlay + Viewport coordinate mapping
+ user interface for server configuration (point cloud configuration, filtering, interaction processing)
+ Persisting server settings and parameterizes server on startup by client applications
Construction Progress Visualization No new core functions integrated into framework
Layers + Sensor abstraction: Azure Kinect support
+ Web-based configuration UI
+ configuration and pipeline control via REST-interface
+ Interaction streaming via WebSockets
+ Streaming surface data (point cloud, vector field) via SignalR
+ Concurrent interaction and depth-image streams

- Interactive lenses
Further studies, prototypes, and student projects + Interfaces with other frameworks (TUIO, gRPC)
+ Interaction logging (e.g. for user studies)
+ Surface measurements (for reproducction of exact surface streching behaviour )

- External actuator control (TactJam)

The main architectural consequence was a clear division of responsibilities: the framework captures and processes deformation and exposes the resulting data and configuration interfaces; applications interpret these inputs and derive how they affect content, simulated forces, gestures, and interface state. Persistent identifiers support gestures that require the history of individual contacts.

⬆ back to top

Development Tools

The tools evolved alongside the input representations and architecture. A synthetic depth image suited FlexiWall’s shader-based rendering, but was insufficient for applications expecting extracted contact data. Later tools therefore simulated contacts or a point cloud and supported recording and playback.

Case Study Tool Description
FlexiWall Depth-image emulator: Develop and prepare layered content without requiring the physical installation.
DeepZoom Touch-point simulator: Test application behaviour using synthetic interaction points independently of the tracking hardware.
DisPlay Unreal Engine plugin: Integrate surface interactions with a game-engine client and support reuse across technologies.
Layers Point-cloud emulator: Generate synthetic surface data
Recording/playback: replay captured data for development, testing, and repeatable investigation.
Further studies and student projects Application templates for different frontend technologies (HTML/JS, Angular, Vue.js, React, WPF, .NET MAUI, Unity, Unreal Engine): Reduce the effort needed to create clients
Unity Plugin: Integrate external technologies
Developer documentation: Facilitating Open Source contributions
Class, type, and component libraries: Maintainability, ensuring consistent behaviour, look and feel

Feedback from these case studies student projects and also established requirements for platform-independent development, a repository structure that supports collaboration, continuous integration with tests, and the preservation of study-specific builds. The student-project experiences illustrate how missing templates, incomplete documentation, emulator limitations, and integration problems informed subsequent improvements.

⬆ back to top

Non-Functional Requirements

The non-functional requirements fall into three groups: responsiveness and reliable use; architectural properties; and sustainable collaboration as an open-source research tool.

Group Requirement Target / measure
Usability Performance Processing in < 50 ms, with a 30 ms target; depth-image streaming with little additional impact on latency.
Usability Availability Failure-free operation for at least 4 hours.
Usability Robustness Stable memory usage.
Architecture Decoupling UI and tracking Distributed architecture.
Architecture Configurability Adaptation through suitable interfaces.
Architecture Extensibility Modular structure.
Architecture Installability Installers for tools and applications.
Open Source / Open Science Portability Use on common desktop operating systems.
Open Source / Open Science Maintainability Continuous-integration pipeline and tests.
Open Source / Open Science Reusability Reusable classes and components; application templates.
Open Source / Open Science Suitable repository structure Monorepository with integrated documentation.
Open Source / Open Science Reproducibility Specific releases and data repositories.

Responsiveness and Streaming

The latency budget uses approximately 100 ms for the complete interaction-to-response path as a design reference for direct manipulation. The source analysis contrasts this with the more permissive reference of approximately one second for navigation where users can see that an operation is being performed. For an Elastic Display’s continuous deformation feedback, the stricter reference motivates the framework’s processing target.

Three components contribute to the overall delay: sensor acquisition, framework processing and delivery, and application-side processing and presentation. The sensors considered in the analysis operate at up to 30 Hz, corresponding to an interval of approximately 33 ms between frames. The initial budget allocates approximately another 33 ms to the application, leaving roughly 33 ms for framework processing and delivery. From this, the preferred framework target is set to 30 ms.

The analysis assumes that transfer from the physically connected sensor adds less than 10 ms and does not budget it separately. This is a simplifying assumption, and the frame interval should not be treated as a measurement of total sensor latency. The < 50 ms processing limit is a relaxed bound, motivated by the expectation that client processing is generally less complex than point-cloud analysis. Meeting this bound alone does not guarantee a 100 ms overall response: the sensor, transport, and client delays still need to fit within the remaining budget. Processing and delivery times must therefore be distinguished from the complete interaction-to-response time when validating the system.

Depth images and point clouds contain much more data than lists of interactions. Their streaming consequently adds a bandwidth requirement as well as a latency requirement. The objective is to keep delivery of surface data as close as possible to the latency of interaction events, including when both streams are active. Layers made this requirement explicit by consuming interaction data and depth images simultaneously. Request-based configuration through the REST API remains separate from continuous data delivery.

Availability and Robustness

Exhibitions require the system to operate predictably for extended periods. The target of at least four hours without failure makes this expectation more concrete than a general demand for stability. Automatic initialization and restoration of configuration support installation setup, while reliable runtime behaviour is required throughout the session.

Stable memory usage is a prerequisite for such operation. Depth-image and point-cloud processing involve copying sensor values, and parallel pipeline steps can retain several representations at once. Avoiding memory leaks and uncontrolled accumulation of data is therefore important for both sustained performance and failure-free use. A successful short demonstration does not by itself establish that these longer-duration requirements are satisfied.

Architecture and Configurability

The central architectural requirement is the decoupling of tracking from the user interface. Applications should be able to use the tools across different scenarios and client technologies without requiring scenario-specific changes to the tracking core. A distributed architecture provides the communication boundary needed for this separation.

Configurability allows applications and development tools to adapt sensor selection, processing, calibration, viewport mapping, and communication through defined interfaces. This also supports reproducible startup and the transition between scenarios without rebuilding the tracking implementation.

Extensibility requires a modular structure in which sensors, processing steps, and integration components can be added or exchanged. This follows the open-closed principle: extend functionality through suitable boundaries while limiting changes to established components. Installers complement these architectural measures by making tools and applications easier to deploy.

Open Source and Open Science

Portability targets use of the framework and tools on Windows, Linux, and macOS desktop systems. The purpose is to support research and development in different environments. This remains a requirement for the software; compatibility of individual sensors and their SDKs must also be considered when choosing a setup.

Maintainability and collaborative integration depend on automated builds and tests, supported by the continuous-integration pipeline. Reusable libraries, shared components, and application templates reduce duplicated work and help new applications adopt the same interfaces.

A monorepository with integrated documentation keeps the framework, related tools, and their usage information together. Clear structure and documentation support both reuse and contributions. For Open Science, reproducibility additionally requires identifying and preserving the software build associated with a study, together with the relevant data. Specific releases, archived builds, and data repositories make it possible to distinguish the version used for an experiment from later development.

⬆ back to top