忙しい人のための簡潔なまとめ
iOSのアプリからMacにファイルを送るときは、
USBでつないでインターネット共有するのがオススメ
前置き
先日、友人と制作したプライベートワーク「ビビビコントローラー」が、Mashup Awards 2015 にて優秀賞をいただきました。
実はこのビビビコントローラー、まず最初に展示ありきでコンテンツを作っていて、その中のコントローラー部分をデバイス単体で動くように切り分けたものだったりします。
で、その元のコンテンツがこちらの「恋が僕を殺しにきた」。
「恋が僕を殺しにきた」は ビビビコンを体験するためのコンテンツです。 体験者はコントローラーを握りながら、 目の前に現れ、話しかけてくる 美女の映像を視聴します。 自分の好みの女性が現れたとき、 グッときた瞬間を検知して、 電気刺激を発生。 体験者の心の叫びをスーパースローで撮影し、 トキメキを感じた瞬間をリプレイで再生します。
今回はこの「恋が僕を殺しに来た」の技術解説をしようと思ってます。
構成
ビビビコントーラー USB Type
Arduino nano(心拍の測定 / 高圧電流の発生)
※ nanoは展示版のみ。通常はpro miniを使用。
Mac mini
OpenFrameworks(コンテンツの表示 / 制御)
Python(iPhoneからのスローモーションファイルの受け取り)
iPhone 6
App(スローモーション動画の撮影 / Macへのファイルの送信)
あまり面倒なことをしたくなかったので、それぞれシンプルな担当に分けて、実装が複雑にならないようにと、この構成に。
接続形式
ビビビコン(Arduino)->OpenFrameworks
USB Serial
OpenFrameworks <-> iOS App
USB OSC(UDP)
iOS App -> Python
USB http form-data
コンテンツのフロー
- OF コンテンツ待機状態
- ビビビコン 心拍の計測を開始 & OSC Message 送出
- → OF コンテンツ説明 & 注意画面表示
- ビビビコン その間に心拍数の基準値を作成
- OF 女の子の映像を再生開始
- ビビビコン 心拍数が基準値より規定割合上昇したら、OSC Message送出
- → OF iOSにOSC Message送出
- → iOS スローモーション動画の撮影開始
- ビビビコン 高圧電流を発生
- OF iOSにOSC Message送出
- iOS スローモーション動画の撮影完了
- → iOS スローモーション動画ファイルを Pythonサーバーに送信
- → iOS ファイル送信完了OFにOSC Message送出
- → OF 痛がっている様子をリプレイ再生
→ がついていないのは、レイテンシとかコンテンツの再生時間を見込んで、ディレイかけたりして、通信じゃなくて自動的に処理が進む仕組みに。
ファイルの転送速度問題
ざっとこの流れができたうえで問題としてあったのが、11.のファイル送信時に結構時間がかかるという点。
240fpsでなるべく大きいサイズで撮ると、どうしても 7MB前後になってしまうのでWi-fiベースだと転送完了まで、間があいてしまってよろしくない感じに。
コンテンツのフローとしては、
体験ユーザーがビビビっときて、ひと笑い。
音楽に乗せてビビビっときた瞬間をリプレイして、もうひと笑い。
と、体験ユーザーの様子をまわりのひとに見せて笑いをとるという感じなので、この間の数秒の待ちは割と厳しいものが。
接続方式を考える
割とこの通信環境の整備はあるあるだったりするんだけど、仕事でも現地にネット環境がないか、ネット環境があってもセキュリティかかってて端末同士が通信できなかったり、会場に無線がたくさん飛びかっていて接続が安定しなかったりといろいろと速度以外の問題もつきもの。
で、なるべく有線で繋げたいのになーというのは常々考えるところ。
Mac同士とかであれば、Ethernetでインターネット共有させるのをよくやったりするんだけど、共有する元の回線がないとONにできないので、無理矢理別デバイスを認識させてそれを共有しているという体裁にしたり。
とはいえ、iPhoneは有線の物理ポートがないので、どうしたものかなーと悩んでた。iPhoneはセンサーにもなるし、モニタにもなるし、スピーカーにもなるし、ストレージにもなるので、この辺改善できると便利だなーと。
で、どうしたか
iPhoneからMacへ、USBでインターネット共有(テザリング)ができるので、その方法で試したところ、これが成功。
体感としてコンテンツの間を感じることなく、ファイルの転送からリプレイまでスムーズにつなげることができた。
一個引っかかりどころとして、Mac側のIPアドレスは普通に調べられたけど、iPhone側のIPはコントールパネルから見られなかったので、Mac側のIPから類推することに。どうやら172.20.10.1で固定ぽい。
この方式の悩みは、イベントや旅行向けのiPhoneレンタルサービスは、回線契約していてもテザリングオプションに加入していなかったりすることくらい。
次回の展示予定(PR)
このビビビコントローラー、GUGENのコンテスト2015を一次選考を無事通過したので、今週末開催される展示会にて展示できることになりました。
http://gugen.jp/entry2015/016
日時:2015年12月19日(土)12時~18時
場所:秋葉原コンベンションホール
ビビビコントローラー本体も、今回説明している「恋が僕を殺しにきた」も展示する予定なので、お時間ある方は是非ふらっと遊びに来てください。