l4P5 (beta-003) | 2009-05-05 20:38 |
Loc (beta-005) | 2009-05-05 20:33 |
wrj4p5 (alpha-011) | 2009-05-05 20:41 |
ご存知、Wiiリモコンを使うと、
ゲームアイテムの優れもの。
工学的には
を単三アルカリ二本で駆動する独立装置
Bluethoothを装着したパソコンの入出力装置としてみると、非常〜に興味深い。 でもって、P5で扱えると、あんなことや、こんなことが、いろいろ出来てしまう。 なので、Wiiリモコンを扱えるP5のクラスライブラリーを開発してみた。
- class PApplet
- 必要なら下記メソッドは各自用意すべし
- 【event handling methods】
- void boardPressed(int bid)
- バランスボードのボタンが押されたときに呼ばれる。
- void boardReleased(int bid)
- バランスボードのボタンが放されたときに呼ばれる。
- void buttonPressed(RimokonEvent ev, int rid)
- Wiiリモコンのボタンが押されたときに呼ばれる。
- void buttonReleased(RimokonEvent ev, int rid)
- Wiiリモコンのボタンが放されたときに呼ばれる。
- void nunchakuPressed(NunchukEvent ev, int rid)
- ヌンチャクのボタンが押されたときに呼ばれる。
- void nunchakuReleased(NunchukEvent ev, int rid)
- ヌンチャクのボタンが放されたときに呼ばれる。
- void kurakonPressed(KurakonEvent ev, int rid)
- クラコンのボタンが押されたときに呼ばれる。
- void kurakonReleased(KurakonEvent ev, int rid)
- クラコンのボタンが放されたときに呼ばれる。
- void guitarPressed(GuitarEvent ev, int rid)
- ギターのボタンが押されたときに呼ばれる。
- void guitarReleased(GuitarEvent ev, int rid)
- ギターのボタンが放されたときに呼ばれる。
- void drumPressed(DrumEvent ev, int rid)
- ドラムのボタンやペダルが押されたときに呼ばれる。
- void drumReleased(DrumEvent ev, int rid)
- ドラムのボタンやペダルが放されたときに呼ばれる。
- void disconnected(int rid)
- (いずれかの)Wiiリモコンが切り離されたときに呼ばれる。
- void exDisconnected(int rid)
- (いずれかの)Wiiリモコンからヌンチャク/クラコンが切り離されたときに呼ばれる。
リモコンを最大7台まで繋げられ、各リモコンにはヌンチャクかクラコンを繋げられる。
- class WRJ4P5
- 【property】
- int dCount 繋がっているWii装置(リモコン/ボード)の数
- int rCount 繋がっているWiiリモコンの数
- int bCount 繋がっているバランスボードの数
- WiiBoard board 最初に繋がったバランスボード
- WiiBoard board(int rid) (最大7台の)繋がっているバランスボード
- WiiRimokon rimokon 最初に繋がったWiiリモコン
- WiiRimokon rimokon(int rid) (最大7台の)繋がっているリモコン
- WiiNunchaku nunchaku 最初に繋がったWiiリモコンに繋がっているヌンチャク
- WiiNunchaku nunchaku(int rid) 各Wiiリモコンに繋がっているヌンチャク
- WiiKurakon kurakon 最初に繋がったWiiリモコンに繋がっているクラコン
- WiiKurakon kurakon(int rid) 各Wiiリモコンに繋がっているクラコン
- WiiGuitar guitar 最初に繋がったWiiリモコンに繋がっているギター
- WiiGuitar guitar(int rid) 各Wiiリモコンに繋がっているギター
- 【constructor】
- Wrj4P5(PApplet parent) 唯一のコンストラクタ
- 【methods】
- Wrj4P5 connect() 一個のWiiリモコン/ボードを繋げる(処理をブロックしない)
- Wrj4P5 connect(int n) = connect(n, false, false)
- Wrj4P5 connect(boolean ir) = connect(1, ir, false)
- Wrj4P5 connect(int n, boolean ir) = connect(n, ir, false)
- Wrj4P5 connect(int n, boolean ir, boolean log) = connect(n, ir, log, 2)
- Wrj4P5 connect(int n, boolean ir, boolean log, int sense)
- int n : 繋げるリモコン/バランスボードの数(処理をブロックしない)
- bool ir : EX(拡張コントローラを使う - ディフォルト) / IR(IRスポットサイズ)
- bool log: 詳細ログの要否(false=ラフなログ、デフォルト)
- int sense: IR-Cameraの感度(0〜4、2がデフォルト)
- class WiiBoard
- [members]
- float sensed[2][2]; : 四隅の計測重量.(Kg)
- float psensed[2][2]; : 直前の計測値
- float weight; : 平均重量(Kg)
- float pweight; : 直前の平均重量
- float topRight; : 右上隅の計測重量(=sensed[0][0])
- float bottomLeft; : 左下隅の計測重量(=sensed[1][1])
- float topLeft; : 左上隅の計測重量(= sensed[0][1])
- float bottomRight; : 右下隅の計測重量(= sensed[1][0])
- boolean isIlluminated; :LEDのステータス(オン/オフ)
- [connection/communication]
- :<status>
- void disconnect() Wiiボードとの接続を切る
- boolean isConnected() Wiiボードとの接続を確かめる
- void requestStatus() Wiiボードの(バッテリやLED等の)最新状態を取得し始める。
- boolean isReadingData() Wiiボードの状態を取得中かどうかを確かめる。
- :<Battery>
- float getBatteryLevel() バッテリー残量を得る(0〜1)
- :<LED Lights>
- boolean isLED() : LEDライトの点灯を確かめる。
- void setLED(boolean illumination) : LEDライトをOn/Offする
- :<utils> 【New !】
- Loc guessCoG() : 重心位置を推定する。(0〜1,0〜1)
- boolean isleftZone() : 重心位置は左サイドにあるか?
- boolean isTopZone() : 重心位置はトップ(前方)サイドにあるか?
- boolean isCentralZone(float tol) : 許容範囲内で重心位置は中央部にあるか?
- boolean isCentralZone() : 同上(許容範囲は0.4固定)
- class WiiRimokon
- 【propaties】
- Loc sensed センサー計測値(G)
- Loc acc 加速度(m/sec/sec)
- // Loc vel 速度(m/sec)
- // Loc pos 位置(m)
- // Loc angAcc 角加速度(rad/sec/sec)-ヌンチャク必須
- // Loc angVel 角速度(rad/sec)-ヌンチャク必須
- // Loc direction 方向(rad)ーヌンチャク必須
- WiiNunchaku nunchaku
- WiiKurakon kurakon
- WiiGuitar guitar
- WiiDrum drum
- Loc[] irLights; 検出されているスポットの二次元座標と半径 (x座標、y座標、半径)
- - length of irLights[] is always 4.
- - when no light is, it¥'s value is (-1, -1, -1)
- - when IRMode¥'ir¥' is Wrj4P5.EX, it¥'s value is (x, y, -1), default
- - when IRMode¥'ir¥' is Wrj4P5.IR, it¥'s value is (x, y, s)
- *where x:0to1, y:0to1, s:size. (origin is at Left-Bottom)
- - If irMode¥'ir¥' is set to be Wrj4P5.IR, any extention is not available.
- 【methods】
- <Attitude of 'me'>
- float stablePitch() : 現在のピッチ(縦揺れ角、ラジアン), 安定状態の時のみ正確
- float stableRoll() : 現在のロール(横揺れ角、ラジアン), 安定状態の時のみ正確
- <connection/communication>
- void disconnect() Wiiリモコンとの接続を切る
- boolean isConnected() Wiiリモコンとの接続を確かめる
- boolean isExtensionConnected() Wiiリモコンに拡張デバイスが繋がっているか?
- void requestStatus() Wiiリモコンの(バッテリやLED等の)最新状態を取得し始める。
- boolean isReadingData() Wiiリモコンの状態を取得中かどうかを確かめる。
- <Battery>
- float getBatteryLevel() バッテリー残量を得る(0〜1)
- <LED Lights>
- boolean[] getLEDs() (4本の)LEDライトの状態を得る。
- boolean isLEDIlluminated(int light) 指定されたLEDライトの点灯を確かめる。
- void setLED(int light, boolean illuminated) 指定されたLEDライトをOn/Offする。
- void setLEDs(boolean[] lightStatus) (4本)全てのLEDライトをOn/Offする。
- <Speaker>
- void bufferSound(AudioInputStream audioIn) signed 8-bit PCM で準備する。
- float getSpeakerVolume() スピーカの音量(0〜1)を確かめる。
- void setSpeakerVolume(float volume) スピーカの音量(0〜1)をセットする。
- boolean isPlayingSound() サウンドを流している状態かを確かめる。
- void playPrebufferedSound() 準備したサウンドを流す。
- void playSound(AudioInputStream audioIn) AudioInputStreamサウンドを流す。
- void stopSound() サウンドを止める。
- <Vibrator>
- boolean isVibrating() 振動が続いているか確かめる。
- float getVibrationMagnitude(int magnitude) 振動の強さ(0〜1)を確かめる。
- void setVibrationMagnitude(int magnitude) 振動の強さ(0〜1)をセットする。
- void startVibrating() 現在の強さで振動を開始する。(止めるまで止まらない)
- void vibrateFor(long time) 現在の強さで指定時間、継続する振動を開始する。
- void stopVibrating() 振動を止める。
これだけじゃ、足りない。
Wiiリモコンの状態を表すクラス
- class RimokonEvent
- 【Constants】
- static int A Aボタン
- static int B Bボタン
- static int DOWN ↓ボタン
- static int HOME HOMEボタン
- static int LEFT ←ボタン
- static int MINUS -ボタン
- static int ONE 1ボタン
- static int PLUS +ボタン
- static int RIGHT →ボタン
- static int TWO 2ボタン
- static int UP ↑ボタン
- 【Constructor】
- RimokonEvent()
- 【Method】
- boolean isPressed(int btnMask) 指定された(複数の)ボタンが全て押されているか?
- boolean isOnlyPressed(int btnMask) 指定された(複数の)ボタン【だけ】が・・・?
- boolean isAnyPressed(int btnMask) 指定された(複数の)ボタンの【いずれか】が・・?
- boolean wasPressed(int btnMask) 指定された(複数の)ボタンが全て【今】・・・?
- boolean wasOnlyPressed(int btnMask) 指定された(複数の)ボタン【だけ】が全て【今】・?
- boolean wasReleased(int btnMask) 指定された(複数の)ボタンのいずれかが【今】放されたか?
がついている。
これだけじゃ、足りない。
ヌンチャクの状態を表すクラス
- class NunchakuEvent
- 【Constants】
- static int C Cボタン
- static int Z Zボタン
- Loc Stick スティックの位置(%)
- 【Constructor】
- NunchakuEvent()
- 【Method】
- boolean isPressed(int btnMask) 指定された(複数の)ボタンが全て押されているか?
- boolean isOnlyPressed(int btnMask) 指定された(複数の)ボタン【だけ】が・・・?
- boolean isAnyPressed(int btnMask) 指定された(複数の)ボタンの【いずれか】が・・・?
- boolean wasPressed(int btnMask) 指定された(複数の)ボタンが全て【今】・・・?
- boolean wasOnlyPressed(int btnMask) 指定された(複数の)ボタン【だけ】が全て【今】・?
- boolean wasReleased(int btnMask) 指定された(複数の)ボタンのいずれかが【今】放されたか?
三軸加速度センサーは無いけど、
がついている。
さらに加えて
クラコンの状態を表すクラス
- class KurakonEvent
- 【Constants】
- static int A Aボタン
- static int B Bボタン
- static int DPAD_DOWN ↓ ボタン
- static int DPAD_RIGHT →ボタン
- static int DPAD_LEFT ← ボタン
- static int DPAD_UP ↑ボタン
- static int HOME HOMEボタン
- static int MINUS ?ボタン
- static int PLUS +ボタン
- static int LEFT_TRIGGER Lトリガーボタン
- static int RIGHT_TRIGGER Rトリガーボタン
- static int LEFT_Z L-Zボタン
- static int RIGHT_Z R-Zボタン
- static int X Xボタン
- static int Y Yボタン
- 【Constructor】
- KurakonEvent()
- 【Method】
- boolean isPressed(int btnMask) 指定された(複数の)ボタンが全て押されているか?
- boolean isOnlyPressed(int btnMask) 指定された(複数の)ボタン【だけ】が・・・?
- boolean isAnyPressed(int btnMask) 指定された(複数の)ボタンの【いずれか】が・・?
- boolean wasPressed(int btnMask) 指定された(複数の)ボタンが全て【今】・・・?
- boolean wasOnlyPressed(int btnMask) 指定された(複数の)ボタン【だけ】が全て【今】・?
- boolean wasReleased(int btnMask) 指定された(複数の)ボタンのいずれかが【今】放されたか?
三軸加速度センサーは無いけど、
がついている。
さらに加えて
ギターの状態を表すクラス
- class GuitarEvent
- 【Constants】
- final static int BLUE
- final static int GREEN
- final static int ORANGE
- final static int RED
- final static int STRUM_DOWN
- final static int STRUM_UP
- final static int YELLOW
- final static int MINUS
- final static int PLUS
- 【Constructor】
- GuitarEvent()
- 【Method】
- boolean isPressed(int btnMask) 指定された(複数の)ボタンが全て押されているか?
- boolean isOnlyPressed(int btnMask) 指定された(複数の)ボタン【だけ】が・・・?
- boolean isAnyPressed(int btnMask) 指定された(複数の)ボタンの【いずれか】が・・・?
- boolean wasPressed(int btnMask) 指定された(複数の)ボタンが全て【今】・・・?
- boolean wasOnlyPressed(int btnMask) 指定された(複数の)ボタン【だけ】が全て【今】・?
- boolean wasReleased(int btnMask) 指定された(複数の)ボタンのいずれかが【今】放されたか?
- Loc getStick() // get the current stick 2D(Loc) position. (-1 to 1)
- float getWhammyBar() // get the current amount the whammy bar is pushed. (0 to 1)
- }
三軸加速度センサーは無いけど、
がついている。
さらに加えて
ドラムの状態を表すクラス
- class DrumEvent
- 【Constants】
- final static int BLUE
- final static int GREEN
- final static int ORANGE
- final static int RED
- final static int PEDAL
- final static int YELLOW
- final static int MINUS
- final static int PLUS
- 【Constructor】
- DrumEvent()
- 【Method】
- boolean isPressed(int btnMask) 指定された(複数の)ボタンが全て押されているか?
- boolean isOnlyPressed(int btnMask) 指定された(複数の)ボタン【だけ】が・・・?
- boolean isAnyPressed(int btnMask) 指定された(複数の)ボタンの【いずれか】が・・・?
- boolean wasPressed(int btnMask) 指定された(複数の)ボタンが全て【今】・・・?
- boolean wasOnlyPressed(int btnMask) 指定された(複数の)ボタン【だけ】が全て【今】・?
- boolean wasReleased(int btnMask) 指定された(複数の)ボタンのいずれかが【今】放されたか?
- Loc getStick() // get the current stick 2D(Loc) position. (-1 to 1)
- float getSoftness() // no hit (0.0) to the hardest hit(1.0), (0 to 1)
- int getSoftnessPad() // pad id, the softness was sensed. (symbal/bass)
- }
[ページ情報]
更新日時: 2009-03-02 00:42:32, 更新者: classiclll
[ライセンス]
クリエイティブ・コモンズ 2.1 表示-継承
[権限]
表示:無制限, 編集:ログインユーザ, 削除/設定:メンバー