Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
p5.jsを使ったクリエイティブコーディングやJavaScriptによる機械学習・デバイス制御...
Search
you(@youtoy)
PRO
October 19, 2022
Technology
2
810
p5.jsを使ったクリエイティブコーディングやJavaScriptによる機械学習・デバイス制御などの処理と組み合わせる話 / PWA Night vol.44
you(@youtoy)
PRO
October 19, 2022
Tweet
Share
More Decks by you(@youtoy)
See All by you(@youtoy)
総額200円の入力インターフェースで年齢問わず楽しめる体験型展示 / エンジニアの自由研究発表会vol.10
you
PRO
0
57
Node−RED で Ollama を使ったローカルLLM(node-red-contrib-ollamaを利用) / ビジュアルプログラミングIoTLT vol.20
you
PRO
0
170
AIエージェント開発や最新の生成AIのAPI利用などJavaScriptで色々やってみる / IoTLT vol.123
you
PRO
0
100
ChatGPT からモックサーバー宛(Beeceptor宛)の HTTPリクエストを試す / IoTLT 202504
you
PRO
0
97
デモをまじえつつの生成AIの話題 / 横須賀プログラミング“夢”アカデミー発表会(2025年3月)
you
PRO
0
49
もくはりでのモノ作りと自身のモノ作り活動 / もくはり文化祭2024 オープン記念イベント
you
PRO
0
55
"かわいい" がテーマのハッカソンでWebの技術を使って魔法の世界を作った話など / HTML5 10th Anniversary
you
PRO
0
110
ブラウザで AI・機械学習が扱える TensorFlow.js が使われているライブラリなどの話 / #さくらのAI Meetup vol.4「ブラウザ」
you
PRO
0
230
Blynk と Raspberry Pi Pico W で IoT 〜 MQTT・HTTPリクエストの組み合わせも 〜 / IoTLT vol.114
you
PRO
0
2.5k
Other Decks in Technology
See All in Technology
從四件事帶你見識見識 事件驅動架構設計 (EDA)
line_developers_tw
PRO
0
160
AWS と定理証明 〜ポリシー言語 Cedar 開発の舞台裏〜 #fp_matsuri / FP Matsuri 2025
ytaka23
9
2.5k
上長や社内ステークホルダーに対する解像度を上げて、より良い補完関係を築く方法 / How-to-increase-resolution-and-build-better-complementary-relationships-with-your-bosses-and-internal-stakeholders
madoxten
13
7.9k
宇宙パトロール ルル子から考える LT設計のコツ
masakiokuda
2
110
RubyOnRailsOnDevin+α / DevinMeetupJapan#2
ginkouno
0
770
(新URLに移行しました)FASTと向き合うことで見えた、大規模アジャイルの難しさと楽しさ
wooootack
0
760
CI/CDとタスク共有で加速するVibe Coding
tnbe21
0
210
「実体」で築く共通認識: 開発現場のコミュニケーション最適化 / Let's Get on the Same Page with Concrete Artifacts: Optimization of Communication in dev teams
kazizi55
0
150
今からでも間に合う! 生成AI「RAG」再入門 / Re-introduction to RAG in Generative AI
hideakiaoyagi
1
190
Azure AI Foundryでマルチエージェントワークフロー
seosoft
0
110
産業機械をElixirで制御する
kikuyuta
0
180
LinkX_GitHubを基点にした_AI時代のプロジェクトマネジメント.pdf
iotcomjpadmin
0
120
Featured
See All Featured
Site-Speed That Sticks
csswizardry
10
640
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Balancing Empowerment & Direction
lara
1
310
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Optimizing for Happiness
mojombo
379
70k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
780
Stop Working from a Prison Cell
hatefulcrawdad
269
20k
The Invisible Side of Design
smashingmag
299
51k
Transcript
p5.jsを使ったクリエイティブコーディングやJavaScriptによる 機械学習・デバイス制御などの処理と組み合わせる話 2022年10月19日 (水) PWA Night vol.44 @オンライン 豊田陽介( )
@youtoy
自己紹介 豊田陽介( ) @youtoy ・IT系イベント主催、登壇や運営なども ・子ども向けの活動いろいろ ・ Microsoft MVP(2021/10 から)
プライベートでの活動 ・ガジェット大好き ・今年、本2冊出したり、メーカーフェア出展3回 好きなことなど 3月発売 (共著) 7月発売 (単著)
自己紹介 豊田陽介( ) @youtoy ・IT系イベント主催、登壇や運営なども ・子ども向けの活動いろいろ ・ Microsoft MVP(2021/10 から)
プライベートでの活動 ・ガジェット大好き ・今年、本2冊出したり、メーカーフェア出展3回 好きなことなど 3月発売 (共著) 7月発売 (単著) 作例の実装方法は主に 2つ、 うち 1つが「p5.js」
スライドを公開するので 発表中は文字などの記載を 追わなくても大丈夫です
クリエイティブコーディングで 作るものは、自分の場合は以下に 関するものが多いです ・動きや変化がある ・インタラクション ・デバイス連携 ※ 自分個人の好みにより
「クリエイティブコーディング」について クリエイティブ・コーディングとは、コンピュータ・ プログラミングの一種で、機能的なものではなく表現的な ものを作ることを目的としたものです。ライブ映像の制作や VJをはじめ、ビジュアルアートやデザイン、ゲームなどの エンターテインメント、アートインスタレーション、 プロジェクションマッピング、サウンドアート、広告、 プロダクトプロトタイプなどの制作に利用されています。 出典: Wikipedia「Creative
coding」の冒頭部分を DeepL で機械翻訳 https://en.wikipedia.org/wiki/Creative_coding
この後の話の方向性
p5.js を使ったクリエイティブ コーディングについては 既に話されていそうなので...
None
p5.jsを用いた表現を多様化させるための ブラウザで動く機械学習・デバイス制御の技術 〜 それらを使った事例集 〜 2022年10月19日 (水) PWA Night vol.44
@オンライン 豊田陽介( ) @youtoy
できることの事例集と 利用した技術を多く紹介
いきなりですが デモをご覧ください
ライブデモ! 機械学習による手の認識 + p5.js によるパーティクル
【動画】ブラウザで手・指の位置検出+p5.jsによる描画 両手の指先に炎が 灯っていく
【動画】ブラウザで手・指の位置検出+p5.jsによる描画 光学迷彩・透明マント のような表現 その2
いったん デモで用いた技術の話へ
ブラウザで動く 機械学習(手の認識)
「MediaPipe」のJavaScript版のHands MediaPipe Hands 画像から手のキーポイント の位置(複数)を認識 ※ 指を立てたかどうかの判定は 位置座標などから自前で計算
TensorFlow.jsベースのため ブラウザ上で動作
取得した座標をそのまま使う、 座標間の位置関係や距離の計算など を行って活用
手の位置、指の位置、 折り曲げた/伸ばした等の状態、 手や指の位置関係などを活用できる
炎のような見た目の描画
パーティクル・システムについて ゲーム物理、モーショングラフィックス、コンピュータ グラフィックなどで使われる技術のひとつで、たくさん の細かいスプライト画像、3Dモデル、またはその他のCG オブジェクトを使って、ある種の「ファジー」な現象を シミュレートするもの 出典: Wikipedia「パーティクル・システム」より
円が吹き出す仕組みに手を加えると... 透明度付き PNG画像に 置きかえ 煙が 吹き出す 色の 加算処理 (合成) 炎の
ゆらめき? 円が出てくる (基本のサンプル でよくある)
単純な重ね合わせではない描画 p5.js の「blendMode()」 ADD SCREEN 重ねた色は明るくなる 重ねた色は明るくなるが ADD より少し弱め 単純な
重畳 ADD SCREEN ※ Canvas の「globalCompositeOperation」 という API による
その他にもたくさんの バリエーションが
動画:フィルターと組み合わせたグローエフェクト マウス操作連動 +パーティクル +色の合成 +フィルター
様々な見た目を作ったり、 画像エフェクト的な描画にも便利!
MediaPipe の 他のバリエーション
MediaPipe JavaScript版で扱えるもの 手を対象としたもの以外の一部を紹介 MediaPipe Face Mesh MediaPipe Holistic
試してみた時の様子 (Holistic から)
【動画】顔のキーポイント検出・姿勢推定とアニメーション 目・口・体の動きと ネコ画像が連動
仕組みに関する補足 ※ ネコの画像は画像 ジェネレーターの サービスを活用 ネコ画像・カメラ画像 の描画:p5.js 顔認識や姿勢推定:
MediaPipe Holistic
画像を用意して動かすところの元になったのは ←こちらの動作する様子と以下の情報より ・イラストはジェネレーターを使って用意 ・4パターンを組み合わせせる: 「目を開いている/閉じている、口を 開けている/閉じている」 ・体を少し揺らすような動きを入れると 良い感じに
MediaPipe Facemesh の機能追加を最速で 試してみた時のもの
【動画】顔のキーポイント検出(虹彩も)と描画 虹彩の位置も とれる顔認識
顔・目・口などの位置・動きや、 上半身・下半身・全身の動き・ ポーズなど様々利用できる!
MediaPipe以外でも: 「Handtrack.js」 ※ 手の開閉のイベントをとれる
【動画】物理演算エンジンにSVGフィルターも組み合わせた 手の開閉の認識 +物理演算エンジン +SVGフィルター (溶けるような見た目)
物理演算エンジン Matter.js (p5-matter というのもあるけど) SVGフィルターは feGaussianBlur と feColorMatrix
ブラウザで扱える仕組みを 様々組み合わせるのも楽しい!
MediaPipe のバリエーション の1つをサクッと紹介
【動画】人物と背景の分離:「MediaPipe Selfie Segmentation」 デバッグ用情報 (画面上部 3つ)と 処理結果を表示
デバイスを 連携させる話へ
JavaScriptで外部デバイスとの通信 ブラウザ上で実行 Node.js ・Web Serial ・Web Bluetooth ・Fetch API ・axios等を利用
・WebSocket API ・MQTT.js等を利用 ・Node Serialport ・noble・bleno ・Fetch API ・axios等を利用 ・ws等を利用 ・MQTT.js等を利用 シリアル通信 BLE HTTPリクエスト WebSocket MQTT
この後に出てくるもの ブラウザ上で実行 Node.js ・Web Serial ・Web Bluetooth ・Fetch API ・axios等を利用
・WebSocket API ・MQTT.js等を利用 ・Node Serialport ・noble・bleno ・Fetch API ・axios等を利用 ・ws等を利用 ・MQTT.js等を利用 シリアル通信 BLE HTTPリクエスト WebSocket MQTT
デバイス間をMQTT (リアルタイム通信)でつなぐ
【動画】物理演算エンジンでの描画を画面間で 2台の iPad上の描画 を擬似的につなぐ
【動画】物理演算エンジンでの描画を画面間で スマホ間を擬似的に つなぎ、動的に位置 関係を変える
ローカルに MQTTブローカー (仲介役)をたてて、 MQTT.js でリアルタイム通信
複数デバイス(画面・ブラウザ) を連動させた作品を作れる!
有線の通信(シリアル通信) を扱う
【動画】micro:bitとのシリアル通信を利用 micro:bit + LED テープと p5.js を 連動させる試作
【動画】M5Stack・micro:bitとのシリアル通信 ジョイスティック の操作と円の動き の連動 p5.js内の円の移動 処理と LEDテープ の点灯位置の連動
Chrome系で使える Web Serial API による実装
様々なデバイスが対応している シリアル通信で データの読み書きを活用できる!
センサーの値を読み取ったり、 モーター・LED などの制御を 実行したり(書き込み)
他の有線での通信: Web MIDI API ※ デバイスが限定されるけれど...
【動画】MIDI対応デバイスとp5.jsを連動させる MIDI対応の物理 コントローラーの ノブ・フェーダー の操作を利用
BLE通信を扱う
【動画】ロボットトイ(toio)6台をBluetoothで制御 片手の指の距離に 応じた toio の 同時制御のON/OFF (通信は PC→toio)
【動画】toioの動き(位置座標)を取得して描画 toio専用マットで取得可能 な位置座標を入力に利用 ⇒ 入力を元にした万華鏡の ような描画 (通信は toio→PC)
Chrome系で使える Web Bluetooth API による実装
BLE での読み書き・通知 (Read・Write・Notify) の双方向通信が一通り扱える!
能動的な処理 (センサー・モーター・LED などを扱うもの) 受動的な処理 (デバイス側からの値の変化に応じた通知) の両方を活用できる
他の事例も掲載してみる (今回のトピック外のもの)
物理工作 + p5.js
【動画】擬似ホログラム(ペッパーズ・ゴースト) ダイソーの透明な 下敷きを切り貼り、 擬似ホログラム用の 表示を iPad で
WebAR + p5.js
【動画】WebARでのマーカー利用のARと組み合わせる ARマーカーに描画を 重畳、マーカーの向きの 変化と描画を連動させる (p5.js + TweenJS + A-Frame +
AR.js )
Leap Motion + p5.js
【動画】Leap Motionによる両手のセンシング 空中での両手や指 の位置を認識 (JavaScriptライブラリを使う or WebSocket を利用)
p5.jsの3D描画を扱う
【動画】3D描画とフィルター/ノイズの組み合わせ p5.js の標準機能のみ
ブラウザ上でのJavascriptの 処理だけでも様々な表現を!
p5.jsを含まない作品も 1つ紹介してみる (機械学習+BLE)
Teachable Machine + バニラなJavaScript + Web Bluetooth API
【動画】鳴らした音によって異なる動きをするtoio 機械学習モデルを自分で ブラウザ上で作成、音の 識別もブラウザ上で
この仕組みは展示イベント (メーカーフェア@つくば・ 東京)でも活用
自分の作品を展示イベントで体験してもらった事例 大人のみならず、小さなお子さんにも楽しんでもらえた
PCとブラウザがあれば 手軽にできる クリエイティブコーディング
まずはちょっと試してみる というところからでも気軽に!
イベントなどの告知
Web周りの技術、ガジェットが関連 https://html5.connpass.com/event/261876/ 10/23(日) オンライン開催 https://enebular.connpass.com/event/250779/ 10/27(木) オンライン開催
終わり!