進捗報告(11月22日)

進捗報告(11月22日)
中川和久
1
VRPN: A Device-Independent, NetworkTransparent VR Peripheral System

VR周辺機器について


本質的に同じ作用をアプリケーションに命令するのに、
それぞれのVR周辺機器に対してそれぞれのインター
フェースが存在している。
VRPNではVR周辺機器の機能を発揮する時に生じ
る一連の命令に対してインターフェースを用意してい
る。

device type
2
VRPN: A Device-Independent, NetworkTransparent VR Peripheral System

VRアプリケーションについて


どの時間のイベントがシステム内で起こっているのか
を把握する必要がある。
VRPNでの同期

vrpn_Clockクラスという形でライブラリに存在してい
る。
3
VRPN: A Device-Independent, NetworkTransparent VR Peripheral System

VRPNの本質


VRPNはVR専用のAPIを提供することが目的ではな
い。
様々なVR周辺機器に対しての一律のソフトウェアイ
ンターフェイスを提供し、素早い応答でVR周辺機器
にネットワーク的に透過なアクセスを実現を可能にす
るときの問題を解決する。
4
VRPN: A Device-Independent, NetworkTransparent VR Peripheral System

既存のVRツールキットとの互換性

device-interface layer






WorldToolkit
Maverik
NCSA -CAVE applicationNaval Research Laboratory -Dragon applicationPanda3D
DIVERSE
5
Common device types

Tracker


Button


多次元のアナログ情報を報告する。
Dial


1つ以上のボタンに対してpressとreleaseのイベントを報告する。
Analog


poses、 pose velocities、 pose accelerationsを報告する。
付加的なrotation情報を報告する。
ForceDevice

Server側から送られる情報で、Client側が表面を特定し、3次元
として情報を捉えることを可能にする。
6
Device Types
VR周辺機器を1つのtypeとして捉える。


簡素で機能豊かなソフトウェアインターフェースを供
給するためには工夫が必要である。
1. VR周辺機器をそれらの機能に基づいて区分けする。
2. VR周辺機器をそれぞれ関連づける。
3. 多種多様のインターフェースを経由できるようにする。
4. サポートしていないメッセージを無視する。
5. 全てのメッセージをアプリケーション・レベルで通信する。
7
1. 機能に基づいたVR周辺機器の区分け

VRPNのドライバは多数の機能を備えたVR周辺
機器を、device typeで細分化させて捉える。

Server側のPhantom haptic display


Client側から転送されたデータを描写する。
Client側


Tracker、Button、ForceDeviceそれぞれのデータを出力
する。
1つだけしかないhaptic deviceを3つの別々なマシンのよ
うに扱う。
8
2. VR周辺機器の関連づけ

細分化させたtypeを同じネットワークに接続させ
る。

Client側のHaptic deviceを3-typesに細分化した際の
Tracker、Button、ForceDeviceは別々の物ではあるが、
効率よく通信するために同じネットワークに接続させる。
Internet
vprn_Tracker_Remote
vprn_Button_Remote
vrpn_Connection
vprn_ForceDevice_Remote
9
3.多種多様のインターフェースを経由

あるVR周辺機器が時間毎に違ったdevice type
として認識されることもある。


自由に回転するダイアルはDialインターフェースで回
転角を特定することも出来るし、Analogインターフェー
スで値を特定することも出来る。
layered device


AnalogFly (低レベルでAnalog、高レベルでTracker)
multiple-behavior device

vrpn_Trackerインターフェースを複製(違う名前)
10
4. サポートしていないメッセージを無視

VRPN内でサポートしていないdevice typeから
の命令は無視できるようにする。

稼動中のTrackerの割合を報告するmessage

Phantomと3rdTechのトラッカー・デバイスは、稼動中の
Trackerの割合に適応するように入力命令を制御するが、
他のVR周辺機器は安全にmessageを無視できる。
11
5.アプリケーション・レベルでの通信

既存のdevice typeにも適応しないようなデータ
はVRPNのライブラリの改編をせずに、新たな
message typeとして送信される。
12
Client側

VRアプリケーションが取扱うdevice type








vrpn_Tracker_Remote
vrpn_Button_Remote
vrpn_Analog_Remote
vrpn_Dial_Remote
vrpn_ForceDevice_Remote
vrpn_Poser_Remote
 接続したいポーザーをパラメータとしてServer側に伝える。
vrpn_Analog_Output_Remote
 接続したいサーバーをパラメータとしてServer側に伝える。
vrpn_Sound_Remote
 音声について、Client側でサンプリングが行われる。
13
Server側

VRPNのServerがVRアプリケーションに
messageを伝えるときには同期が必要である。
14
VRPNで新しいVR周辺機器を作る

主に2種類のアプローチ



既存のdevice typeを用いて作る方法
新たなdeviceクラスを作る方法
root device class

message typesの記述とそのmessageの送り先を処
理する。

vrpn_Tracker
15
既存のdevice typeの使用

既存のdevice typeに新たな能力を加える

新たなVR周辺機器が、既存のdevice typeを複数組
み込むことで実現が出来るのであれば、Server側の
root device classに新たなmessage typeでエンコー
ド・デコード出来るように拡張して、Client側に存在す
る_Remoteクラスはそのmessage typeを送信するよ
うにする。
16
VRPN tracker watch program

新たなトラッカーが出来たとき、このプログラムを
用いてテストすることが出来る。

positionとorientationコード
17
新たなdeviceクラスの作成


ルールに則った名前の指定を行う。
vrpn_BaseClassに由来したdeviceクラスの作
成を行う。

同期をとり、新たなmessage typeを流す。
18
既存のVRPN

アプリケーション・レベルでの通信
アプリケーション
Server
VRアプリケーション
VRPNアプリケーション
Client
VRPNアプリケーション
Tracker0
vrpn_timer
vrpn_AnalogFly
vrpn_Log
Analog
vrpn_timer
Button
Analog
Button
vrpn_Joystick
vrpn_connection
vrpn_connection
Networkクライアントドライバ
Networkクライアントドライバ
ドライバ
eth0
eth0
USBクライアントドライバ
usbcore.o
usb-ohci.o
デバイス
Networkデバイス
Networkデバイス
19
卒業研究で実現しようとするVRPN

結果出力についての課題(ForceDeviceの設定)
アプリケーション
Server
VRアプリケーション
Client
VRPNアプリケーション
Tracker0
vrpn_timer
vrpn_AnalogFly
vrpn_Log
Analog
Button
ドライバ
Networkクライアントドライバ
eth0
Networkクライアントドライバ
eth0
USBクライアントドライバ
usbcore.o
usb-ohci.o
デバイス
Networkデバイス
Networkデバイス
20