# gdvrpn

A native GDScript implementation of the [VRPN](https://vrpn.github.io/) client protocol.

# Background

VR hardware and software provide commonly an interface for tracking data by implementing a VPRN server. Binding the actual VRPN client library into an extension is proven and working poses a burden for maintenance and deployability. To solve this gdvrpn allows for a native integration of VRPN tracking in Godot.

This project does not implement any server components or forwarding and is only tested with a limited number of devices in our lab. Currently, UDP mode is under development. 

![Tracking with an OptiTrack System](addons/docs/img/gdvrpn.jpg)

# Install

Install the project from the AssetLib in Godot or directly from the repository.

# Usage 

There are two components, a `VRPN_Client` and  needed for using this addon:
	
`VPRPN_Client` is mandatory and implements the network component of this addon that parses the data received and broadcasts them to the respective receivers within the scene tree.

`VRPN_Tracker` is a receiver taking pose information (i.e. position and orientation) of a rigid body and applies it to the nodes global transform. 

`VRPN_Button` is a receiver of button events.

## Example

For some inspiration try the example `spin_tracker.tscn`. To create a test input use the shipped VRPN config file `test/vrpn.test.cfg` as follows (from the root of this repository)
	
```bash
$> vrpn_server -f addons/vrpn/tests/vrpn.test.cfg
```

# License

This project is licensed under the terms of the [MIT License](https://opensource.org/license/mit)
