[HDK Windows Installer (Beta 0.8.0) Released]
Recommended Hardware: [ASUS GeForce GTX 1080 8GB ROG STRIX Graphics Card]
The Development Blog of Tim Graupmann
The [SteamVR] API makes the motion controller touchpad input available.
1 Import the SteamVR Plugin
2 Open the `Assets\SteamVR\InteractionSystem\Samples\Scenes\Interactions_Example.unity` scene
3 Attach `StickManipulation.cs` on the SteamVR `Player`.
using UnityEngine;
using Valve.VR;
using Valve.VR.InteractionSystem;
public class StickManipulation : MonoBehaviour
{
private float _mMoveSpeed = 2.5f;
private float _mHorizontalTurnSpeed = 180f;
private float _mVerticalTurnSpeed = 2.5f;
private bool _mInverted = false;
private const float VERTICAL_LIMIT = 60f;
private void OnGUI()
{
Player player = Player.instance;
if (!player)
{
return;
}
EVRButtonId touchPad = EVRButtonId.k_EButton_SteamVR_Touchpad;
if (null != player.leftController)
{
var touchPadVector = player.leftController.GetAxis(touchPad);
GUILayout.Label(string.Format("Left X: {0:F2}, {1:F2}", touchPadVector.x, touchPadVector.y));
}
if (null != player.rightController)
{
var touchPadVector = player.rightController.GetAxis(touchPad);
GUILayout.Label(string.Format("Right X: {0:F2}, {1:F2}", touchPadVector.x, touchPadVector.y));
}
}
float GetAngle(float input)
{
if (input < 0f)
{
return -Mathf.LerpAngle(0, VERTICAL_LIMIT, -input);
}
else if (input > 0f)
{
return Mathf.LerpAngle(0, VERTICAL_LIMIT, input);
}
return 0f;
}
// Update is called once per frame
void Update()
{
Player player = Player.instance;
if (!player)
{
return;
}
EVRButtonId touchPad = EVRButtonId.k_EButton_SteamVR_Touchpad;
if (null != player.leftController)
{
Quaternion orientation = Camera.main.transform.rotation;
var touchPadVector = player.leftController.GetAxis(touchPad);
Vector3 moveDirection = orientation * Vector3.forward * touchPadVector.y + orientation * Vector3.right * touchPadVector.x;
Vector3 pos = player.transform.position;
pos.x += moveDirection.x * _mMoveSpeed * Time.deltaTime;
pos.z += moveDirection.z * _mMoveSpeed * Time.deltaTime;
player.transform.position = pos;
}
if (null != player.rightController)
{
Quaternion orientation = player.transform.rotation;
var touchPadVector = player.rightController.GetAxis(touchPad);
Vector3 euler = transform.rotation.eulerAngles;
float angle;
if (_mInverted)
{
angle = GetAngle(touchPadVector.y);
}
else
{
angle = GetAngle(-touchPadVector.y);
}
euler.x = Mathf.LerpAngle(euler.x, angle, _mVerticalTurnSpeed * Time.deltaTime);
euler.y += touchPadVector.x * _mHorizontalTurnSpeed * Time.deltaTime;
player.transform.rotation = Quaternion.Euler(euler);
}
}
}
Performance is running smoothly.
Setting up the [OSVR driver for SteamVR] is a [manual process].
2 Steam VR should be installed.
steam://install/250820
And then exit Steam/SteamVR before running the installer.
[OSVR-Plugin-For-SteamVR-Installer]
[InnoSetup] is a great tool for automating the process.
3 Install the [OSVR Driver for SteamVR]
Question: [How do you hide the floor mat]?
The Unity [SteamVR Plugin] has an API to center the VR view. It’s great when VR apps have a key mapped to do this.
using UnityEngine;
using Valve.VR;
public class SteamVRRecenter : MonoBehaviour
{
// Keep the script around
private void Start()
{
DontDestroyOnLoad(gameObject);
}
// Update is called once per frame
void FixedUpdate()
{
if (Input.GetKeyUp(KeyCode.L))
{
var system = OpenVR.System;
if (system != null)
{
system.ResetSeatedZeroPose();
}
}
}
}
[SteamVR Plugin for Razer Hydra]
** Caution: Be sure to close any Game, UE4, Unreal Launcher, SteamVR, and Unity processes that are running before installing.
Source: [steamvr_driver_hydra]
Install "SteamVR" - steam://install/250820 Install "Sixense SDK for the Razer Hydra" - steam://install/42300 Install "SteamVR Driver for Razer Hydra" - steam://install/491380
SteamVR has support for OSVR. I tested with an OSVR HDK2.
Install SteamVR:
steam://install/250820
I used the OSVR control panel to flash the HDK2 to the [latest firmware] (`hdk2svr-2.00.hex`).
The setup instructions can be found at the [SteamVR-OSVR] project.
[Kevin Godby] is the developer of the SteamVR-OSVR plugin.
[Russell Taylor] is the primary RenderManager developer.
The 7zip archive with the pre-built Windows drivers can be found in the [files] section.
Extract the archive.
Copy the `SteamVR-OSVR\lib\openvr\osvr` folder to `C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers` folder as a subfolder.
Initially, the SteamVR tutorial was up-side down. I found a solution on Reddit. [New SteamVR-OSVR driver available: fixes display orientation]
Close `SteamVR` and `Steam` before editing the `C:\Program Files (x86)\Steam\config\steamvr.vrsettings` file.
{
"driver_osvr" : {
"scanoutOrigin" : "lower-right",
"verbose" : true
},
"steamvr" : {
"mirrorViewGeometry" : "0 0 1080 600"
}
}
Be sure to relaunch the OSVR server before starting SteamVR.
Relaunch Steam, and the SteamVR tutorial.
Issues:
[Main monitor on different GPU prevents VR applications detecting Vive]
Since I have dual graphics cards, I had to swap graphics cards slots to get SteamVR to recognize the headset in Direct Mode.
There’s a couple important logs for debugging `SteamVR` issues.
* `C:\Program Files (x86)\Steam\logs\vrcompositor.txt`
* `C:\Program Files (x86)\Steam\logs\vrserver.txt`