/ apertusvr

The Architecture of ApertusVR

Nowadays there are too many operating systems and AR / VR / MR devices on the market. Different AR / VR / MR developments solve the same problems all the time because there is no embeddable, framework/platform/device-independent, open-source, IoT supported, modular AR / VR / MR engine at all.

ApertusVR creates a new abstraction layer over the hardware vendors in order to integrate the virtual and augmented reality technologies into any developments, products.

It is an embeddable, open-source (MIT), framework-independent, platform-independent, network-topology-independent and distributed Augmented Reality / Virtual Reality / Mixed Reality engine written in C++, with JavaScript and HTTP Rest API (in Node.js).

  • Embeddable: ApertusVR is not a framework. It's a set of embeddable libraries that can be integrated into your new/existing project.
  • Framework-independent: You don't have to integrate your application into other frameworks. ApertusVR extends your product with AR / VR / MR capabilities.
  • Platform-independent: You can use different AR / VR / MR devices, operating systems and platforms thanks to C++.
  • Open-source: The open-source, MIT licensed code-base grants you full control of the source code.
  • Network-topology independent: Use Server-Client or even Peer-to-Peer topology.
  • Distributed: The configurable ecosystem provides you a wide variety of plugins for different computation tasks, that can be distributed among the computational participants.
  • IoT supported: ApertusVR uses ApertusCore which is an abstract, distributed database to create ad-hoc networks and share data across participants.
  • MultiPlayer: ApertusVR supports multiple participants in the same scene/space.
  • Sharable: You can invite other users to join into the same scene/space.

The modular structure of ApertusVR allows you to run the ApertusCore on any device. Written in C++ 11 it is able to run on smartphones, tablets, desktops, mini-computers. The core is responsible for the synchronisation of the scene with NAT Punch Through technology. A typical host-guest relationship can be varied according to the situation - if the original host falls out, a guest takes the host role and runs all software components needed in order to maintain the shared virtual space.

Plugins are extending the functionality of the Core, according to your needs/choice. Let's take an example, where a computing power required particle system simulation has to be developed and it has to be displayed on a smartphone. In this case, ApertusCore runs on a HPC server and on the smartphone for the scene synchronization. Beside ApertusCore, a specific plugin calculates particle physics has to be implemented for the HPC server, and another plugin has to put on the smartphone for the visualization. Till now, VR engines forced the user to run all features at the same time on the device, which was computing power consuming. But with ApertusVR, you can do it easily.

Another main difference between AR / VR frameworks and ApertusVR is that you can couple ApertusVR to your well-written and already-working environment via the C, C++, HTTP, and JavaScript APIs. Swift and Java APIs are currently being developed to extend the capabilities of the engine.

Architecture of ApertusVR

Figure: Architecture