31, Aug 2013

プログラミングを用いた映像制作のコツ
~パタンの組み合わせと繰り返し~

Kezzardrix名義や、「SjQ++」のメンバーとしての活動を通し、近年注目を集めているアーティスト/プログラマの神田 竜氏に、プログラミングで映像を作る際のアプローチについて紹介していただいた。

寄稿:神田 竜/Kezzardrix(アーティスト)

最近、openFrameworks(※1)やMax6(旧称Max/MSP/jitter)(※2)といったプログラミング言語を使った映像制作環境が流行っている、とされている。リアルタイムに映像をジェネレートするからジェネ系と呼ばれていたりする。筆者もやってる。まあ、実際には筆者が活動している関西でのバリバリな使い手は知ってる範囲だと2、3人しかいないので、実は流行っていないのかもしれない。しかし、openFrameworksの本 が出たり、Max6の日本語版に日本人アーティストのスペシャルパッチ※3)がついたりして日本的には盛り上がって来ているはずだし、筆者もそういう話がわかる飲み友達がもうちょっと欲しい。

実際、openFrameworks等を使った映像制作には取っ付きにくさがある。そもそもプログラミング全般が良くわからん、という壁がまずある。まあ、そこは上述したopenFrameworks本等を読んでタイピングすれば乗り越えられるだろう。が、問題はその次で、四角とか丸とかを書けるようになっても、そこから何をどう発想したら良い感じの映像がプログラミング出来るのか?というのが良くわからない。あんまりそういう本も無いし、こっちの方が高い壁ではないだろうか。VimeoやYoutubeを見て、ジェネ系の映像作品を眺めてみても、これをAfter Effects(以下、AE)(※4)やCinema4D(※5)でタイムラインに並べて手付けで何度も修正、という作り方でやったらすっげえ大変そうだなあと、と思うだけでちっとも参考にならない。事実、作者もjitter(※6)を始めた時、球体が1個、ぽつんと画面に表示されてからが長かった。音に反応させて球体の大きさを変えるところまではすぐ出来たものの、これだけではとてもつまらない。プログラミングを使えば『Gantz graf』(※7)のPVみたいなカッコいいのが「自動的」に作れると思っていた筆者は途方にくれたものだ。後に『Gantz graf』は一切プログラミングを使わずに手付けで作っていると聞いて衝撃を受けたけど。手付けやばい。

※1) 「創造的なコーディング」のためのC++オープンソースツールキット 。ざっくり言うと、ネット中に散らばった様々な用途のソースコードを、世界中の有志がとても使いやすい形に合体させたもの。C++ベースなので、他の環境より複雑かつ実行速度の速いソフトウェアができる。日本のアート系の現場ではこれが標準。
http://www.openframeworks.cc/

※2)Cycling '74が開発・保守している音楽とマルチメディア向けのグラフィカルな統合開発環境。openFrameworksと違い、箱を線で繋いでプログラミングする。こちらもアート系現場では標準。
http://cycling74.com/

※3)Cycling '74のWEBサイトにて、Max6日本語化パッチを購入したユーザーに、国内アーティスト8名から提供されたMax 6対応サンプル・パッチ20ファイルが無償提供されている。筆者もKezzardrix名義で参加した。

※4アドビシステムズ が販売している映像のデジタル合成 やモーション・グラフィックス、タイトル制作などを目的としたソフトウェア。映像を編集してエフェクトをかけてファイルへ書き出す流れ。多機能かつ映像業界標準だが、凝った映像を作るとカクカクのリアルタイムプレビューしか出来ない。

※5)CINEMA 4DはドイツのMAXON Computer社の3次元コンピュータグラフィックスソフトウェア。 一般的にC4Dと略される。学生は無料でフルバージョンが使えるため、使用者が急増中。最近、openFrameworksで生成した頂点や面をAlembicという形式で保存し、C4Dに渡してレンダリングする、ということが可能になった。プログラミングで複雑な動きを生成し、3DCGソフトでリッチな見た目でレンダリングする、という新たな制作手法が現れつつある。

※6)Max6の画像処理部分をjitterと呼ぶ。MIDI等のメッセージ処理部分をMax、音響処理部分をMSPと呼ぶ。昔はバラバラで売られていた時期もあったが今はMax6名称でセット売り。

※7)イギリスのエレクトロニカ・ユニットAutechreによる楽曲(2002年リリース)。PVは映像作家のAlex Rutterfordが制作。


神田 竜 RYO Kanda/Kezzardrix
神田 竜/Kezzardrix RYO Kanda/Kezzardrix

アーティスト/プログラマ。Kezzardrix名義でインタラクティブな映像と音楽、モバイルデバイスを用いたパフォーマンス等を京都、大阪を中心に行う。VJとしては、関西のクラブを中心に活動しながら、SonarSound Tokyo等の大規模フェスにも出演。映像メンバとして参加する「SjQ++」では、2013 Ars Electronica Awards of Distinctionを受賞。アート作品や、デジタルサイネージ、iOSアプリ、テレビ番組等におけるインタラクティブな仕掛けのサポートプログラマとしても多岐に渡る活動をしている。他の賞歴として文化庁メディア芸術祭審査委員会推薦作品や学生CGコンテスト優秀賞等。映像作家100人 2013選定。openFrameworksやMax6等の講師としても活動している。

Kezzardrix WEBサイト
http://www.kezzardrix.net/

Twitter アカウント
@kezzardrix


さて、もちろんプログラミングは何かを「自動的」にやるのが得意だ。しかしその自動化は手付けできることを代替するのではなく、自動的な処理ではないと表現できないようなことに対して使った時、初めて効果的になるだろう。

というわけで、本稿では筆者がプログラミングで映像を作る時によく使うアプローチを紹介しようと思う。筆者はKezzardrixという名前でライブビジュアルとかVJとか何か色々やってる人である。もちろん、プログラミングを使った映像制作には様々なアプローチがあるし、筆者が本稿で示すものはその1例でしかない。が、多分どこかの部分は他のアプローチにも転用可能だし、どこかの部分は他のアプローチでもすでに確認できる事項だと思う。

ひとまず、作者がこの原稿用に作ったジェネ系ネタの映像を見てみよう。openFrameworkで組んだものに、Yaporigami(※8)氏のHz records(※9)から出ている楽曲を突っ込んでintensity extreme(※10)で一発撮りしたものだ。

Generative Visual Example from Kezzardrix on Vimeo.

世間一般、と言って良いかわからないが、ジェネ系では割と基本的な表現技法の3Dワイアフレーム音反応バキバキ系だ。さて、openFrameworksやMax6の基本を覚えた初心者がこの映像を見せられて、さあこれを参考に音反応系の映像を作って下さい、と言われて出来るだろうか?多分結構キツい。このまま丸投げで学生の課題として与えたら死屍累々になるのは良く知ってる。

※8)日本と英国を拠点に活動する電子音楽家Yu Miyashitaによるビートミュージックプロジェクト。
Official Site UNDERARROW

※9)Hz-recordsはPakcheeとwk[es]が主宰する電子音楽レーベル。「2010年型の新しい音楽スタイルを東京(日本)から発信すること」「東京(日本)から世界に輸出すること」「新たな才能の発掘とチャンスを与えること」「電子音楽シーンの発展と育成」を目標/目的としている。
http://www.hz-records.com/

※10)Black Magic Design社による、AVキャプチャー。コンピュータの画面と音を同時にリアルタイムレコーディングできる。録画用のコンピュータが別に必要。この手の製品では比較的安い。
http://www.blackmagicdesign.com/jp/products/


しかし、初心者でも簡単な音反応なら割とすぐに出来ると思う。例えば、jitterを始めた頃の筆者がやったように、音に反応させて図形の大きさを変えるとか、位置を変えるとかだ。例えば下記リンクの冒頭みたいな感じで。

sample1 from Kezzardrix on Vimeo.

ここでは音量に反応して立方体の位置が移動している。こういう図形に与えられた音と関連した単純な動きを、便宜的に「動きのパタン」と筆者は呼んでいる。「動きのパタン」にはそれぞれ名前とパラメータを考えることができる。例えば上記の映像なら「移動」という名前で「X方向」「Y方向」「Z方向」のどっちへ音に反応して動くか、という感じで分類できる。まあ、そのまんまです。で、「動きのパタン」を適用する幾何学図形、この例での立方体を「プリミティブス」と本稿では呼ぼう。

同じ要領で、どっちかの方向に引き延ばす「スケール」が20秒目あたり。

sample1

どっちかの方向に回す「回転」が30秒目辺りに出てくる。

sample1

ここまではopenFrameworks本にも載っている簡単なコードですぐ書けるし、どんな動きが出てくるか簡単に予想できると思う。
が、例えばこの3つを組み合わせて同時に音に合わせて動かすと何が起きるだろう。下記のリンクでは3つの「動きのパタン」の各パラメータを少しずつ変化させることで、「動きのパタン」を同時に適用している様が確認できる。

sample2 from Kezzardrix on Vimeo.

どうだろうか。最初の個別の「動きのパタン」を見ていた時からはちょっと予想できなかった動きが出てきたのではないだろうか。

ここまで来るとプログラミングを使って映像制作をするメリットが少し見えてくる。手付けだけでの映像制作では、「移動」の「X方向」への反応をちょっと修正しよう、と思っただけでも割と大変だと思う。ましてや、制作中の画面を覗き込んだ上司やクライアントが、あ、これバスドラ一発毎にランダムな動きにしといてよろしく!とか言い放って去っていったら最悪だ。しかし、プログラミングを使えばこれが出来る。しかも、リアルタイムに映像を動かしながらできる。

それから先に述べたように、プログラミングは「自動的」に何かを行うことが得意だ。次にここで「移動」「回転」「スケール」それぞれのパラメータの音への反応具合を、自動的にランダムで変更するようにしてみよう。変更するタイミングはある一定以上の音が入力された瞬間だ。ついでに「プリミティブス」が「ワイアフレーム表示」か「ポリゴン表示」かの切り替えもランダムにした。

sample3 from Kezzardrix on Vimeo.

こんな風に、単純な動きをまず組んでおいて、その組み合わせとパラメータをリアルタイムかつ自動的に変更出来るのがプログラミングでの映像制作における強みである。もちろん上に挙げた例以外にも様々な単純な動きが考えられると思う。


さて、プログラミングが得意な「自動的」な作業はこれだけではない。例えば、100回でも1000回でも人間なら嫌になる作業の繰り返しを自動化できる。つまり、「プリミティブス」を画面にたくさん書くとか、である。もちろん、まったく同じものを同じ動きで描画しても仕方が無いので少し工夫が必要になる。例えば、1個目の「プリミティブス」は2倍で「スケール」し、2個目は3倍、3個目は4倍、といったような段階的な変化が思いつく。
というわけで、「動きのパタン」のパラメータを少しずつ変更したものをたくさん描画してみよう。

sample4 from Kezzardrix on Vimeo.

最初に見て頂いた作例映像に大分近づいてきたのでは無いだろうか?それと、もう一つ注目して欲しいのが、これがリアルタイムにレンダリングできる点である。同じようなことをAEでやるとレンダリングの待ち時間で死にたくなるだろう。

最初の筆者の作例では、本文中に挙げた「移動」「回転」「スケール」以外に、「プリミティブス」のアルファ値を変える、画面全体を回転させる、画面全体の色を変える、等の「動きのパタン」を組み込んである。また、「回転」を画面の中心を軸に行うか、「プリミティブス」の中心を軸に行うか、といったこともランダムで切り替えるようにしてある。加えて、「プリミティブス」として立方体と頂点数を削った球体を交互に表示させていたりもする。が、基本は同じで、単純な「動きのパタン」を「プリミティブス」毎に段階的に変化させ、100個くらい一気に書いて、音反応で自動的にランダムに切り替える。
また、同じ仕組みでも、「プリミティブス」を自分が好きな画像等に置き換えることで、全く違った雰囲気の映像を作ることができるだろう。

openFrameworksのソースコードをこちら に上げたので、興味がある方はダウンロードして手元で動かして見て欲しい。Macの標準マイクで音を拾い、映像が動くような感じになっている。画面全体の回転等のエフェクトは、トグルにチェックを入れた上で、threshで設定した値以上の音量が入ってくると起きる。まあ、適当にいじってみてください。Winでどうなるか知らん。けど、openFrameworksだしソースコピったら多分動くはずだ。

ちなみに筆者が実際にパフォーマンスを行う際は、もっとたくさん「動きのパタン」を組み込む。GLSL(※11)という難解でやれやれなやつも使う。で、その組み合わせをたくさん試して、これは!と思う組み合わせをプリセットで保存しておき、それをランダムで呼び出してプレイする(筆者はプリセットをMaxで作って、openFrameworksを外部からコントロールするというのを良くやっている)。

※11)openGLと組み合わせて使う画像処理専用のプログラミング言語。openFrameworksやjitterの中で使う。色々と細かいことができる上に実行速度が爆速だが、とてもむずい。


sample

今回は完全にランダムに組み合わせを行う感じにしたが、膨大な組み合わせからかっこいいものを探して取り出すところに、作家性のようなものが宿らないかなーなんて思って日々制作している。

本稿では、最終出力からは複雑に見える映像も、単純な動きをプログラミングし、その組み合わせで実現できることを示した。複雑な出力を得るのに複雑なプログラミングは必ずしも必要ではないわけで、単純なルールの組み合わせから多様なバリエーションを作り出せることが、プログラミングでの映像制作の醍醐味である。で、それをリアルタイムに回して色々試し、作者にも予測出来ない映像がポッと出てくる瞬間に立ち会うとアガる。本稿で、少しでもプログラミングでの映像制作に興味を持ってもらえる人が増えれば幸いである。


プログラミングを用いた映像制作のコツ
~パタンの組み合わせと繰り返し~

Category: Digital Imaging





PAGE TOP