LoginSignup
6
1

More than 5 years have passed since last update.

UnityでVRPNを取り扱う際の覚書

Last updated at Posted at 2019-02-12

想定する環境

  • Windows 10 64bit
  • Unity 2018.2.17f1

VRPNとは

VRPN(Virtual Reality Peripheral Network)とは、VRデバイスをTracker、Axis、Buttonなどの型に抽象化して一元的に制御できるようにしたインターフェースです。OculusやViveが存在しない時代に生まれた古のVR規格です。
接続デバイスを定義してVRPNサーバーを立て、アプリケーションをサーバーに接続すると、デバイスの情報を取得することができます。

VRPNサーバーをビルドする

現在はWindows用のバイナリが配布されていないため、自分でビルドする必要があります。(過去に配布されていたらしきページにはアクセスできなくなっています)

  • 以下のソフトウェアをDL・インストール
  • 以下のファイルをDL
  • CMakeにSourceディレクトリとBuildディレクトリを指定
  • Configureをクリック
  • インストールしたVisualStudioのバージョンを指定してFinishをクリック
  • BUILD_TESTINGチェックを外し、CMAKE_INSTALL_PREFIXにビルド先ディレクトリのパスを入力してConfigureをクリックし、Generateをクリック
  • BuildディレクトリのVRPN.slnを実行し、VisualStudioが起動したらALL BUIIDを実行(F5)
    • このときエラーが出るがスルーしてよい
  • ソリューションエクスプローラーのINSTALLの上で右クリックしてビルドをクリック

VRPNクライアントとサーバーを疎通する

VRPNサーバーを経由してマウス入力を取得します

  • Build/binディレクトリを開く
  • vrpn.cfgを開き、空いている行にvrpn_Mouse Mouse0と入力して保存
  • vrpn_server.exeを実行してサーバーを立ち上げる
  • cmdでvrpn_print_devices.exe Mouse0@localhostを実行し、サーバーに接続
  • 接続に成功すると、vrpn_print_devices.exeに現在のマウス入力のAnalog値とButton値が表示されます

UnityからVRPNサーバーに接続する

UnityにはネイティブでVRPNに接続するためのClusterInputクラスがありますが、試した限りでは使えませんでした。(フォーラムにも"あるバージョンから使えなくなった"という言及もあります。)
他に使えそうな外部ライブラリが無いか探したところ、

が見つかりました。今回は一番上のUnityVRPNを使用します。

  • こちらからWindows 64bit用のビルドをDL
  • VRPN.cs をDL
  • Unityプロジェクトに上記2つを放り込み、以下のスクリプトをCubeかなにかにアタッチすると、マウスに連動してオブジェクトが動きます。
UnityVRPNExample.cs
using UnityEngine;

public class UnityVRPNExample : MonoBehaviour
{
    private string _deviceName = "Mouse0";
    private string _serverAddress = "localhost";
    private string _fullAddress;

    private void Start()
    {
        _fullAddress = _deviceName + "@" +_serverAddress;
    }

    void Update()
    {
        var mult = 2f;
        var x = (float)VRPN.vrpnAnalog(_fullAddress, 0) * mult;
        var y = (float)VRPN.vrpnAnalog(_fullAddress, 1) * mult;
        transform.position = new Vector3(x, 0, y);
    }
}

参考

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1