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