Polyphonic Jump is an apparatus for human beings to be immersed in a fantasy world where many creatures chorus in polyphony. Audiences stand in front of a huge canvas on which picture of forest is painted with oil, and jump for interacting with oil-painted animals on the canvas as if the audiences were also on the canvas. The audiences will feel they are actually in a picture book.
For seamless integration of physical painting which gives true reality and computer-generated animation which moves dynamically and interacts with audiences, the authors put real-time 3D modeling and projection technology in this artwork.
- Hotel Okura Kobe, 2012.
- Art in Container, Kobe Biennale, 2011.
本作品は,人間中心的なモノローグから脱し、多様な生き物たちのポリフォニー(多声)が響き合う「自然」の声を聞くための体験型の装置である.自然風景を描いたアーチ型パノラマスクリーンの前に体験者が立つと,その姿が鏡のように映像の中に映し出され,その後徐々に動物の手描きアニメーションが反応していく様子を提示する.
- ホテルオークラ神戸, 2012.
- 神戸ビエンナーレ「アート・イン・コンテナ」展, 2011.
金谷一朗のブログから.
神戸ビエンナーレ,ホテルオークラ神戸のお正月イベントで好評を頂いたインタラクティブ・メディア・アート作品 Polyphonic Jump! の中身をご紹介します.
Polyphonic Jump! は10m幅のキャンバスに描かれた森の中に鑑賞者の映像が投影され,キャンバスの上を動きまわる手描きアニメーションの動物たちとインタラクションが出来る作品です.
この作品のために,Kinectを使ったマーカレスモーションセンサが使われました.鑑賞者の動きは3Dでトラッキングされ,鑑賞者のジャンプはリアルタイムに検出されます.
検出された動きデータは,Kinectにつながった Windows PC からアニメーションを生成する Mac サーバへHTTPリクエストとして送られます.Mac サーバでは Scheme インタプリタ上で動いているHTTPサーバがリクエストを解釈し,適切なフレームデータを計算してPCへXMLで送り返します.
XMLデータを受け取ったPCはXMLを解析し,画像を読み込み,OpenGLを使って画像をレンダリングします.プロジェクタが3台あるので,隙間が出ないように,また位置がずれないように,スムーズにプロジェクタ間をつなぐような処理が行われています.またキャンバスは平面ではないので,ホモグラフィを使った幾何補正も行われています.
バックエンドのHTTPサーバにLISPの一種であるSchemeを使うことは,作品作りの初期から決まっていました.というのも,アーティストと共同で制作するメディアアート作品の場合,仕様というものが最初からないのですから.
Walking on water and developing software from a specification are easy if both are frozen. —- Edward V Berard
(水の上を歩くのと,仕様からのソフトウエア開発は,簡単だ.・・・両方とも凍っているならの話だが.)
という格言があるぐらい,仕様が固まっていないソフトウェア開発というのは困難ですが,そもそも最初から仕様がない場合,開発は不可能とさえ言えます.そこを無理やり進むには,LISP系言語以外に選択肢はありません.
なぜでしょうか.プログラマというのは,目的にあわせて言語を選ぶものです.目的がはっきりしないときに,できるだけ汎用的な言語を選ぶのは非効率です.目的がはっきりしないときには,言語そのものをデザインできる言語を選ぶのです.というわけで,Schemeが選ばれたのは当然の成り行きでした.
開発の過程で,ほぼ毎日,目標が動きました.動く目標を撃つには,何度も,少しずつ,やり直すしかありません.もしLISP系言語以外の言語を採用していたら,おそらく何度もフルスクラッチからやり直すことになっていたでしょう.マクロと,動的型付けと,ファーストクラスクロージャは,例えばクラステンプレートやポリモーフィズムやジェネリックよりもずっとうまく,動く目標を撃つ手助けになりました.
サーバとクライアント間のプロトコルをHTTPとXMLに決めておいたことも幸いしました.サーバのデバッグにはまずFirefoxを使って,想定されたXMLをちゃんとサーバが返しているかの確認が行われました.(ChromeはURLを先読みしてHTTPリクエストを投げてしまうので,デバッグには使いませんでした.)
ある程度サーバの形ができてきた時点で,Mac上でレンダラのシミュレータを作りました.中身は Objective-C 2.0 + Cocoa (XML parser, Aqua UI) + Core Animation で,Mac OS X の優れたライブラリのおかげで100行未満のコードで本格的なシミュレータが完成しました.
レンダラシミュレータはサーバの開発効率を飛躍的に向上させました.シミュレータを見ながら,サーバのコードを試行錯誤して,つくり直していくのです.
このようにして,Polyphonic Jump! は完成しました.
|
|