改造版Scratchで、禰豆子になれるプログラムを作ってみた

2021-02-03

使った環境

Stretch3 という改造版Scratchの拡張機能「PoseNet2Scratch」を使いました。

Stretch3は、通常のScratchの様に、作ったプログラムをWeb上に保存できないので、「ファイル」→「コンピューターに保存する」で、パソコンに保存します。

準備

改造版Scratch「Stretch3」へアクセス

Chrome ブラウザで、stretch3.github.io を開きます。

拡張機能を追加

独自の拡張機能「Posenet2Scratch」を追加します。

これで、カメラに写っている顔の、目や鼻や手のXY位置を取得できるようになります。

ただ、口の位置は取得できません。いろんな形に変わるので、認識精度が上がらないからかな?

スプライト作成

竹のスプライトを作成。画力が…(汗)。画像をダウンロードして、不要部分を消したほうが見栄えがいいものができそう。

口の位置は取得できないので、鼻の位置を取得して、そのすこし下に竹を表示するため、中心から下へずらします。

プログラム

鼻の位置に移動させ続けるだけです。

もっと顔についてくるように

ただ、今のままだと、顔を傾けても竹は水平のまま。

カメラから離れても近づいても、竹は同じ大きさのまま

大きさを変える

左右の目の距離を求めて、それを基準にスプライトの大きさを変えます。

2つの点の距離を求める公式は↓

Scratchに2乗のブロックは無いので、掛け算で代用します。

傾きを変える

同じく左右の目の位置で傾きを求めて、スプライトの傾きを変えます。

2つの点のを通る直線の傾きを求める公式は

計算結果で出る角度は0度水平だけど、Scratchの角度は垂直が0度なので、90足して角度を変換します。

全体

ん~ん~