Slide 1

Slide 1 text

p5.jsを使ったクリエイティブコーディングに 機械学習やデバイス連携などを組み合わせている話 2022年12月18日 (日) Creative Coding作品の周辺を語る会 03 @オンライン 豊田陽介( ) @youtoy

Slide 2

Slide 2 text

自己紹介 豊田陽介( ) @youtoy ・IT系イベント主催、登壇や運営なども ・子ども向けの活動いろいろ ・ Microsoft MVP(2021/10 から) プライベートでの活動 ・ガジェット大好き ・今年、本2冊出したり、メーカーフェア出展3回 好きなことなど 3月発売 (共著) 7月発売 (単著)

Slide 3

Slide 3 text

p5.js と組み合わせている、 p5.js以外のライブラリやモノ

Slide 4

Slide 4 text

「画面の中」と「画面の外」 がつながる話

Slide 5

Slide 5 text

自己紹介に出てきたものでも機械学習の話が 豊田陽介( ) @youtoy ・IT系イベント主催、登壇や運営なども ・子ども向けの活動いろいろ ・ Microsoft MVP(2021/10 から) プライベートでの活動 ・ガジェット大好き ・今年、本2冊出したり、メーカーフェア出展3回 好きなことなど 3月発売 (共著) 7月発売 (単著) ブラウザ上でできる機械学習 と「p5.js」の話など ビジュアルプログラミング + IoT の作例を執筆

Slide 6

Slide 6 text

自己紹介に出てきたものでモノとつながる話 豊田陽介( ) @youtoy ・IT系イベント主催、登壇や運営なども ・子ども向けの活動いろいろ ・ Microsoft MVP(2021/10 から) プライベートでの活動 ・ガジェット大好き ・今年、本2冊出したり、メーカーフェア出展3回 好きなことなど 3月発売 (共著) 7月発売 (単著) 仙台での展示(途中): センサー + ロボットトイ +α の組み合わせ 最終的には、画面描 画でなくマット上に プロジェクション

Slide 7

Slide 7 text

p5.jsの描画に人・ロボットトイの動きが影響 p5.js公式サンプルの 「Kaleidoscope」の 入力や描画の色などを 変更 ■ マウス操作の軌跡   を入力にする部分 ⇒ ランダムに動く  ロボットトイの軌跡に (センサーで手が近づく  のを認識して、動き  の規則を変えたりも)

Slide 8

Slide 8 text

大垣のイベント出展の際に 「透明マント・光学迷彩の人 ですよね」と言われる

Slide 9

Slide 9 text

画面内の描画と画面外の人の動きがつながる p5.js の描画に「MediaPipe Hands」という仕組みを組み合わせ

Slide 10

Slide 10 text

思いついたことを 作って試すのが好きです (そして SNS などで共有したり)

Slide 11

Slide 11 text

p5.js を使おうと思ったきっかけ: とある機械学習の仕組みの サンプルコードで出てきた

Slide 12

Slide 12 text

つくばでのイベント出展準備で触れた技術 ブラウザ上で「画像・音・ポーズ(人の姿勢)」 を対象にした機械学習モデルが作成できたりする 「Teachable Machine」 の公式実装サンプルの中で登場

Slide 13

Slide 13 text

描画ではない部分でp5.js(+α)が使われる形 ■制作途中のものの動画 異なる音色・音の鳴らし方 を学習(鳴らす楽器類は ダイソーで安く仕入れた) 機械学習モデルを使い、 音によってロボットトイの 動きを変える仕組みを作成

Slide 14

Slide 14 text

この時も大人から子どもまでを対象に 物品選定や体験を設計、小さい子にも楽しんでもらえた!

Slide 15

Slide 15 text

この後も技術の話ではなく 事例集的な話が続きます

Slide 16

Slide 16 text

ハーフミラーを使った スマートミラー的なもの

Slide 17

Slide 17 text

ハーフミラーの後ろでp5.jsの描画 ハーフミラーの後ろに モバイルディスプレイなど を置いて描画を出力 黒背景の部分は鏡になって 明るい色の部分は鏡の上で 描画内容が見える

Slide 18

Slide 18 text

100均の透明下敷きで 擬似ホログラム

Slide 19

Slide 19 text

ペッパーズ・ゴーストと呼ばれるものを 透明下敷きで逆さまのピラ ミッドのようなものを作成 画面(iPad)の 4箇所に同 じ内容の方向違いの描画を 表示させて透明ピラミッド にうつす

Slide 20

Slide 20 text

デバイスの間をIoTの通信 でつなげてみる

Slide 21

Slide 21 text

2台のスマホ上のキャンバスをつなぐ 2台のスマホに別々に p5.js のキャンバスを用意 デバイス間で跳ね回る ボールの位置座標を IoT の 通信(MQTT)で共有 ※ 画面のつながりを縦 or   横方向に変える仕組み   も入れてみた

Slide 22

Slide 22 text

ブラウザでできるマーカーを 使うARとの組み合わせ

Slide 23

Slide 23 text

WebARのマーカー上に描画を重ねる 専用マーカーを使うARの ブラウザで動くものを利用 ボールが跳ねる描画をして いるキャンバスをARマー カーに重ねる (マーカーが回転すると  重力の方向も回転)

Slide 24

Slide 24 text

しゃべった内容を文字にして 画面の中で落下させてみる

Slide 25

Slide 25 text

しゃべった声が実体化して落下する ブラウザ内蔵の音声認識を 連続稼働させたり、文字に 対して物理演算を適用 声の大きさを文字の大きさ に反映させたりも

Slide 26

Slide 26 text

画面上の描画の動き・速度が LEDの点灯状態に連動

Slide 27

Slide 27 text

p5.jsで計算した位置・速度をLEDに反映 p5.jsで描画した動く円の 位置・速度を、USB接続し たデバイス(micro:bit) に送信 USB経由で受けとった数字 を元に LED の点灯位置を 変える

Slide 28

Slide 28 text

デバイス上のLEDの点灯位置と p5.jsでの図形描画位置が連動

Slide 29

Slide 29 text

傾きで移動するLEDの点灯位置を使った描画 micro:bit の傾き具合に よって LED の点灯位置を 変更 USB経由で受けとった点灯 位置の情報を使ってp5.js でブラウザ上の描画を実行

Slide 30

Slide 30 text

MIDIコントローラーでの操作を 描画に反映

Slide 31

Slide 31 text

スライダー・ノブの操作で色などを変える USB接続のMIDIコントロー ラーの操作結果をブラウザ で取得 取得した数値データを p5.jsの描画に反映させる

Slide 32

Slide 32 text

引き続き お試しを続けていきたい!

Slide 33

Slide 33 text

今日の話の中で使っていた技術の抜粋 ブラウザの API や JavaScriptライブラリ  ・Web Serial  ・Web Bluetooth  ・Web MIDI  ・Teachable Machine  ・MediaPipe シリアル通信   BLE   MIDIデバイス 機械学習 (他にもいろいろ便利なものがあります!)

Slide 34

Slide 34 text

終わり!

Slide 35

Slide 35 text

ゲームのコントローラーや 電子工作ができるボードを 組み合わせてみる

Slide 36

Slide 36 text

2台のスマホ上のキャンバスをつなぐ