カイワレスタイル

ゲーム、アニメ、プログラム、興味のあることをツラツラと。

teamLab主催インタラクティブ・プログラミング・ハッカソン

5/28〜6/5にかけて、teamlab主催のインタラクティブ・プログラミング・ハッカソンに参加してきた。
結果、チームラボ賞を貰う事が出来た。

5/28〜6/5のチームラボインタラクティブハッカソンで作った、ボールを投げて当たった所にインクが着くインタラクティブ作品。誤検出であらぬ所にインクが着くけど、子供はそんな事お構い無しに無我夢中でボールを投げまくってくれて嬉しかった。

概要

ルールは「とにかく子供のテンションを最高にする作品を作る」のみ。
プロジェクターやkinectは借りることができるが、それ以外に必要なものがあればなんでも使っていいらしい。
優勝賞品は、CASIOのプロジェクター。

作ったもの

ボールを壁に投げて、ぶつかった所にスプラ◯ゥーンのようにインクをぶちまける。
飛び散ったインクの色に応じて様々な生き物が飛び出す。
インクの色が混ざるとレアな生き物が飛び出すことがある。
生き物にボールをぶつけると弾けてエフェクトが飛び出す。
といった単純明快な作品。

構成

  • プロジェクター
  • 加速度センサー(ボールの衝突検知)
  • kinect(ボールの位置検出)
  • webカメラ(ボールの色検出)
  • PCその1(kinectと加速度センサーの制御)
  • PCその2(メインアプリとプロジェクターへの投映)

PCその1には、kinectと加速度センサーがつながっている。 PCその2には、プロジェクターとWebカメラがつながっている。 PCその1とその2は、USBでつながっている。 メインのアプリは、openFrameworksで作られている。

仕組み

壁の後ろに加速度センサーを貼り付け、ボールが衝突した時の振動を検知する。
検知したら、kinectの方で円形を検出してボールの座標を取得する。
ボールの座標と衝撃の強さを、シリアル通信でPCその2へ送信する。
PCその2では、メインアプリが動いている。
メインアプリは、座標の位置へインクを描画したり、生き物を動かしたり音を鳴らしたりする。
PCその1から、座標データが送られてきたら、webカメラの画像から座標の位置周辺の大まかな色を取得し、インクの色としてぶちまける。
ぶちまけたインクの色に応じて、様々な生き物が出現する。

担当箇所

webカメラの画像処理周りと生き物の挙動を少し担当。
今回初めてopenFrameworksを使ったが、思った以上に簡単に使えて驚いた。
openFrameworksのアドオンのOpneCVで画像処理をしたが、カメラに映った傾いた壁の画像を4点指定して射影変換して真っ直ぐな壁の画像を作るのが、凄く簡単にできた。
画像のピクセルデータも配列でアクセスできるし、なんかDirectX初期の頃みたいな感覚が蘇った。 画像処理するならOpenCV

結果と感想

一定時間毎に作品を変えて遊んでもらう形だったが、延々ボールを投げ続ける子供がいて嬉しかった。
惜しくも優勝は逃したものの、チームラボ賞をゲット。
賞品はチームラボTシャツだった。

今回、審査員が子供ということで、建前を抜きにした純粋かつ公正な審査だったと思う。
子供の動くものに対する好奇心と、そのリアクションの良さは素晴らしい。
正直な所、我々の作品は誤検出でボールが当たった所と違う場所にインクが付いてしまったりしていたが、子供はそんな事お構いなしで必死になってボールを投げ続けていた。
あまりにも子供達が楽しそうに触ってくれるので、作った大人達が感動するという不思議な光景もちらほら。
Webサービス全盛の昨今、お客さんの反応がダイレクトに見られる経験は中々に貴重だと思う。
また子供向けのハッカソンがあったら参加したい。