チームラボはどうやって作るのか。現役エンジニアが大暴露

チームラボ作品の作り方 IT・プログラミング

※ 本記事にはプロモーションが含まれています。

こんにちは! ねこです。

チームラボの映像作品、実際にみた方はわかると思うんですが、本当にきれいだし、エンタメとしても面白いんですよね。

実際のところ、内側ではどのようになっているのかって、ちょっと気になりませんか?

そんなチームラボが、裏側でどのようなことをしているのか、その種明かしをやってみるという、無謀な企画をやってみようと思います。

タイトルからは不穏な空気しか感じませんが、実は Unity というゲームエンジンのカンファレンスにチームラボが登壇されてお話されたことがあるんですね。

当時、私も現地に足を運んだ時に拝聴させていただいております。

ちなみに、そのときにお話された内容は、今でも Youtube でみられます。

今回は、その中から技術的な部分のみピックアップして、わかりやすく記載していこうと思っています。

本当にコアなことを知りたい方、今回はそんな記事ではありませんので、あしからずご了承ください。

https://www.amazon.co.jp/gp/product/4883354954/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4883354954&linkCode=as2&tag=00000565526219-22&linkId=dd3b0719fec4873ede06eb37dce21663

ところで、Unity って何?

チームラボの中の人が、カンファレンスで明言されている通り、チームラボの作品には、Unity というゲームエンジンが使用されています。

ところで、ゲームエンジンってなんでしょうか?

最近のITコンテンツは、高度化、複雑化してますので、新しいITコンテンツを作ろうと考えた時に、その全てを1から自前で作ることは、まずありえません。

必ず、何かしらの便利な機能が揃ったツールを利用して作られています。

[sitecard subtitle=関連記事 url=/unity-7-functions/ target=self]

例えば、ホームページを作るなら、お問い合わせフォームや、ニュースページ、会員ログインみたいなものは必要になりますよね。

昔は、全部手作業で作る必要がありましたが、何度も同じような機能を作るのは時間がかかりすぎるので、今は、そういう必要なものをまとめて使えるようなツールがたくさん存在しています。

ちなみに、このページは WordPress で作ってまして、今は、一切ブログラムを書かなくても機能を追加できたり、更新できてしまいます。

実は、MacOS も UNIX という別の OS をベースに作ってますしね。

Unity は、そういう便利ツールのゲーム版だと思ってください。

なぜ、Unity を使用する必要があったのか?

チームラボの作品といえば、プロジェクションマッピングを利用した大規模なインタラクティブ作品が売りです。

では、なぜ、チームラボの中の人は、それをやりたいと考えたときに、ゲームエンジンである Unity を選んだんでしょうか?

ゲームエンジンを使用した理由は、主に以下の点によるものだと思われます。

  1. リアルタイムな3D映像の作品を作りたかった
  2. 流体や重力など、物理的なシミュレーションが必要だった
  3. プログラミングが必要だった

世の中にあるゲームエンジンは、ほぼ上記の内容を網羅できると思います。おそらく、その中から、技術選定の際に日本のユーザー数の多さと、ライセンス料などで比較して、Unity に選んだんだと考えられます。

最近の有名なスマホゲームは、ほぼ Unity で作られてますね。

大規模なプロジェクションマッピングの裏側

フロア中に境目のない映像作品を投影することを考えた場合、大画面で作った映像作品を、それぞれのプロジェクターに割り当てて表示させる必要があります。

イメージ的には、3D空間の映像作品をたくさんのカメラで全方位撮影したものを、たくさんのプロジェクターで再構築している感じでしょうか。

Unity 3D空間から、複数のカメラを使って投影

ただ、それだけをそのまま行おうとすると、以下のような問題があります。

  • プロジェクタ同士の重なりの問題や、凹凸のある面に投影する必要があるため、意図した映像にならない。
  • 大量のオブジェクトを大量に画面出力するため、PCのスペックが追いつかない。
  • 人が近づいたり、触れたりしたかを感知する方法がない。

これらを、チームラボのメンバーが、どのように解決していったかをみてみましょう。

意図した映像にならない問題

基本的には、Unity 側で、出力する映像側に歪み補正と重なり面の馴染ませをさせて、その加工済みの映像をプロジェクタで流しているそうです。

歪み補正については、行っていることは、プロジェクタによくある台形補正に近いことなんですが、それだけだと、様々な凹凸が存在する作品にはきれいに映し出せません。

ですので、チームラボ側で、もっと多機能なものを独自に実装していたり、専用のアプリケーションを利用しています。

歪みの問題の場合

凹凸の面に出力するのに対応するため、元の画像を歪ませて、意図した表示にしている。

重なりの問題の場合

そのまま2つの画面を合成すると、重なりが明るくなるため、もとの映像の境界を馴染ませて意図した表示にする。

ちなみに、これらの作業については、実際に現地に行って映像を映しながら調整するそうです。

プレゼンテーションで実際にあった資料画像でドームのプロジェクションマッピングを行っているものがあったんですが、あのきれいな作品を映し出すのに、なんと、数百というプロジェクタの数を使用していました。

それらを一つづつ手作業で合わせてるということを考えると、いかにこれが大変な作業かがわかります。

大量のオブジェクトをリアルタイムで映すために

巨大な作品では16K以上の高解像度で、大量のインタラクティブなオブジェクトをリアルタイムに投影する必要があるのですが、それを一台のPCで全てを賄うのは、現状不可能です。

ですので、複数のPCを用意して、描画を割り当てるということを行なっています。

しかし、その場合ですが、どのように同期をとれば良いのかが問題となりますよね。

これは、オンラインゲームのような仕組みで内部のオブジェクトの位置などのデータを合わせるということをしているようです。

同期用サーバを利用して、複数PCを同期させて大画面表示を行う

例えば、沢山の粒子が細かく飛ぶようなエフェクトなども、同じ乱数のテーブルを使う事で、全く同じものを別のPCで再現できます。

ちなみに、お台場にある、常設のアートミュージアムである、チームラボボーダレスでは、なんと、あのボーダレスな環境を作り上げるのに、520台ものコンピューターを使用しているようです。

人が触れたものを感知するのには

これは、具体的には、赤外線ベースのレーザーセンサーやカメラを使用して取得しています。

そのポイントデータを映像の位置に変換して反映する事で、あたかも、映像作品なのに実際にその世界に触れられるかのような、不思議な体験をさせてもらえるのです。

あの、LEDの光の中にいる演出は、どのように作っているのか

他にも、例えば有名なLEDの光の中で、光の粒子が飛び回るあの演出。どのように作っているか気になりませんか?

チームラボボーダレス 作品 LED

あれは、Unity で作った3Dエフェクトを、そのまま LED による3D表現に変換しています。

具体的には、3Dエフェクトを MRI のように断面を必要な数だけ切り取りまして、その個別の2D画像の各ドットの色味を、対応するLEDに送っているようです。

3Dエフェクトを分解して、各LEDに割当

結論「チームラボさんすげぇ … 」

なんだかんだ、早足でいろいろ書かせていただきましたが、細かく突き詰めれば、ひとつの作品を作るのに、ほんとうにとんでもない労力と時間が使われているのを感じることができたと思います。

そして、その、チームラボさんの技術力に裏打ちされた、数々のアート作品は、その内情を知ったとしても、みた時にうける感情や感動は変わりません。

やはり、オンリーワンと呼ぶのにふさわしいアート集団だと思います。

もし、自分で作ってみたいと思ったら

流石に、これだけの規模と才能を、個人レベルで行うのは無理ですが、Unity と、デベロッパー向けのの接続方法が公開されている LeapMotion のようなセンサーを利用すれば、同じような遊びを行うことも可能です。

ちなみに、Unity は、一定の売り上げの無い会社や個人であれば、無料でほぼ全機能利用できますので、興味がありましたら見てみてください。