読者です 読者をやめる 読者になる 読者になる

凹みTips

C++、JavaScript、Unity、ガジェット等の Tips について雑多に書いています。

第5回 ニコニコ学会β 研究してみたマッドネスの部でレゴへプロジェクションマッピングしたゲームについて発表してきた

凸P

はじめに

先週、2013/12/21(土)に六本木のニコファーレにて第5回ニコニコ学会βが開催されました。

僭越ながら、この 5th Session の「研究してみたマッドネス」の部にて、先日、Maker Faire Tokyo 2013 に出展しましたレゴプロジェクションマッピングしたゲームの世界とインタラクション出来るゲーム「Mont Blanc Pj.」について発表してまいりました。

当日はニコ生で放送されていたのですが、すべての素晴らしく濃いセッションが無料タイムシフト視聴可能で公開されています!

全体で 8時間30分ほどあり、とても長いですが、どれも面白く勉強になる内容ばかりなので見逃してしまった方は是非ご覧下さい。
本エントリでは、マッドネス*1という3分間で次々と発表していく形式の中では語れなかった内容や、今後の備忘録も兼ねて現在頭の中にあるコトなどをまとめたいと思います。
プロジェクションマッピングに関しては、今回のモノを作成するまでは門外漢だったので、こんなものもあるよ!とかこうしたらもっと良くなるんじゃ?とかご意見がありましたら、是非コメントか Twitter の方へご連絡いただけると嬉しいです。

仕組みについて

仕組みについては MFT 2013 のまとめ記事の方に詳しく書いています。

名前の由来について

Mont Blanc はモンブランと読みます。あの山とかお菓子のモンブランです。「モン」が「山」という意味で、「ブラン」が「白い」という意味です。

プロジェクションマッピング対象のレゴが白くて凸凹しているので、それを白い山と表現する意味でつけました。が、今振り返ると名前だけで何か分かりづらいので別の名前に改名したいです。。

先行技術調査

発表中ではプロジェクションマッピングという手法を使った表現のうち、次のようなことをしたら新しいのではないかとお話ししました。

  • 静止したものでなく動いたり動かせるものに映像を投影
  • バーチャルなものに見せかけるだけでなく、その世界と連動・干渉する

ただ、こういった研究や作品は既にいくつか検討・作成されていて、今回のモノが初めて実現した!というものではありません。では、どういった先行技術があるか、調べた範囲でいくつかご紹介します。

Augmented Reality Sandbox with Real-Time Water Flow Simulation


最初、ブレストしていた時に見ていたデモです。これを元に議論して今回のモノを構想しました。Kinect とプロジェクタが上についていて、得られたデプスマップを元に等高線を描き、手をかざした時にそこへ水を流すシミュレーションをしている形になります(と思います)。

Box

「動くものに投影」という部分で思い出しました。ロボットアームに取り付けられたスクリーンとプロジェクタが滑らかに動きながら、それをカメラがパースが崩れないように最適な位置から撮影する作品です。この作品に関しては面白い考察をされたエントリがあります。

ライブで見せること、プロジェクションマッピングである意義についてとても考えさせられました。

Interactive Toy Series “TSUMIKI”

Interactive Toy Series "TSUMIKI" 〜Japanese Version〜 from PPP on Vimeo.

インタラクティブなプロジェクションマッピングです。積み木の形に応じて投影される動物が変わったり、計算の穴埋めに使ったりしていて教育に使えそうな感じがします。技術的には反応速度めっちゃ早い気がして、どうやってるのか私気になります。

Open Pool


前回の第 4 回 ニコニコ学会β にて発表された杉本さんによるビリヤード x プロジェクションマッピングです。音で衝突を検知したり、センサでボールの落下を判定したりなど、かなりインタラクティブなものになっていて、とても面白いですし参考にすべき点がたくさんあります。「現実を Hack する」っていうコンセプトも素晴らしいです。
同じ回に出られていた光輝さんの MikuMikuTouch でのポリッドスクリーンとのインタラクションも、プロジェクション「マッピング」ではないですが、リアルとバーチャルのインタラクションで興味深いですね。

座長を務められていたなヲタさんの代表作の SYNCHROiD によるライブやパンチロイドもプロジェクションされた映像とのインタラクティブなやり取りが出来るもので興味深いです。が、この辺り突っ込んでくとプロジェクションマッピングと離れていきそうなのでまた別の機会に調べてまとめます。

Beat Match

Beat Match from David Rinman on Vimeo.

こちらは卓球 x プロジェクションマッピングです。こちらも音で衝突検知をしてそれに応じて音楽のテンポを調整しているものと思われます。音と作用するのは目だけでなく耳でも体験できて面白いですね。

チームラボ☆トランポリン大砲で、ぴょんぴょん飛んで、いろいろぶっ放せ!の巻

チームラボさんの観客参加型のプロジェクションマッピングイベントです。トランポリンではねると大砲が飛んでいってその様子がプロジェクションマッピングで見られる形になっています。これだけデカイと、大人数が同時にその世界に入り込んだ表現とか出来そうで楽しそうです。

CityScope

Media Lab によるレゴへのプロジェクションマッピングです。ちょっと詳細が分かっていないのですが、都市のシミュレーションの可視化用かな、と思っています。

inFORM


同じく Media Lab つながりです。ブロックへの投影は同じですが、こちらはブロック1個1個が動的に高さ制御が可能で、その高さは遠隔地の物体のデプスを伝送することによって制御しています。リアルタイム物体転送みたいな感じしてスゴイ面白いです。解像度がもっと高くなる未来も見えてスゴイです。


色々と出していったらキリがなくなりそうですが、こういった面白いデモが世の中で作られている、という外観は把握できるのではないでしょうか。

じゃぁ何が新しかったのか?

で、上記の先行技術と比較して、今回のモノで新しかった点は何か?と考えると以下の点ではないかなと考えています。

  • バーチャルなゲームの世界と干渉する物体(レゴ)に直感的な意味をもたせたこと
    • 実際の物体がバーチャルの世界と単に連動するだけではなくて、ブロックを置くとそれがゲームの世界でのブロックそのものになって、それが目で見て分かる

かなと勝手に思っています。

2D ゲームを投影した利点

今回のモノはプロジェクションマッピングとしては非常に稚拙なもので、MadMapper 使って映像を変形させたり 3D の空間をマスクで切って...等をするわけではなく、2D のゲームを段差のある面に単に投影するだけでした。ただ、稚拙な仕組みだったからこそどの向きから見ても成立しますし、展示向きだったのではないかと思います。

失敗したなと思った点

MFT 2013 に展示して一番失敗だったな、と思う点は、ブロックを変更するためのリモコンをタブレットにしたことです。レゴを付けた時に何のブロックに変化するかをタブレット上から選択する形式なのですが、まず世界観が違うため、どう使って良いのか困惑してしまう人が多数見受けられました。また、タブレットに表示されているブロックをタップして初めて置いたレゴがブロックが変化する、という仕組みに勘違いされたこともありました。
複数種類のレゴを識別してブロックを出し分ける、という方式か、プロジェクションマッピングの世界の中に UI を設けて、そこで直感的にブロックを選択できるような形に改良したいと思います。

コメントへの返答

reacTIVision を使ったほうが安定するのでは?というご意見を複数頂きました。

Microsoft の PixelSense(旧 Microsoft Surface)のように裏から投影&監視するテーブル型スクリーンに適しているようです。ただ今回のようにレゴが不透明なため裏から観察できない場合は表面にマーカを提示する必要がありますが、前面から投影するプロジェクションマッピングだとこのマーカが投影の品質を下げたり(黒いマーカが見えてしまう)、そもそもプロジェクションの映像と干渉して撮れなかったりするため難しいと思われます。もしくはレゴで無い形態にしたら行けるかもしれません。
いやいや、そうじゃなくてこうだよ!という方式がありましたら教えて下さい。

その他の認識方式のアイディアについて

土台に手を入れても良いのであれば、等間隔に穴を開けて裏から赤外線を投光し、ブロックを置くとその光が遮られるような形にしておき、漏れてきた光を前面から観察する方式がより安定すると思われます。が、後述の通りこれは1段しか取れない方式なので恐らく作成はしないと思います。

Kinect との比較について

スライド中に Kinect との比較図を載せました。

うっすらとですが、50cm くらいのところからであれば、Kinect でもレゴ程度の大きさを識別することが出来ます。今回の方式では別途、赤外投光機が必要ですが、Kinect ならそれ自体が Structured Light を発してくれるので機材が1個減ります。ただ投影面の近くに Kinect を置くと触られてズレる危険性があるのと、コントラストがあまり無いためロバスト性が無いのを考慮して、今回の方式にしました。ただ、今回の方式の最大の欠点は 1 段しか取れないことなので、今後の発展を考えるとデプスが取れた方が理想的です。Kinect2 では果たしてどれくらい取れるのか期待したいところです。

直近の課題

ポータブル化

直近の最大の課題はポータブル化です。今回のマッドネスでも Oculus Rift の話が多かったですが、Oculus Rift は「体験してなんぼ」のデバイスで(体験するとまじヤバイです)、我々の作ったものも同じく体験して初めて感じる面白さがあると思っています。で、これはメカ・電気担当の相方の id:jonki と検討中で、なんとなく目処はついています(来年初旬予定)。完成したら何かしらのイベントに出展しながら色んな方に体験して頂ければと思っています。

速度向上

現在、手の部分がブロックにならないように一定時間安定したらブロックの着脱をゲームに通知するようにしています。ただ、その間の待ち時間が長いので、体験が幾分か損なわれている感じがします。つけた瞬間にブロックになるのが最高ですが、これにはカメラではなく何かしらのセンサによる検知が必要となると思われるので、数も多い(今なら 24^2 = 576 個のセンサが必要...?)ことから諦めました。ただ、手も含めて考えれば対象となる領域が前回と異なる輝度になっているかはそこそこリアルタイムで検知できます。そこで、今のところは「ココがしばらくするとブロックに変わるよ」という UI (対象となる領域が点滅等)を挟み込み、何かしらの反応が起きているフィードバックを返すよう改良しようと考えています。こうすれば手の上に重なってるブロックも変わる対象だよと点滅してしまいますが、手を引っ込めればそれは消えますし、表現を工夫すれば手を引っ込めたくなるように誘導できる気もします(MFT 中はお子さんは中々手を引っ込めてくれないので「ちょっと気をつけして待ってみてね」と何度もお願いした覚えがあります)。
後、無駄な部分を解析したり、ループもぶん回る糞コードで認識していることから処理が若干重いので、その部分は改善したいです。

解像度向上

現在は 48x48 ポッチのレゴを土台に使っていますが、認識は 2x2 ポッチのブロック単位で行い、24x24 の解像度にしてしまっています。なので、認識するグリッドをまたいでブロックを配置してしまうと、何も起きなかったり、どちらかに 1 ポッチよった形でブロックが投影されたり、認識が不安定になったりします。そこで認識は 48x48 ポッチで行い、ブロックを本当に自由にどこにでも置けるようにしたいと考えています。

キャリブレ時間短縮

現在は、作成したキャリブレツールの上でそれぞれのレゴの位置に対応するカメラの画素が取れるようグリッドを調整することが必要です。が、これは結構しんどい作業なので4隅に赤外線 LED を仕込んで自動でキャリブレ出来ないかな、とか考えています。

プロジェクションマッピングの精度向上

現在は 2D のゲームを投影しているだけなので端っこの方の歪みが大きいです。ただ、ゲーム自体は 3D で作成しているため、カメラを Orthographic からプロジェクタの画角に合わせた Perspective に調整すれば端の方も綺麗に合うのではと思っています。また、台形補正などもカメラの注視点をステージの中央に固定しながら上下左右に動かせば可能だと思うので、そのあたりも真面目にやりたいです。

今後の課題

平置き等の別形態を検討

何人かの方にご意見を頂いたのですが、平置きで上から投影するのでも面白いんじゃないかとアイディアを頂きました。確かに上から投影であれば展示スペースも小さくて済みますし、周りから囲んで見れて面白そうです。何か面白い使い方がないか検討したいと思います。

高さ

現状は 1 段の高さしか検知できないのですが、これを複数の高さ取れるようにしたいです。これが可能になればもっと色々な遊び方ができるのではないかと考えています。Kinect2 やその他何らかの高精度なデプスセンサが手に入ったら挑戦したいです。平置きで水平4方向+上1方向、計5方向からプロジェクションして、Minecraft みたいなことが出来たら楽しそうですね。

おわりに

今年前半までは、ニコニコ技術部スゴイなぁ、とか、ニコニコ学会楽しそうだなぁと蚊帳の外から見ている身でしたが、つい先日までまさか自分が登壇する身になるとは思っても見ませんでした。ご推薦下さった @yumu19 さん、ありがとうございました。また、発表を見てくださった方、コメントを下さった方、とても励みになります。ありがとうございました。そして、ニコニコ学会βを支えて下さったスタッフの方々、貴重な場を提供して頂き本当にありがとうございました。これを機会に、今後も色々と活動していければと思います。

*1:マッドネスとはプレゼンの方式のことで、狂っている発表をするという訳ではないようです([https://twitter.com/yumu19/status/412060774169731072:title])。私も直前まで勘違いしていて、マッドネス感ねぇ!と頭掻きむしってました。