SPIN - CREW-Brussels/EXP GitHub Wiki
SPIN (SPatial Interface Network)
Full Sub-module here
SPIN is an app that runs on a a Vive Focus 3 (it probably works on other Vive VR headsets) and acts as a bridge to use Vive Trackers such as Vive Ultimate Trackers on other platforms.
SPIN uses Open Sound Control (OSC) to stream the trackers position and orientation on the network as well as battery status.
Demo Video
Installing
Download the latest version here or build from source.
Installing APK files on the headset
Alternative to install the app via Obtainium (2D app with entering the github link), to avoid installing the app back on every headset when there is an update.
- Download Obtainium on your headset if the app is not on yet
- Library ➝ 2D app (in the headset)
- Open the github link in Obtainium ➝ https://github.com/CREW-Brussels/SPIN
- Delete SPIN app if there is already one existing
- Install latest version via git
How to use SPIN
Spin is intended to be left unattended (the proximity sensor should be blocked or the data rate will be limited to 1Hz) all configuration must be done through a web browser on port 8081 (the IP address is displayed in the headset for convenience).
Configuration Interface
Once the application is launched connect to the configuration interface at http://<headset-ip-address>:8081/
Interface
The interface is organized in 4 sections:
Host
Device Name is the name that will be used as the first part of the OSC address.
Refresh Rate is the target frequency for the data packets.
Servers
OSC specification defines an application that receives OSC Packets as a "server".
This section allows addition, suppression and modification of "Servers", meaning network devices that will receive the OSC packets.
Roles
This section defines the data that will be sent. Changes can be made at runtime, for example to replace a low battery tracker with a fresh one with minimal interruption.
Each Role corresponds to one OSC address, may target one or more Servers and receives it's data from exactly one tracker.
name is not used anywhere and only intended to identify the roles in the configuration interface.
address is the last part of the OSC address.
active when false the Role will remain in the configuration but will not be sending any data.
servers is a list of target servers for this role.
tracker is the data source for this role.
Trackers
This section allows monitoring of the trackers, it shows witch trackers are online, their tracking status and battery level.
Example
General example
In this example we attach Tracker1 to a cart and Tracker0 to a door.
Tracker1's position and rotation will be sent to broadcast
and Another Server
as /SPIN/cart 50 times per seconds.
Tracker0's position and rotation will be sent to broadcast
as /SPIN/door 50 times per seconds.
Example using SPIN and Unreal Engine
Here (LINK COMING) is a set of blueprints, useful to make the link between the SPIN app and an Unreal project.
OSCServer
The OSCServer Blueprint, when put in the scene, will allow you to receive the log information of the trackers, when the app is open in a headset. That way, you will be able to get the name of the tracker(s) you want to use, since their roles have been created earlier on the webpage of the app. This is possible, because SPIN is broadcasting.
OSCComponentTracker
The OSCComponentTracker Blueprint, when assigned to an actor, will allow you to use the position and orientation of the tracker(s), using its address.
In the address section, it should be entered like so: /Server Name/address