ソラマメブログ
About Me
Keimar
Keimar
フラフラ歩きまわっています。
黒板作ってます。
Contact Me
Access Counter

2008年04月26日

RC ViewerでバランスWiiボード このエントリーを含むはてなブックマーク

RC ViewerでバランスWiiボード
正式リリース前のバージョンのRelease Candidate viewerというのがあるのですがRC1.20からViewerがJoystick対応になりました。 主に3DマウスのSpace Mouse向けっぽいのですが他のジョイスティックでもOKのようなのでバランスWiiボードを繋げてみました。

準備するもの:基本的に前回のエントリと同じです。
・Bluetooth アダプタ
・バランスWiiボード
ソフトウェア:あらかじめインストールしておきます
・GlovePIE
http://carl.kenner.googlepages.com/glovepie_download
・PPJoy
http://www.geocities.com/deonvdw/Docs/PPJoyMain.htm
・RC版Viewer
ViewerはSecond Life 1.20.4(RC)を使いました。なおRC版は正式リリース前に不具合が無いかをチェックするためのバージョンであるため、起動しないなどの重大な問題がある場合がありますので注意してお使いください。
トラブルに遭遇した場合はサポートに連絡しても意味無いのでJiraに報告した方がいいと思います。

PPJoyの認識
RC ViewerではJoystickの設定は、Edit - Preferences - Input & Camera - Joystick Setupで行なえますがPPJoyをインストールしてバランスWiiボードをBluetoothデバイスとして認識させた状態だと以下のスクリーンショットの左上の部分のようにBluetooth HID PortがJoystickとして認識されてしまいます。
RC ViewerでバランスWiiボード

バランスWiiボード自体は直接ジョイスティックとして使えないのでPPJoyを認識させてほしいですが調べてみたところJoystickを複数接続された場合は優先順位というのがあるようで、最近のソフトウェアではどれを認識するかはソフトウェア任せっぽいようです。
単純に複数のパッドを使っている状態なら引っこ抜いてもいいのですが今回はそうもできないので次のような手段でPPJoyを認識させます。

1.Bluetooth設定からバランスWiiボードをいったん削除。
RC ViewerでバランスWiiボード
いったん消します。

2.RC版Viewerを起動
既にPPJoyをインストールしてあるので、Joystick Setupを見るとPPJoyがJoystickとして認識されています。
RC ViewerでバランスWiiボード

バランスWiiボードの認識
バランスWiiボードへの接続を追加
Bluetooth設定へバランスWiiボードを追加します。
RC ViewerでバランスWiiボード

GlovePIEのスクリプトを実行
バランスWiiボードからデータを取得してPPJoyへの入力に変換するスクリプトを実行します。
今回はこのようなスクリプトを作ってみました。途中の数値は体重にあわせて調整する必要があると思います。
//----------------------------------------
// WiiBalanceBoard to PPJoy by Keimar Kuhn

var.mode = 0

var.ButtonFreezeTime = 250ms
var.PointerBump = KeepDown(Pressed(wiimote.A),var.ButtonFreezeTime) or KeepDown(Pressed(wiimote.B),var.ButtonFreezeTime)
Wiimote.Led1 = true

// input
var.FL = Wiimote.BalanceBoard.RawFrontLeft
var.FR = Wiimote.BalanceBoard.RawFrontRight
var.BL = Wiimote.BalanceBoard.RawBackLeft
var.BR = Wiimote.BalanceBoard.RawBackRight

if var.FL < 9900 then
  var.FLFlag = 1
else if var.FL > 10600 then
  var.FLFlag = -1
else
  var.FLFlag = 0
end if

if var.FR > 4700 then
  var.FRFlag = 1
else if var.FR < 3800 then
  var.FRFlag = -1
else
  var.FRFlag = 0
end if

if var.BL < 4700 then
  var.BLFlag = 1
else if var.BL < 5300 then
  var.BLFlag = -1
else
  var.BLFlag = 0
end if

if var.BR > 3300 then
  var.BRFlag = 1
else if var.BR < 2500 then
  var.BRFlag = -1
else
  var.BRFlag = 0
end if

// output
if var.FRFlag = 1 and var.BRFlag = 1 then
  if var.mode = 0 then
   PPJoy.Analog1 = -512
  else if var.mode = 1 then
   Key.Up = true
   Key.Down = false
  else
   Key.Right = true
   Key.Left = false
  end if
if var.FLFlag = -1 and var.BLFlag = 0 then
  if var.mode = 0 then
   PPJoy.Analog1 = 512
  else if var.mode = 1 then
   Key.Down = true
   Key.Up = false
  else
   Key.Left = true
   Key.Right= false
  end if
else
  if var.mode = 0 then
   PPJoy.Analog1 = 0
  else if var.mode = 1 then
   Key.Up = false
   Key.Down = false
  else
   Key.Right= false
   Key.Left = false
  end if
end if

if var.BLFlag = 1 and var.BRFlag = -1 then
  if var.mode = 0 then
   PPJoy.Analog0 = 512
  else if var.mode = 1 then
   Key.Right = true
   Key.Left = false
  else
   Key.Down = true
   Key.Up = false
  end if

else if var.FLFlag = 1 and var.FRFlag = -1 then
  if var.mode = 0 then
   PPJoy.Analog0 = -512
  else if var.mode = 1 then
   Key.Left = true
   Key.Right= false
  else
   Key.Up = true
   Key.Down = false
  end if
else
  if var.mode = 0 then
   PPJoy.Analog0 = 0
  else if var.mode = 1 then
   Key.Right= false
   Key.Left = false
  else
   Key.Up = false
   Key.Down = false
  end if
end if

debug =var.FLFlag + " : " + var.FRFlag + " : " + var.BLFlag + " : " + var.BRFlag
//----------------------------------------


これでJoystcik setupのEnable Joystickをチェックするとバランスwiiボードで移動できます。
GrundSurfBoardなどに乗って使うと楽しいです。前回のキー入力に変換する方法との違いとして歩きながらしゃべることができます。そんな状況はあまり無いかもしれませんがface02

GlovePIEのスクリプトについては色々試しているところですがひとまずこんな感じで。


Posted by Keimar at 17:13│Comments(2)
この記事へのコメント
歩きながらしゃべる!ありますよ!プレゼンするときなどは動きでボードを示しながら話をすると格段に飽きません :)

ボイスじゃないとできないなぁと思ってたんですが、joystickを使うことでチャットでもできるわけですね。おもしろそうです。
Posted by Nock Forager at 2008年04月26日 17:52
>Nockさん
観光ガイドの時に使えるかなとは考えていましたがプレゼンですか。なるほど~
プレゼンで使う場合、足捌きになれないと落ち着かない人になりそうw
Posted by Keimar at 2008年04月26日 23:57
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。