カイワレスタイル

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

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サービス全盛の昨今、お客さんの反応がダイレクトに見られる経験は中々に貴重だと思う。
また子供向けのハッカソンがあったら参加したい。

オール3Dプリントラジコン戦車(仮)製作日記 その4

随分日が空いてしまったが、ラジコン戦車製作の進捗メモ。


WEBから操作

Raspberry PiをWEBサーバーとして、スマホのブラウザからカメラのストリーミングやBluetoothのOn/Off、モーター制御プログラムのOn/Offなど各種の操作ができるようにした。
中身は、node.js+expressという構成で、一応レスポンシブデザイン対応で、スマホから見てもボタンやストリーミング画面が小さくならないようにしている。
最終的に、無線LAN親機+DHCPサーバとしてスマホから直接接続できるようにして、持ち運びやすくする予定。


足回り改修

今までタミヤのハイパワーギヤーボックスHEを使っていたが、どうしても3つあるギアボックスのうち、一つだけやたらギアが硬い物があってまっすぐ走れなくなっていた。
仕方がないので、ダイセンのロボサイトモーターとオムニホイールに交換した。
それに伴い、モーター固定用のフレームも設計しなおし。
ちょうど3Dプリンタも故障していた為、DMM.makeで出力。
しかし、いざ組み合わせてみたら既存のフレームと干渉する事が判明。
ホビーソーで干渉部分を切り取ったが、普段日曜大工とかしないので非常に疲れた。
123Designでパーツの干渉を事前に検出することは可能なんだろうか?
それができれば今回みたいなミスは無くせると思うが…。

なんとか組み合わせての動作確認。

久し振りのラジコン戦車進捗。足周りを変えたので動作テスト。まっすぐ走れるようになった気がする。

これによってまっすぐ走れるようにはなった気がする。
しかし、ギア比によってどのくらいの速度とトルクなのかわからなかったため、ギア比1/60のものを買ってしまったが、そのせいか結構速度が落ちてしまった感じ。
マブチモーターのように、おいそれと買い直せる値段ではないので今回はこのまま行こうと思う…。
今回の改修に掛かった費用のことは考えたくない…。


Maker Faire Tokyo 2016

今年もMaker Faire Tokyoがやってくる。
今まで客として参加してたが、今回はMaker枠で、今作ってるラジコン戦車を出展してみたいと思っている。
申し込み締め切りは5/9までなので、それまでになんとか形にしたい。
頑張れ自分!

makezine.jp

プロジェクションシューティングゲームを作ってみた

モバイルプロジェクターとスマホを組み合わせて投影式の3Dシューティングゲームを作ってみた。
まずは動画から。

youtu.be

暗くてわかりにくいが、壁の中を懐中電灯で照らして、敵を撃破するようなゲームになっている。


ゲームルール

実験なのでゲームと呼ぶにはあまりにも単純だが、
前方から迫ってくる敵の方にカメラを向けて狙い、画面をタッチでショット発射。
目の前まで敵が迫ってくるとダメージ。
3回ダメージを食らうとゲームオーバー。
一応徐々に敵が増えて難しくなるようにはしている。


仕組み

仕組みは非常に単純。

f:id:kaiware007:20160321031702p:plain

スマホとモバイルプロジェクターを一緒に持つ。
スマホの傾きをジャイロセンサで検出し、ゲーム中のカメラの向きに反映させる。
その映像をスマホからHDMIケーブルで接続したモバイルプロジェクターで壁に投影。
見たい方向にスマホとプロジェクターを向けることで、懐中電灯の光で壁の中の世界を覗いているような感覚を味わえる(当社比)
ゲーム部分はUnity製。
最大の利点は、必要機材がモバイルプロジェクターとスマホと接続ケーブルだけなので取り回しが非常に楽な点。 壁と暗闇があればどこでもプレイ可能。
今回はiPhone6Plusを使用した。
ちなみに、画面の左下に見えるのはカメラの向きのリセットボタン。


作ってみて

壁の中を覗いてるような感覚はまぁまぁ出せたと思う(動画ではわかりにくいのが辛い)
iPhone6Plusのジャイロセンサはそこそこ精度はいいが、やはり急激な変化には追従できないようで若干ずれる。
まぁ簡単に作れるのでそこら辺はトレードオフか。

当初はスマホにヘッドホンを付けて左右の音で敵が出てくる方向を察知できるようにしたかったが、HDMI接続のせいで音声がプロジェクターのモノラルスピーカーで再生されてしまった。
プロジェクターにもヘッドホン端子はあったがノイズが酷いのと音声がモノラルになってしまっていて聞き分けできなかった。
敵の出現音がソナー音っぽいのはその名残。
まぁ簡単に作れるのでそこら辺はトレードオフか(2回目)

初めはメディアアート的な作品にするつもりだったが、気がついたらゲームになっていたのは職業病だと思う。


使用素材など

シェーダー

壁や敵の格子状の模様は、こちらのシェーダーを参考に頂点&フラグメントシェーダーに書き起こし、輪郭線を追加した。

wonderpla.net

効果音

on-jin.com

pocket-se.info

www.skipmore.com

commons.nicovideo.jp

commons.nicovideo.jp

Rez Infinite with シナスタジアスーツ体験

Rez Infinite

去年の12月に開催されたPlayStation Experience 2015にて、発表されたRez Infinite。

www.youtube.com

RezPlayStation VRで蘇ることよりも、音に合わせて全身がピカピカ光る銀色の『シナスタジアスーツ』とPlayStation VRを身につけた水口哲也氏の姿が、レトロフューチャーが一周回って現実に現れたような感じで心を奪われた。
自分はレトロフューチャー好きでLED好きなのでシナスタジアスーツがすっごく欲しいと思ったが、市販する見込みは無いらしいと聞いてがっかりした。


シナスタジアスーツを体験するチャンス

それから数カ月後、六本木ヒルズで開催される MEDIA AMBITION TOKYOにてRez Infiniteとシナスタジアスーツの体験が出来ると知って行ってみた。それが昨日。

シナスタジアスーツは2層構造になっていて、音に合わせて振動させる振動素子が全身に散りばめられている内層と、音に合わせてLEDが光る外層がある。

シナスタジアスーツ

今回は振動する内層のみを装着して体験することが出来た。
それでも、スタッフ二人がかりで全身に振動素子のバンドを装着していく必要があり、ちょっと宇宙飛行士になったような気分だった。
シナスタジアスーツを装着した後は、PlayStation VRを頭にかぶる。
メガネをつけていたのでちょっと圧迫感があった。
左右の目の距離や高さなどを調整し、さらにヘッドホンを装着する。
PlayStation VRとヘッドホンで外界からほぼシャットダウンされた状態でプレステのコントロラーを渡される。
目の前には、Rez ∞のロゴが表示されており、頭を左右に振ると視界が動かせた。
Press Any Buttonと表示されているので適当にボタンを押してゲームスタート。

頭の動きでロックカーソルが動かせるのが凄く直感的で楽しい。
振動は序盤は割と静かだが、音楽の低音に合わせてドッドッドッドッと揺らされる感覚は、ライブやクラブ等で大音量のスピーカーから発せられる音圧で全身が揺さぶられるような感覚に近い。
しばらく進むとボス戦に突入。
途中、ボスが後ろに回り込むが、ただの演出かと思って前を向き続けていたら一向に前に戻ってこないので、あれ?と思い振り返ったらずっと後ろで走り続けていた。
あぁ、振り向いて戦わなきゃいけないのかーと元のRezとの違いにちょっと戸惑いつつもクリア。
時間にしたら5分くらいだと思うが、はじめは振動を感じていたが、途中から振動に慣れたというか音楽と一体化してるかのような不思議な浮遊感があった。
プレイ後そんなに動いていないはずなのに結構汗をかいていた。
正直VRはあまり興味がなかったが、Rez Infiniteを体験したらPlayStation VRが欲しくなった。
というか、シナスタジアスーツ欲しいなぁ。
でも、後ろの配線とか機材を見ると一般販売は難しそうだ。


シナスタジアスーツを体験したい人向けの注意

MEDIA AMBITION TOKEYOでは、他の展示品は自由に閲覧できるが、Rez Infiniteは整理券を持っている人間のみが体験できるので注意が必要。
整理券は、当日17時半頃に配られる事になっているが、自分が行った時は、16時頃から既に並び始めてる人がいた。
また、スーツの装着の手間が掛かることから1日8人位しか体験できないらしいので、どうしても体験したい人は17時半よりも早めに行くことをお勧めする。
ちなみに、MEDIA AMBITION TOKEYOは3月21日までなので、猶予は今日明日しかない。 まだの人は急げ!


写真

あとは現地で撮った写真をどうぞ。

霧が凄い

シナスタジアスーツ

高層ビル

青空

光そうな椅子

案の定光る椅子(ボディソニック付き)

Rez Infinite - Synesthesia suit

一見光らなさそうなのにメッチャ光る

Rez ∞


リンク

mediaambitiontokyo.jp

Raspberry piにゴミの日を喋らせる機能を改良した

機械に話しかけられるということ

前回、slack経由でRaspberry piに喋らせる機能を追加した。

kaiware007.hatenablog.jp

それを使ってゴミの日を通知するようにして、しばらく運用してみた結果、わかったことがある。

人はわかっていても、突然機械に喋られるとビビるし、理解が追いつかない。

実際運用してみて、突然ラズパイに「今日は可燃ごみの日です」と言われても、心の準備が出来ず「え!?なんだって?」となった。
まぁ機械に限らず、突然用件だけ言われたら、理解できずに聞き返してしまうもんだよなぁ。
考えてみれば当然だった。

人に話しかける時も「すみません」とか「もしもし」とか「Excuse me」とか1クッション置いてから用件を言う。
さらに、siriなども用件を言う前に何かしらの音が鳴る。
ちゃんと意味があったんだなぁ、と当たり前のことを再認識した。
心の準備大事。

ゴミの日に警告音を鳴らす

前述のことから、ゴミの日を音声で知らせる前にちょっとした警告音を鳴らすようにしてみた。
hubotに、普通に喋らせるtalkコマンドの他に、警告音付きのwarningコマンドを追加した。

child_process = require 'child_process'

module.exports = (robot) ->
    robot.respond /talk (.*)/i, (msg) ->
      atalk robot, msg, msg.match[1]
 
    robot.respond /warning (.*)/i, (msg) ->
      child_process.exec "aplay /home/pi/sound/warning.wav", (error, stdout, stderr) ->
        if !error
          atalk robot, msg, msg.match[1]
        else
          msg.reply error

atalk = (robot, msg, message) ->
     child_process.exec process.env.AQUESTALK_PATH + "/AquesTalkPi " + message + " | aplay -q", (error, stdout, stderr) ->
        if !error
          msg.reply 'OK'
        else
          msg.reply error

warningコマンドは、先に用意したwavファイルを再生させた後に、目的のメッセージを喋らせているだけ。

で、出来上がったのがこちら

www.instagram.com

これでもう聞き逃さない。


ダイレクトマーケティング

警告音といえばダライアス
シリーズ最新作「ダライアスバースト クロニクルセイバーズ」PS4, PSVita, Windows(Steam)で発売中!

darius.jp

【聖帝】3Dプリンタで色んなチョコ型を作ってみたかった【イカ】

今週のお題「バレンタインデー」

今日は2月14日、バレンタインデー。
うちには3Dプリンタがあるので、チョコの型が作れるんじゃないかと思い、色々挑戦してみた。


チョコの素

型に流し込むチョコはNUT2decoキャンディライターというものを使用した。

www.nut2deco.com

電子レンジで温めるだけという手軽さから、今回チョコを作ってみる動機になったといっても過言ではない。
とりあえず、普通のチョコ色、赤、白、黄色、緑、水色の6色を購入した。
アメリカ産なので、チョコの色がかなりケバい。


六角形

まず最初に、簡単なものからということで「六角形」の型を作ってみた。

f:id:kaiware007:20160213112410j:plain f:id:kaiware007:20160214184932j:plain

これはうまく出来た。
複数並べるとボードゲームか大戦略を思い出す。
食べられるボードゲームとか面白そう。

しかし、積層式の欠点である、積層痕がそのままチョコにもついてしまうので見た目があまり美味しく見えないかもしれない。

また、六角形を作っている最中アクシデントがあり、2本のキャンディライターが犠牲になった。
普通のチョコ色のキャンディライターを使っていたが、電子レンジで温めすぎてチューブに穴が開いてしまい使えなくなってしまった…。
次に、白色のキャンディライターを使っていたが、チューブの出口の穴が小さすぎていくら握っても出ず、力を入れすぎたら後ろ側に穴が開いて飛び出てしまった…。
以後、温めすぎるのとチューブ口の穴の大きさには細心の注意を払うようにした。


聖帝サウザー

六角形で気を良くして複雑な形状に挑戦してみた。

題材はなぜか聖帝サウザー

作り方は、

まず、聖帝のドヤ顔をイラレでトレースし、SVG形式で出力。 f:id:kaiware007:20160214200251p:plain

それを、123D Designでインポートし、Excude等で立体化。 f:id:kaiware007:20160214190631p:plain

立体化したドヤ顔を"Combine"->"Subtract"で立方体から型抜き。
"Shell"で余分な領域を削って1mm程の厚みにする。 f:id:kaiware007:20160214190620p:plain

いっぱい並べて出力。 f:id:kaiware007:20160214200322p:plain

チョコを流し込んで30分ほど冷蔵庫で冷やして完成。 f:id:kaiware007:20160213201925j:plain 恐い…。

結果は、大失敗。
辛うじて口元でサウザーっぽく見えるが、離れてみるとウホッいい男の阿部さんに見えてくる。

最初は、溝の深さを1mmにして出力するも、溝にチョコがハマって抜けなくなって失敗。
次に、溝の深さを0.5mmにして出力してみたが、精度の問題からかほとんど高低差がなくなって顔の表情がほとんどわからなくなってしまった。
あと、型の傾斜が急すぎて衝撃を与えても中々抜けなかった。
衝撃を与えすぎて青は割れてしまった。


スプラトゥーンのイカ

聖帝を複数作ってもまだまだチョコが余っている状況。
このまま捨てるのはもったいない…。

せっかくカラフルなチョコがあるので、スプラトゥーンのイカアイコンも作ってみた。

聖帝の時と同じようにイラレでパスを引いてSVGで出力したものを、123D Designにインポートして立体化して出力。 f:id:kaiware007:20160214200354p:plain

それにチョコを流し込む。
イカなので、イカ入りで。

f:id:kaiware007:20160214165427j:plain

半分くらいまでチョコを流し込み、千切りした裂きイカを入れ、その上からチョコをかけて閉じ込める。 f:id:kaiware007:20160214165113j:plain

冷蔵庫で30分冷やして完成!

パッと見おいしそう。 f:id:kaiware007:20160214180739j:plain

食べてみたが、意外とうまかった。
が、一緒に食べた人は凄い顔になっていた。
自分の味覚はおかしいらしい。


まとめ

結論としては、積層式の3Dプリンタでは綺麗に型作りは出来なかった。

課題

  1. 積層痕が目立って美味しそうに見えない
  2. フィラメントPLAは硬すぎてチョコを型から抜くときに苦労する
  3. 細い溝に空気が詰まって穴になってしまった。溝に行き止まりを作らないほうがいいかも
  4. 型の傾斜は45~60度程度がいいかも。急すぎると型から抜くときに苦労する

以上のことから、3Dプリンタで型を直接出力するより、出力したものを表面処理して、そこから食品用シリコンで型をとったほうが完成度が上がると思う。
簡単な方法なんて無かったんや…。


参考

2DイラストをSVG形式で123D Designにインポートするアイデアはこちらを参考にさせていただきました。

2015-12-06 - おめが?日記

キャンディライターの販売元、NUT2deco

クッキー型(クッキーカッター)やチョコレート型などの抜き型、バレンタイン、ケーキポップス、カップケーキのスイーツデコレーション食材料と製菓道具、パーティ、ラッピング包装用品通販サイト