2008年02月29日
バランスWiiボードでSecondlife
以前の記事でバランスWiiボードでSL内での移動ができたらいいのにと書きましたが、ようやくバランスWiiボードを手に入れたので試してみました。
ただいまWiiで爆走中
用意するもの
・Bluetooth アダプタ: 何でもよいと思います。僕はこれを使いました。
http://www.princeton.co.jp/product/mobile/ptmubt3s.html
小さいので邪魔になりません。青く点滅するのが気になりますが。 ちなみに東芝スタックというやつです。
・Wiiリモコン
一応つなげてありますが今回は特に使っていません。
・バランスWiiボード
(1)ソフトウェアのインストール
・GlovePIE
http://carl.kenner.googlepages.com/glovepie_download
・PPJoy
http://www.geocities.com/deonvdw/Docs/PPJoyMain.htm
仮想ジョイスティックソフトウェアです。
GlovePIEでジョイスティック入力をするときに使います。
Secondlifeの場合はジョイスティックでアバターの移動ができないのですが、一応入れました。
PPJoyのインストールはこちらを参考にしました。
http://chihara.naist.jp/people/STAFF/imura/computer/misc/virtual_joystick/disp_content
(2)WiiリモコンとバランスWiiボードの認識
WiiリモコンとバランスWiiボードの電池ケースのふたを開けて赤いSyncボタンを押してPCに認識させます。
Toshibaのbluetooth stackで認識させたところです。
(3)バランスWiiボードの設置
バランスWiiボードに立って乗るとPCが使いにくいので座布団引いて座りました。ここは各自のスタイルで^^
(4)GlovePIEの設定
GlovePIEを起動するとこのようなスクリプトのエディタ画面になります。
このエディタに独自のスクリプトとして設定を書いていきます。スクリプトが書ける人ならそんなに難しくはありません。
ひとまずバランスWiiボードの値を取得してみます。
Wiiリモコンをつないでいるので、Wiimote2がバランスWiiボードとなります。
データを取ってくるスクリプトは以下のような感じになります。
このスクリプトをGlovePIEのエディタに書いて、Runボタンを押すとボタンの横のdebug欄にバランスWiiボードの足の部分にある4のセンサの値が表示されます。
体を傾けて重心を変化させると値が変わります。各値は結構ばらついてるみたいです。
ただいまWiiで爆走中
用意するもの
・Bluetooth アダプタ: 何でもよいと思います。僕はこれを使いました。
http://www.princeton.co.jp/product/mobile/ptmubt3s.html
小さいので邪魔になりません。青く点滅するのが気になりますが。 ちなみに東芝スタックというやつです。
・Wiiリモコン
一応つなげてありますが今回は特に使っていません。
・バランスWiiボード
(1)ソフトウェアのインストール
・GlovePIE
http://carl.kenner.googlepages.com/glovepie_download
・PPJoy
http://www.geocities.com/deonvdw/Docs/PPJoyMain.htm
仮想ジョイスティックソフトウェアです。
GlovePIEでジョイスティック入力をするときに使います。
Secondlifeの場合はジョイスティックでアバターの移動ができないのですが、一応入れました。
PPJoyのインストールはこちらを参考にしました。
http://chihara.naist.jp/people/STAFF/imura/computer/misc/virtual_joystick/disp_content
(2)WiiリモコンとバランスWiiボードの認識
WiiリモコンとバランスWiiボードの電池ケースのふたを開けて赤いSyncボタンを押してPCに認識させます。
Toshibaのbluetooth stackで認識させたところです。
(3)バランスWiiボードの設置
バランスWiiボードに立って乗るとPCが使いにくいので座布団引いて座りました。ここは各自のスタイルで^^
(4)GlovePIEの設定
GlovePIEを起動するとこのようなスクリプトのエディタ画面になります。
このエディタに独自のスクリプトとして設定を書いていきます。スクリプトが書ける人ならそんなに難しくはありません。
ひとまずバランスWiiボードの値を取得してみます。
Wiiリモコンをつないでいるので、Wiimote2がバランスWiiボードとなります。
データを取ってくるスクリプトは以下のような感じになります。
//----------------------------------------
var.FL = Wiimote2.BalanceBoard.RawFrontLeft
var.FR = Wiimote2.BalanceBoard.RawFrontRight
var.BL = Wiimote2.BalanceBoard.RawBackLeft
var.BR = Wiimote2.BalanceBoard.RawBackRight
debug = var.FL+ " : " + var.FR + " : " + var.BL + " : " + var.BR
//----------------------------------------
このスクリプトをGlovePIEのエディタに書いて、Runボタンを押すとボタンの横のdebug欄にバランスWiiボードの足の部分にある4のセンサの値が表示されます。
体を傾けて重心を変化させると値が変わります。各値は結構ばらついてるみたいです。
この値を元に前後左右の入力を判別させてみます。
色々やり方はありそうですが今回は各センサの値からセンサ側に体重がかかっているかを3段階に分けて判別させ、各センサの判別結果を元に前後左右の判定をさせました。
//----------------------------------------
var.FL = Wiimote2.BalanceBoard.RawFrontLeft
if var.FL < 9900 then
nbsp;var.FLFlag = 1
else if var.FL > 10600 then
var.FLFlag = -1
else
var.FLFlag = 0
end if
//----------------------------------------
左前のセンサの判別部分です先ほどの値を元に範囲を決めています。この辺の値は試行錯誤して決めました^^;
他のセンサも同様に判別して結果を元に前後左右の入力を決めます。
これは前後入力の部分です。
//----------------------------------------
if var.FLFlag = 1 and var.FRFlag = 1 and var.BLFlag = 1 and var.BRFlag = 1 then
PPJoy1.Analog1 = -1
Key.Up = true
Key.Down = false
else if var.FLFlag = -1 and var.FRFlag = -1 and var.BLFlag = 0 and var.BRFlag = -1 then
PPJoy1.Analog1 = 1
Key.Down = true
Key.Up = false
else
PPJoy1.Analog1 = 0
Key.Up = false
Key.Down = false
end if
//----------------------------------------
セカンドライフはジョイスティックでアバターを動かせないのでカーソル入力に変換します。いちおうジョイスティックも設定しました。
PPJoy1.Analog1 = -1 でジョイスティックの上入力となります。
Key.Up = trueは上カーソルの入力、Key.Down = falseは下カーソルを離すことになります。
同様な感じで左右の判定を行います。PPJoy1.Analog0でジョイスティックの下入力となります。
作成したスクリプトは以下のようになりました。if文ばっかりです。
使われてる数値は僕の場合なので、これを使っててみる場合は、数値を調整する必要があります。
この辺のキャリブレーションができるかどうかは今後の課題です。
//----------------------------------------
// input
var.FL = Wiimote2.BalanceBoard.RawFrontLeft
var.FR = Wiimote2.BalanceBoard.RawFrontRight
var.BL = Wiimote2.BalanceBoard.RawBackLeft
var.BR = Wiimote2.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
if var.FLFlag = 1 and var.FRFlag = 1 and var.BLFlag = 1 and var.BRFlag = 1 then
PPJoy1.Analog1 = -1
Key.Up = true
Key.Down = false
else if var.FLFlag = -1 and var.FRFlag = -1 and var.BLFlag = 0 and var.BRFlag = -1 then
PPJoy1.Analog1 = 1
Key.Down = true
Key.Up = false
else
PPJoy1.Analog1 = 0
Key.Up = false
Key.Down = false
end if
if var.FLFlag = -1 and var.BLFlag = 1 and var.BRFlag = 0 then
PPJoy1.Analog0 = 1
Key.Right = true
Key.Left = false
else if var.FLFlag = 1 and var.FRFlag = 0 and var.BLFlag = 0 and var.BRFlag = 1 then
PPJoy1.Analog0 = -1
Key.Left = true
Key.Right= false
else
PPJoy1.Analog0 = 0
Key.Right= false
Key.Left = false
end if
debug =var.FLFlag + " : " + var.FRFlag + " : " + var.BLFlag + " : " + var.BRFlag
//----------------------------------------
いちおうこんな感じで動かしてみました。
座ったまま体を傾けるとアバターが前後に動きます。左右に傾けるとアバターの向きが変わります。
ジョイスティックで動かせるといいんですけどね~
あとは重心移動でうまく動くためにはスクリプトの調整か、WiiFitでのトレーニングが必要なところです。
ちょっと設定を変えてFurry JapanのNemoさんによる水陸両用のGroundSurfboardに乗ってみました。
バランスWiiボードの体重移動とGroundSurfboardの動きが一致してなかなか面白いです。
う〜ん、文字ばっかりの記事でつらい…
本来ならここでボードに乗りながらSLをしているところを動画にするべきなのでしょうが機材が無いので省略させていただきます。
機材が無いので。えへへ
Posted by Keimar at 19:40│Comments(3)
│Wiiリモコン
この記事へのコメント
カコイイ~!
Posted by Nock Forager at 2008年03月01日 00:10
かっちょいいぃ〜2
「えへへ」 <--気になります w
SL内で、やってるとこ再現してください w
「えへへ」 <--気になります w
SL内で、やってるとこ再現してください w
Posted by taro_bosatsu at 2008年03月04日 05:28
あはは。ムービーで作れたらいいと思うのですが、機材も無いですし自分を晒すのが。。。w
直接デモをお見せできないのがちょっと残念^^
直接デモをお見せできないのがちょっと残念^^
Posted by Keimar at 2008年03月10日 01:47