Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (4,208)  
HandBrake Japanese Language Version  (3,353)  
CrystalDiskInfo  (1,743)  
CotEditor  (1,120)  
CrystalDiskMark  (866)  
Boookends  (788)  
SMPlayer  (642)  
えこでこツール  (599)  
Tera Term  (595)  
10  FFFTP  (579)  
11  Cabos  (530)  
12  BathyScaphe  (494)  
13  ffdshow  (481)  
14  MergeDoc  (464)  
15  ギコナビ  (438)  
More >>

最近ブックマークされた記事

6自由度デバイスでのLinuxアプリケーション制御を可能にするlibsixdof

2008年05月30日 10:32 Ben-Martin(2008年5月28日(水)) 1 2 3 4
 6自由度(6DOF:Six Degrees Of Freedom)デバイスとは、3軸方向の移動に加えて、2つの軸に対する傾きおよび3番目の軸周りの回転に対応した入力装置を指す用語である。実際にこうした製品としては、SpaceNavigatorなどのジョイスティックを押し縮めたようなデバイスが販売されている。通常このようなデバイスの用途としてはコンピュータ支援設計/コンピュータ支援製造(CAD/CAM:Computer-Aided Design/Computer-Aided Manufacturing)ないしは3D系アプリケーションが想定されているのだが、適当なプログラミングライブラリさえ用意すればその他のLinuxアプリケーションでも利用可能になってしまうのだ。

 という前置きを聞かされたとしても、こうしたデバイスがデスクトップアプリケーションにおいて何の役に立つのかイメージできないという方もおられるだろう。そうした場合はビデオの可変速再生にデバイスの軸回転を、あるいはスライドショーの画像切り替えにデバイスのx軸を割り当てた場合の操作感を想像してみて頂きたい。

 とは言うものの、ビデオプレーヤの再生速度を10パーセントに落とす指定などはキーボード操作の1つにマッピングすることは不可能ではないし、スライドショーの画像切り替えなども通常はスペースキーの押し下げに割り当てられているものである。ところが6DOFデバイスの場合はx軸方向の移動1つを取り上げても、こうした操作はオン/オフだけで終わるものにはなっておらず、例えば全ストローク長の25パーセントまで押し込んだ場合よりも目一杯押し込んだ場合は1秒当たりに切り替えるスライド数を多くするといった操作が可能となるのだ。同じくビデオプレーヤの場合も、ダイヤルの最大回転を20倍速再生に割り当てておき、これをニュートラルに戻すだけで通常再生ないし一時停止になるようにすることができる。後者の場合、要は6DOFデバイスをジョグシャトルとして使用させる訳だ。

 こうした6DOFデバイスを各種のアプリケーションにて簡単にサポート可能とするために私が作成したのが、本稿で解説するlibsixdofである。libsixdofの開発時に念頭に置いておいたポイントの1つは、6DOFデバイスをサポートさせる上でアプリケーション側に加える変更を必要最小限のものとする(小型のパッチとする)ということであった。その他に想定しておいたのは、各種のアプリケーションの有す様々な機能を制御する関係上、例えばデバイスに装備されたボタンの1つを軸移動と傾き操作の切り替えスイッチに割り当てるなど、6DOFデバイスに対する基本モード以外の細かな設定もできるようにしておくことである。デバイス入力に対するこうした設計思想に関しては眉をひそめる方もおられるかもしれないが、私としては、デバイス側で許された多様なアクションを自分の好みとする方式にて各種アプリケーションの操作に割り当てられるようにしたかったのだ。

 libsixdofにて特定アプリケーションをサポートさせる際に行うべき措置は、X Windowをlibsixdofに登録すること、libsixdofにX Eventを認識させてデバイスからのイベントを監視させること、呼び出し可能な関数テーブルの設定をすることの3つである。こうした準備さえ済んでいれば、デバイス側で発生するイベントのアプリケーション側関数へのマッピングおよび、これらの呼び出しについては、libsixdofライブラリが自動的に処理をしてくれるようになる。

最終更新:2008年07月30日 17:07