x.pg14

センサーと制御とプログラム

システム構成: 写真

F201情報実習室内LAN

Scratch1.4(ローカルPC) OSCのアドレスパターンをメッセージとして、値をセンサー値として受信)

Scratch OSC Bridge (スクラッチからOSCのメッセージを送受信する中継アプリ)

Kinect v2 OSC (kinect のモーションキャプチャデータをOSCで実習室内にブロードキャスト配信。複数のプレイヤーに対応)

↑※ ソースコードが公開されているので、本来複数のプレイヤーを識別可能のものを、プレイヤー1名のみ識別するように修正した。

カメラに2名のプレイヤーが映ると、「分身」したようにプレイヤーの座標が2つ送信される

準備:

Scratch の起動

レポートフォルダ → プログラミング入門(こばし) → Scratch → Scratch.exe

Scratch-bridge-tuio.sb をデスクトップにコピー (これを後ほど提出)

Scratch-bridge-tuio.sb を Scratchにドラッグ&ドロップ

遠隔センサーを有効にする

Scratch_OSC_Bridgeの起動

レポートフォルダ → プログラミング入門(こばし) → Scratch_OSC_Bridge → Scratch_OSC_Bridge.exe

※起動と接続の確認: Scratch と Scratch_OSC_Bridge.exe が通信を始めると、スクラッチのプログラムの

ずっと の繰り返し処理が動き出す。

処理内容は、

「センサーの値を読み出し、センサーの値に滑らかさを加えて、スプライトのXY座標に設定する」

というもの。

Scratch で利用するKinectカメラと、センサーで取得する身体部位の情報を↓のように設定する。

ポートの設定

12345 SAを撮影する予定のカメラ (教室の前方 水曜5時間目はPepperを撮影)

※最初は、接続の練習のため、こちらを利用します。

54321 教卓の教員を撮影する予定のカメラ

65432 教室後方に設置したカメラ。受講生で、自由に利用してください。

※プレイヤーを交代した際に、プレイヤーIDが切り替わるので設定をしなおす必要があり。

↑の3台のカメラのうち、どれかを ADD PORT する。(最初は 12345)

OSCメッセージの選択 最初は1選択するメッセージは 1つに。 うまく動いたら、複数の身体部位の取得を試す。

※ 3つ目の部位を追加すると、不具合発生。使用する部位は、「2つ」までにしてください。

/BODIES/ プレイヤーID番号 /JOINTS/HEAD 頭の位置 ※← 最初はこちらで練習してみます。

/BODIES/ プレイヤーID番号 /JOINTS/HANDRIGHT 右手の位置

など。

設定例)

Scratchのセンサーの対象を設定しなおす。

※ ↑の「ずっと」が止まってしまったら、クリックして動かし続けておく(センサーの値を観察するため)

※Kinect で、HEADの値を1,2,3つ取得している。 X Y Z 座標 に対応する。

今回の演習では、XY座標のみ利用している。

Z座標を利用する場合は、スプライトの 大きさ の変更に Z座標を用いると、擬似3Dの表現ができる。

(接近→ 拡大、 離れる → 縮小)

課題制作

接続先のカメラを変更したり、取得する身体部位を 頭から 右手 などに修正したり、など、モーションキャプチャの

対象に応じて、スプライトのコスチューム(画像)を変更し、

・ゲーム

・楽器

などを企画して作成する。

※注意※ キャプチャーする身体部位の変更

・既に追加している部位をクリックして削除する

・その後、新しい部位を追加する

例) 避けゲーム。ゴーストのXY座標は、プレイヤーの頭の位置にリンクしている。

2対の敵キャラクターが画面を動き回るので、当たらないように、避け続ける。

重要: Kinect の撮影画面外にプレイヤーが外れると、プレイヤーが交代したように処理が進む。

プレイヤーIDが切り替わるので、センサーの設定をしなおす必要がある。

・ Scratch_OSC_Bridge で プレイヤーIDと部位の設定をしなおす

・ Scratch のセンサーの値を変更する。

↑※ Kinect V2 OSC を改造して、プレイヤーIDを000に統一した。今回の演習では複数のプレイヤーを識別しない。

衝突判定つきのキャラクターの作成例)

※キャラクターには、衝突したときのコスチュームを追加して、設定しておくこと。

※※ 動きブロックの「回す」コマンドで敵キャラクターの向きを斜めに設定すると、複雑に跳ね回るキャラクターになる。

※※※キャラクターの数を増やしてみよう。

課題の提出先:

WebClassの 第14回課題に、デスクトップの Scratch-bridge-tuio.sb をアップロード