Trinus VR was created to provide an affordable VR headset for your PC software. Trinus VR uses the display and sensors of your own phone to create an enjoyable and low cost VR headset, similar to that of Oculus Rift but without needing to buy expensive hardware. And you can start using it today.
Combined with a headmount like Google Cardboard, Homido, Durovis Dive, ColorCross, or others; Trinus VR can turn most of your computer software into a VR experience. This includes games, 3D tools like Blender or Unity, immersive learning tools or science applications like protein folding visualisation software.
Thanks to its customisation options, Trinus VR will work with a large variety of software, even if it wasn't originally designed for virtual reality.
And to further immerse into digital worlds, you can use it wirelessly, allowing freedom of movement (i.e. full rotation).
Finally a new release! (and first of the year). There have been some delays due to some stubborn bugs.
Other than bug fixing and performance tweaking, there is a cool new feature: positional tracking. This still a very early version, and uses a simple mechanism of shape detection that won't be accurate in some cases. But it is a first step!
And there are other changes, like the new UI, rotation sensor prediction, improved image control...
There's still plenty of work to do, some improvements and new features to add, get an iOS version ready...
I've been meaning to add a News section for a while... finally did (good news!).
To recap on what's been going on lately:
- I've been working hard to improve Trinus VR. It is currently at a stage where it is very playable, although still a bit tricky to use.
There's plenty of stuff to optimize and simplify. The news is that I am now fully dedicated to the project!
- Most recent work has been focused on preparing a library version of Trinus VR, and it is now available!. This means that Trinus VR server features can now be easily integrated in games, for a seamless awesome experience available to a large user base(yay!).
- Support from most (there's always that guy... ) users has been great, I really appreciate that. It's thanks to them (you?) that Trinus VR is what it is today.
- Got ranked as one of the best Android apps of 2014 by Gizmodo UK
See below the instructions to get started with Trinus VR. If you are having issues, make sure to review the troubleshooting section, or join the forums for additional support.
This documentation might be outdated, check the hovering help for up to date information (but don't skip the troubleshooting section if you are having problems.
Translations: Russian. (if you want to translate this page to your language, feel free to do so and send me the text. Cheers!)
Downloading Trinus VR
You can find download links for Trinus VR, as well as other tools that might be useful here.
File options to manage configurations. Last used configuration will be used next time the server is started, unless a command line parameter pointing at the location of a config file is stated (this is useful to have different profiles loaded through shortcuts).
The help option contains links to (very useful) documentation and the forums. Most up to date (basic) help is already provided on the right panel of the app, with details on the item the mouse cursor is currently pointing to.
Trinus VR will autodetect and use pretty much any type of network to stream data between PC and phone, but some will work better than others:
- USB: This relies on USB tethering to establish the fastest connection type.
- Direct Wifi / Wifi hotspot: For most cases, this will be the second best option, as it uses a direct wifi connection (i.e. no router) between server and client. This means that either PC or phone act as hotspot, while the other end connects to it. As an alternative, you can try Wifi Tethering and have the PC connect to the Wifi network created by the phone.
- Wifi router, with wired PC: Still a good option, the PC connects to the router through ethernet cable, while phone connects through wifi
- Wifi router, all wireless: Both PC and phone connect through the router. This is the slowest option and it is likely to cause jittering and low performance.
Establishing the connection between PC and phone should be rather straightforward. With autodetect enabled on both ends, start each side and wait for the connection to be confirmed. Note that it might take a few seconds, even minutes, if the network connection was just established (since Windows and the phone will need some time to set it up, specially in USB mode).
Make sure access through the ports is allowed by firewalls (Windows will usually ask for permission).
To use USB connection, activate USB Tethering option from your phone (usually in Settings->(Networks)More…->Tethering). Note that some carriers have a restriction on this option but there are workaround (look for reverse tethering). Internet should be disabled on the phone to avoid the PC consuming from a 3G/4G data plan. If you do need internet (for multiplayer games or login requirements) you can change the priority of networks the PC uses (so that it accesses internet through the usual interface instead of USB). This can also help if you experience slowdowns while playing online (since the PC might still be trying to use the phone Wifi network).
There are several options to customise your experience depending on your system and software used.
This option checks head movement to dynamically change quality and increase performance when it is most needed (i.e. looking around, to have a smoother experience). It is generally recommended to keep it on, but you might want to disable it if artefacts become too visible (especially dark games).
Duplicates the image (one per eye) when 3D SBS (stereoscopic side by side) view is not available. Only a few games support SBS, but then there are also tools that make the conversion, like Vireio or Tridef. The latter is meant for use in fullscreen, but can be switched to windowed mode (thanks to Nazar for the tip), check details here.
Usually, the default auto option will work. It activates Fake3D for 16:9 resolutions and deactivate for lower (4:3 and 8:9). Alternatively, you can force it to enable/disable. Since the same image is repeated twice, it is best to use a more squared game resolution, one with a 4:3 ratio or, ideally, 8:9 to avoid distortion. And always try to get as close as possible to your phone resolution. For example, on a 720p phone (1280x720) you would want to use a game resolution of 640x720 (8:9 ratio) or 800x600 (4:3 ratio). 8:9 ratios are not available by default, but in most cases you can enable them from your graphics card settings. That's the best ratio to use, as it will eliminate any scaling distortion.
Use this option to show the cursor on the streamed video. This is useful for desktop applications (i.e. most games already show the cursor).
This indicates the video compression level. The lower it is set the faster the streaming but with loss in image quality. While can improve performance, the impact is not as big as lowering game resolution, so it might be preferable to keep that low and set the quality to higher.
Capture Mode Fast and Compatible are alternative methods of capturing screen content. Fast is usually the preferred one, but use Compatible Mode for games/apps where Fast Mode doesn't work (blank/frozen screen).
Limelight is a good option if your hardware is Gamestream (tm) compatible, as it currently provides the best performance. The downside is that barrel distortion and fake3D options are not available for it at the moment.
When using Limelight, please note that you can manually specify the IP of the serving PC, so that you can use USB streaming instead of default wifi. Also, might be a good idea to add Windows desktop in the list of applications (in GeForce Experience) and use is when streaming, as it will be more flexible to choose which game/app to run.
If you see border lines on the output view, try adjusting this to get them removed.
This is a limiter for the frame rate. It might help reducing jitters and other video streaming problems.
You can choose keys to the lens calibrate/more/less/reset actions by clicking the button and then pressing preferred key. Once Trinus VR is running, you can use these to adjust the barrel distortion and make it match your headset lens (Cardboard, Durovis, ColorCross, etc. they all have different lenses). Resetting will revert back to default values.
Note that the calibration grid image won't change on the server (PC side), only on the client. You should be looking through the headset while adjusting lens correction parameters to find the ideal position (screen/lens center), scale and distortion (warp), filling the area visible through the lenses and countering the lens optical distortion.
Trinus VR can emulate a few different control mechanisms to translate head movements into game world actions. There are currently three main options to consider, depending on what the game supports (you will need to check the game information to find out if it supports modes like Freetrack or TrackIR).
It is the most compatible options (even supported by older games, as long as they have mouse look), but it is limited in its precision. You can use the scaling sliders to adjust the degree of movement (note that this can be adjusted while in game)
A complete VR protocol, it does 1:1 mapping between head and game camera movements. It has a limited library of compatible games. Start the Trinus VR connection before starting the game to ensure it picks up the protocol.
Similar to FreeTrack, it supports a larger number of titles. Some of them have usage restriction that requires TIRFix to be enabled. Start the Trinus VR connection before starting the game to ensure it picks up the protocol.
An alternative protocol using FreePIE's IO plugin. This is a good protocol for easy integration between Trinus VR and other software, developed or modded to support headtracking. An example of this is Jackii's Python script to use headtracking in Blender, as seen here.
Note that this option can also be used as a redirection to FreePIE, and should perform better than the existing FreePIE redirect.
These options redirect and reformat sensor data to be used with opentrack or FreePIE, providing advanced customisation options and additional conversions (like joystick emulation). In order to have those external apps receive the data, you will have to set their corresponding UDP trackers to listen at Trinus VR sensor port + 1. So, if using default 5555 port, redirection will be delivered to port 5556.
SENSITIVITY / INVERT
You can use the sensitivity bars and invert checkboxes (even after the streaming has started) to change the movement ratio between head and virtual world.
This option allows swapping the order match for the sensor axis. This is useful in case you want to use Trinus VR with the phone in a different location (e.g. on your head and looking to the monitor instead of the mobile device, with axis switched to Yaw, Roll, Pitch).
Finally, there are certain actions that can be mapped to controller buttons or keyboard. These are specially useful in mouse mode, and allow for quick manual turns or to ignore (while pressed) head tracking, so that you can readjust your head position without having an effect in game.
If movement behaves funny, try recalibrating the phone sensors by doing 8 shapes in the air. The magnet on Google Cardboard can cause interference so either try the recalibration with the phone inside the Cardboard or remove the magnet. Check the troubleshooting section for more tips.
These are the options that can be adjusted through the client app. For most cases, there is no need to change these settings.
This option is only available when Autodetect is disabled or when USB tethering is active. It is used to specify the IP address of the server to connect to.
Port that will be used to transmit video.
Port used for sending head tracking information to the PC.
This option automatically finds the server to start the connection without setting IP address. Both PC and client need to have it enabled to start the connection. It is recommended to keep this on.
Enables barrel distortion correction (the squished rectangle). This is needed to correct the distortion created by the headset lenses, so that straight lines stay straight.
Activating camera gestures will let you start the client by swiping your hand in front of the screen, while in menu, or use the camera to see what's in front of you (in the real world), while streaming. The former is specially useful as it avoids the need to remove the device from the headmount when starting a streaming session. The see-through feature is good to get back and check on the real world without removing the headmount (but note that this option can have an impact on performance).
You can see how gestures work here.
Enabled by default, this option increases colour depth for better picture quality.
When buffering is enabled, a second frame will be collected and processed (while the previous one gets ready to be displayed). This can improve the frame rates, but might incur in slightly higher latency.
If the previous frame hasn't been displayed yet and the current one is ready, it will be ignored to have the next one prepared (and give more time to the device to update the display). Enabling this can improve overall performance
Ok, we have covered all the settings, now it is time to try it. In the following example, we'll see the steps to use Trinus VR with GZ3Doom, a free modified version of the classic Doom, suitable for VR.
- Assuming you already installed Trinus VR, you can proceed to execute the server (TGServer.exe), and the Android client
- Have Android and PC connected to the same network (either through USB tethering, Wifi direct/hotspot or Wifi via router). This can be the trickiest part, check the troubleshooting section and the forums if you run into trouble
If using USB Tethering, you will need to enable the option in Android Settings. There is an alternative USB via ADB method, but it is only recommended if other options are not working
If using Wifi direct, you first click on the Wifi Hotspot button (in Trinus VR server, network tab) and then connect the phone to the created Wifi (default name/SSID: trinus). Note that you can use Wifi tethering instead, by enabling the option in Android and having the PC connect to the phone
If using Wifi via router, make sure both PC and phone are on the same network (e.g. connected to same router). For best results, have the PC connected to the router via ethernet cable
- Configure Trinus VR. For this example, you can leave most of the options as shown by default. Note that you might need to set Capture mode to Compatible (if display in Fast Mode freezes/stays black)
- Click the start button on both sides of TG and wait for the connection to be established (this might take a bit, specially if the network link was just established)
- Start GZ3Doom, Trinus VR will stream currently active window. You can actually try any other game, GZ3Doom is just a suggestion because it supports native 3D mode and will usually work on all hardware
- Select a windowed (remember it won't work fullscreen) 16:9 resolution for the game (in options), like 1280x720. 16:9 resolutions work well with games that have 3D mode (or using Vireio/TriDef), otherwise set resolution to 4:3 or 8:9 to avoid stretched images
- Open the game console (press the accent key, which is usually located under ESC)
- Type vr_mode 3 and then enter, you'll see GZ3Doom outputs a side by side image now. You can close the console (same key)
- At this point, you can mount your Android device (which should be already streaming game content) on your VR headset and start playing
- You can also adjust the lens distortion settings to better match the phone and headmount features (e.g. image size, distance between images, distortion level). The default keys for that are: 5 to cycle through values, 6/7 to increase/decrease and 8 to reset to original setting.
For this example, we used a game that natively supports SBS (side by side), but that is not always the case. Alternatively, you can use tools like Vireio, Helix mod or TriDef (the last one being a paid app).
But if 3D SBS is not an option, you can still use TG with the Fake3D mode, so that the image is duplicated (for each eye). You lose the 3D depth but gain performance (lower resolution required) and it will work with most games. Just remember to use a 4:3 resolution instead of 16:9, like 800x600.
And this was using the mouse sensor mode, but some games support the better alternatives: FreeTrack or TrackIR. You can try those with games like Rise of Flight, Drift 3, Arma series, etc...
Here are some tips to solve common issues. Many of these have been sorted out through the help of users in the forum (big thanks to all of them!), so if you have a different problem or know how to fix one, please join the forum.
- Try to use the fastest connection type available
- Reduce game resolution. For best results, always use a game resolution matching or below device's
- Use Fake 3D mode. This lacks the depth perception of real 3D side by side mode, but boosts performance quite noticeably (since there is half the video data to process/stream)
- See if you can test with alternative hardware (e.g. faster PC / phone / router). Keep in mind the weakest link is the bottleneck, e.g. you can have a powerful PC and phone, but if the router is old and slow performance won't be good.
- Make sure network is not under heavy traffic (e.g. streaming a movie)
- Disable lens correction
- It seems certain apps can cause trouble. In particular,
software that does screen capture has been reported to cause
problems, like TeamViewer or Splashtop. Make sure those are
- Make sure there is no proxy or firewall blocking the connection
- This could be caused by many different reasons, try a different connection type, check the forums for additional tips
CAN'T CONNECT THROUGH DIRECT WIFI
- Trinus VR server needs to be started with admin rights (right click the icon and Run as administrator)
- Some hardware won't accept that option
- You can use Wifi tethering, so that the PC connects to the phone hostpot instead of the other way around
- Try enabling or disabling USB debugging on your phone, it has been reported to help
- You can try using the Force IP option (Network tab) and set the IP to the one shown on the phone. This requires starting the client first.
- If your telecom operator doesn't allow USB Tethering, you can try with USB via ADB (enabling it on both server and client)
NO INTERNET ON PC WHILE TETHERED
- Change the priority of networks so that PC uses the standard internet connection instead of the tethered one. You can find how to change the priority of internet network here.
As a general use, try using the best network connection type available (e.g. USB or direct Wifi). Then consider tweaking the settings to balance quality vs performance:
- On server side, decrease game resolution and Trinus VR quality level. Also try activating enhanced motion
- On client side, disable enhanced quality and lens correction; and enable frame skipping. Also make sure device is not in some battery save/low performance mode
- USB 3.0 connection might actually yield lower results than USB 2.0
LOW PERFORMANCE WHILE TETHERED AND ONLINE
The PC might still be using the phone to connect to the internet (even with 3G/4G off) through Wifi. This will result in slow performance on Trinus VR, with online gameplay, or both. You can either disable Wifi on the phone or, as in the case above, change network priority on the PC so that it uses the standard connection for internet, instead of the tethered one.
HEAD TRACKING NOT WORKING PROPERLY
- If head tracking is drifting, try a different sensor mode (in client app settings)
- Make sure phone sensors are calibrated (do a few 8 shapes in the air with the device)
- Avoid possible interferences (Cardboard/Speakers magnets, being to close to the monitor, ...)
- Check the sensor status with a reporting app like AndroSensor
- If Freetrack/TrackIR is not working, verify if mouse mode is (might be just an incompatible game)
- Always start the Trinus VR connection before starting the game when using Freetrack/TrackIR
- Some device brands seem to be specially prone to this kind of problem. Try rebooting, reinstalling the app or check for additional support regarding your device
- In some cases, it can be an issue related to using a custom ROM, check the forums about your specific firmware
- Mouse mode may not work for some games unless Trinus VR is set to run as administrator
- Games that are made for Oculus Rift may not support other protocols (e.g. mouse only moves vertically or horizontally). Ask the game dev for support
- Sensors won't work if using USB via ADB
- Try repairing the Windows registry, with a tool like CCleaner
MOUSE DOESN'T MOVE
- Try running Trinus VR as administrator
- Sensors won't work if using USB via ADB
BLACK/FROZEN SCREEN ON ANDROID
- Use windowed mode (some games and apps might stream fullscreen, but windowed works best)
- Try enabling V-Sync setting in game
- Try using Compatible Capture Mode instead of Fast Capture Mode
- Disable any other video app that might be interfering (TeamViewer, Splashtop, ...)
NO FULL SCREEN
Unfortunately, Trinus VR doesn't work full screen (with few exceptions) but...
- If using USB connection, try with a different port
CAN'T PROPERLY SEE IMAGE THROUGH LENSES
- Use lens calibration to adjust view to the area seen through the lenses
IMAGE IS ZOOMED / DOESN'T FIT DISPLAY
This seems to be an issue with some Windows 8 systems. There are two options to fix it:
- Run server in Windows 7 Compatibility mode and with the high DPI setting disabled
- Adjust the zoom option (in the video tab)
IMAGE IS BLURRY/LOW QUALITY
- The Enhanced Motion option (in Video tab) may decrease image quality on some devices, try disabling it
I'd like to thank the following for their work, since without it, Trinus VR wouldn't have become what it is today:
Anders Malmgren (and collaborators) for FreePIE
Stanislav Halik (and collaborators) for OpenTrack
NaturalPointOfView for the TrackIRFixer
The Limelight team for their great streaming app
David Lofink, from whom I took the image that became the logo/app icon
All the early supporters that patiently helped shaping Trinus VR with their suggestions and error reporting