Table of Contents

SimOvni 2 Implementation

Downloads

Witness Side

Hardware

AR HMD | VR HMD

Software

TCP is fast enough. We don't need blazing fast updates when updating the parameters.

Some C# Libraries for that :

Investigator Side

Hardware

laptop PC | phone | tablet

The first prototype apps runs on laptop PC for a fast dev, for more room to place sliders/buttons.

La premiere appli proto, est sur PC portable pour aller beaucoup plus vite, pour avoir plus de place écran pour placer les contrôles en vrac.

Software

Software stack Identical to the witness side.

The advantage of Unity3d is its ability to retarget an API for mobile as well as PC. Mobile : not now. Now we make it run on a laptop PC for a much faster dev.

L'avantage de unity3d est de pouvoir re-targeter l'appli plus facilement ensuite pour mobile. Mais il y a peut-être beaucoup de travail à cause des différences de gestion des boutons ?

Trajectory key-points interpolation:

Both are implemented since v0.1.0

Development environment selected

All these softwares are free.

In the Microsoft guidelines linked below, you

Knowing that… Follow the guidelines in

https://docs.microsoft.com/en-us/windows/mixed-reality/develop/install-the-tools (partly specific to HoloLens2)

Unity Project

Source code / Unity Project https://github.com/albion2000/simovni2

But, first you need to install the development environment

When opening the project in unity for the first time, at the end of import, you may have 3 errors (oculus related) and 1 warning (about a duplicate identifier or importer generated inconsistent result for asset) that you can ignore.

the same project can generate

The trajectory.txt file is loaded/created interactively using the server & client. You can start without any trajectory.txt file and create it from scratch by adding keypoints.

The trajectory file is handled by the server (PC) only.

Things to tune

A quick test to know that it works in unity alone (at least)

For tests, on the PC side, you can run in the IDE

Option 1 using OpenXR

That's the version on Github.

Should work with more HMDs than just the HoloLens2

unity3d version 2020.3.27f1

The demo projects come with Mixed Reality Features installed :

they were integrated in the demos using the tool MixedRealityFeatureTool-1.0.2109.0-Preview

Visual Studio Community 2019 v16.9.4 for the compilation of the project for the HoloLens 2 target

For compiling/building for the HoloLens 2 target :

A new icon “Simovni2” should then appear in the HL2 3D interface.

I recommend that before each new deploy to the HL2, you uninstall the previous version of simovni2. Worked more often that way for me.

For compiling/building for the PC target (server standalone exec) :

May only work with the HoloLens2

unity3d version 2019.4.19f1

The demo projects (not on github, not published) come with Mixed Reality Features installed :

they were imported using the tool : MixedRealityFeatureTool-1.0.2109.0-Preview

Visual Studio Community 2019 v16.9.4 for the compilation of the project for the HoloLens 2 target

Target to select in visual studio : Release / ARM64 / Device / Native Only. Deployed from visual studio to the HoloLens by USB typically (or wifi).

A new icon “Simovni2” should appear.

Unity3d Scene Graph

Server (Investigator, PC)

The investigator machine is the TCP server (it is that way just because it is problematic to implement a server on a hololens (protections))

Don't forget to tune the firewall on the server to accept TCP connections from the HoloLens. Private Network, Accept incoming TCP connections on all ports (even though we use only port 9005, it seems that it is necessary to not only specify explicitly TCP (not “all protocols”) and also open all the ports in order for the TCP connection to succeed).

To understand how it works, the best is to look at an example scene in Unity, but here for reference is an short explanation of the reference scene : objects and their hierarchy in 3D.

Scene Graph

Controls of the interface

Buttons

time line control
for editing while in pause

Toggles

Sliders

movable while playing and in pause
movable only while in pause for trajectory editing

Client (Witness, HMD)

Scene Graph

HMD Types

HMD Types