scratch3.0の拡張機能である「ビデオモーションセンサー」を使ったスクラッチプログラミングに挑戦をしてみます。PCに内臓されているカメラもしくは接続したカメラを利用し、動作状態を検知してロボット動かしたりすることもできます。

ビデオモーションセンサーのロード

まずはスクラッチを起動し、拡張機能からビデオモーション機能の追加を行います。

ビデオーモーションセンサーロード時のデフォルト

ロードをするとデフォルトではPCが認識しているカメラを起動し、スクラッチのステージ上にカメラで取得している映像が表示されます。
カメラで撮影している画像は、透明度が50%になっているので少し薄暗い感じに見えます。

1.ビデオーモーションセンサーのブロック〇のとき

基本的に、ビデオモーションセンサーはカメラが取得した映像の動き(モーション)を検知する機能です。
スクラッチでは撮影しているビデオモーションが、ステージまたはスプライトに対してのどんな動きがあったのかを検知します。
動きを検知するためのレベル数値を1~100までで指定し、そのレベルの時にどう処理するのかというプログラムを作ります。

[ビデオモーション>〇のとき]ブロックは、イベント駆動型のブロックで、このブロックをスクラッチのスクリプトエリアに置いたとたんに検知動作がずっと働き、指定したレベルより大きい場合に、このブロックの下の処理が動作します。
指定できるビデオモーションの数値は1~100までで、数値によっての反応の仕方は数値が小さいほど敏感で大きいほど鈍くなるようです。
※ちなみに1にした場合にはとにかく反応しっぱなしになりました。また100を指定すると全く反応しません。
※数値については、自分のプログラムでいろいろ試してみるとよいでしょう。

実験プログラム

まずは簡単なビデオモーションセンサーのプログラムです。
Catのスプライトのスクリプトエリアに上記のプログラムを置き、カメラがONになっていることを確認し、Catスプライトにかかるように撮影されている手でも動かすと440Hzの音がなります。

2.スプライト▼のビデオのモーション▼のブロック

このスプライトは スプライト▼ か  ステージ▼ のビデオの モーション▼ か 向き▼ の値を取得するブロックです。
値が取れるブロックなので、どんな動きに対してどんな値が取れるのか変数に代入して表示させてみました。
が、あまり理解できていません。ぜひ解明をして使ってみてください。

残りの2つのブロック[ビデオを入▼]にする[ビデオの透明度を50にする]ブロックはその文字の通りの動きをしますので、必要な時に適宜使用することになります。

ビデオモーションでクムクムを動かす

ステージ上に3つのスプライトを置き、各スプライトのスクリプトに3つの動きを作りました。
正面のスプライトの背景でモーションが起こればクムクムの顔をまっすぐ向け、左右それぞれのスプライトでビデオモーションがあればそれぞれの方向に顔を回転します。

Catの動き

Catスプライトでの動きはクムクムロボットの顔を真正面にまっすぐに向ける動きにしました。

Batの動き

Batスプライトでの動きはクムクムロボットの顔を右に向ける動きにしました。

Bellの動き

Bellスプライトでの動きはクムクムロボットの顔を左にまっすぐに向ける動きにしました。

robopro.site では…

近日オープン予定の robopro.siteでは、これらのテクニックを駆使してクムクムロボット楽しく動かすプログラムなどもどんどん紹介していく予定です。
ご期待ください。