Julian Petford, Miguel Nacenta, Carl Gutwin, Joey Eremondy, Cody Watts
Full Coverage Displays (FCDs) are designed to cover the entire interior surface of a room with display pixels. This increased display real-estate offers great potential, not only because it allows for additional large wall-sized displays and offers potential for immersive Virtual Reality (VR) systems, but also because it gives application developers an opportunity to make connections between the physical and virtual objects within a room.
The ASPECTA (Affordable Spherically Projected Environments for the Construction of Tomorrow’s Applications) Toolkit hardware provides an affordable solution for creating full-coverage interfaces which is suitable for both interface developers and general users. It does this by combining three main components:
- A hemispherical security mirror
- A standard projector
- A low-cost small-form-factor Linux PC
Below is an image of how such a system would be constructed. The PC and projector would both be contained within the dome of the security mirror. The image would be projected out of a hole in the bottom of the mirror and reflected by a second, flat, mirror so that reflection from the hemisphere creates projection which provides coverage of the majority of the room. It is intended to also explore the possible use of combinations of multiple projectors/mirrors.
The software side of the ASPECTA Toolkit is in no way tied down to the hardware and, in its current state, should work with most hardware configurations where a projected image needs to be distorted for a flat surface. The API could also create application where ASPECTA keystones the graphics when the projector itself is positioned at an undesirable angle.
The ASPECTA system relies on software running on two different devices. Firstly, the user’s device which could be any internet connected device, such as a PC, smartphone or even a Raspberry Pi. The second device is the small-form-factor PC which is incorporated in the projector’s hardware. The user’s device runs the application that the software developer creates using the ASPECTA library and uses it to send requests to the second computer. This second computer maintains the state of what is currently shown on the surfaces and alters them as requested by the library calls sent from the user’s device over the network. The ASPECTA library is implemented in Python, however it could be reimplemented in another language or a wrapper could be added if needed as long as it is able to send JSON formatted strings to the second computer.
The API provides a library which allows application developers to create their software without needing to think about, or even understand, the graphical transformations involved in correctly mapping the projected image onto the wall. It does this by allowing them to address locations within the room as coordinates within “surface” objects. (Which were defined during the configuration stage by the user) The developer is also able to choose what coordinate system best suits them within a surface. Firstly you could use values between 0 and 1 representing the ratios across the width and height of the surface, secondly you may wish to make use of pixel coordinates, or, thirdly, actual room measurements based on the surface measurements that the user may have chosen to provide during configuration.