WebGLでの視点移動に使えそうな入力デバイスの整理
せっかくWebGLで3D内を移動できるのだから、視点も、平面的なマウスじゃなくて、何かの角度や顔の位置・角度に合わせて動かしたいということで検討用に整理。
案
- 1. flash + webカメラ + javascriptライブラリ + canvasでの顔認識
- 顔の位置認識: 可能
- 顔の角度認識: 難しい
- いくらjavascriptが早くなったと言っても、リアルタイム認識はまだ厳しいだろう。精度の問題も難しい。
- マーカーやピンポン球の認識ならまだ軽いだろうけどそれでも厳しそう。
- 参考: JavaScriptとHTML5 Canvasを使って顔認識するコードがすごい:phpspot開発日誌
- 3. Wiiリモコンの赤外線カメラ + 頭にLED + wiimoteアプリ + node.jsでブラウザに投げる
- 顔の位置認識: 可能(距離は不可能)
- 顔の角度認識: 難しい
- 電子工作は好きだけど、体験できる人を狭めてしまうのが痛い。
- 参考: Wii リモコンで頭の位置を認識する VR システム
- 4. HMDの加速度センサー + HMD用アプリ + node.jsでブラウザに投げる
- 顔の位置認識: 不可能
- 顔の角度認識: 可能
- 下記でMMDのゲームに使われている。角度の取得とブラウザへの送信は実験済みで、これを利用したゲームを作成中。
- 参考: 2011-01-21 - Nao_uの日記 - Game Programmerグループ
- 5. Wiiリモコンの加速度センサー + wiimoteアプリ + node.jsでブラウザに投げる
- 顔の位置認識: 不可能
- 顔の角度認識: 可能(頭に付ければ)
- WiiリモコンをNode.jsを使ってWebGL内で動かしてみた - 最高のコンピューティング環境とは?にて角度の取得は実験済み。案6の方が手間がいらない。
- 6. iPhone / iPod touchのブラウザの加速度イベント + websocket
- 顔の位置認識: 不可能
- 顔の角度認識: 可能(頭に付ければ)
- iPhone / iPod touch OS4.2をPCブラウザの加速度コントローラーとして使ってみた - 最高のコンピューティング環境とは?にて角度の送信は実験済み。特別なソフトウェアがなく導入が楽。この方法の視点移動も実験済みで、近日投稿予定。
- 7. Kinect + OpenNIアプリ + node.jsでブラウザに投げる
- 顔の位置認識: 可能
- 顔の角度認識: 可能
- 向きは、顔の画像を切り出して、OpenNIアプリで画像処理すれば出来そうだけど、結構大変そう。
検討結果
- 顔以外の角度で視点変更
- 案6のiPhone / iPod touchの利用が手軽。たぶんAndroidでもすぐに加速度イベントに対応して、Androidも使えるようになる。
- 顔の位置認識を利用するケース
- 案3,6から、適したデバイスに応じて選択。将来的に高速化により案1が実用的になると導入の手間が減って嬉しい。
- 顔の角度認識を利用するケース
- ディスプレイが固定だと見えないからHMDが必要なので、HMDの加速度センサーを利用するのが妥当。
- ディスプレイに囲まれていたり、HMDに加速度センサーがないケースでは、案6のiPhone / iPod touchの利用も有り。