Webカメラ × WebGL

VJ をやってみた

自己紹介

岩崎航也

Ko.Yelie (エリー)

前回のスライド

Electron で VJ アプリを作った

Electron から Web に移植

誰でもいじれます

使い方

  • リストからドラッグ&ドロップでビジュアル追加
  • ビジュアルの表示順も DnD で変更可能 (下が前面)
  • フェーダーで透過度変更

Electron 版では…

IPC でデータのやり取り
参考: Electronの複数ウィンドウ間で共通のVuex Storeを扱う

Web 版では、

window.open でビジュアルウィンドウを開く

お互いの window オブジェクトを参照してデータのやり取り
参考: 【JavaScript】子ウィンドウ/親ウィンドウのお互いの要素を操作するには!?

Webカメラ

今回は… 少し進化させて

×

WebGL

Webカメラを使った
ビジュアル例
を紹介

Webカメラ × パーティクル

Particle

前のフレームとの色差分があるピクセルのみパーティクルを
出力することで、動きのある
部分だけ絵を表示できる

 

たまにパーティクルを集合
させたり

画像を読み込んでその形にすることもできる

Webカメラ × パーティクル

Warp

差分のあるところから点
ではなく線を放射

速くしたり回転させたり

 

激しい曲で

Webカメラ × パーティクル

Pop

色差分の出たところから
シャボン玉のようなものを
飛ばす

 

ポップな曲で

Webカメラ × エフェクト

Rock

映像に2値化処理 (しきい値
より高ければ白、低ければ黒)をかけて iPod CM 風に

Webカメラ × エフェクト

Glitch

壊れたブラウン管テレビ
のようなグリッチエフェクト

ノイズ+走査線+ビネット

 

マイクからの入力音声の音量に応じてノイズを大きくするようにも対応

Webカメラ × エフェクト

Toon

輪郭線抽出してアニメ風に

 

ストップモーションのように
わざとフレームレートを下げることでより手描きっぽくなる

Webカメラ × エフェクト

Water, Comic

水面のようなゆらぎ

three.js のサンプルにある

Dot screen シェーダ
を利用してコミック風に

Webカメラ × ズーム

手持ちのWebカメラ自体にはズーム機能がついていないので自前で実装

スクロール&ドラッグで操作

 

ギターソロ時にギタリストにフォーカスしたり

Webカメラ × 機械学習

Detector

機械学習用 JS ライブラリ TensorFlow.js
Tiny YOLO (リアルタイム物体検出システム) を組み合わせたライブラリ
tfjs-yolo-tiny を使って人を検出(重いのでクリックしたときだけ検出)

検出した人にフォーカス、画面分割することでアー写や MV 風に

さらにエフェクトをかけたりズームすることも可能

バンドライブでの VJ 機材構成

Webカメラを2台配置し、

異なる視点の映像を切り替える

実際のライブ風景

(上) 野外ライブステージ、 (下) ライブハウス
※ 屋外 (特に昼間) では 4000lm 程度のプロジェクターでは全然映らない

感想

  • 想像だけで計画したが意外とうまくいった
    • 特に tfjs-yolo-tiny での人フォーカス
    • リアルタイムに検出したい (JS 以外がいい?)
  • JS だけでも VJ ができる
    • パフォーマンスに気をつける
      • 曲ごとにリフレッシュ
    • コントロール画面含め全部自由に作れる
  • まだまだビジュアルがしょぼい
    • クオリティを高める
    • バリエーションを増やす

Webカメラ × WebGL で VJ をやってみた

By Ko.Yelie (エリー)

Webカメラ × WebGL で VJ をやってみた

Meguro.es #16 @ LIVESENSE での LT 用スライドです。

  • 3,423