uitspitss blog

プログラミングと音楽とエッセイ ※記載内容は個人の見解であり、所属する組織とは一切関係がありません。

openFrameworksでドーム映像制作

[2017/05/18追記]

  • 3つ目の動画で使用している楽曲の使用許可をいただけたので、音ありに変更。
  • その他のスナップショットに追加。

今回は、ドーム状のスクリーンに投影する映像を作った話です。 ドーム映像の業界では、ドームマスターと言われている、円型にレンダリングされた形式の映像を投影しています。 (参考:ORIHALCON Project: 全天周映像(ドーム映像)の作り方)

私がやっていたのは2015年の頃で、openFrameworksを使ってドームマスター形式の映像を作ってました。 以前は、ドームマスター形式の映像はAfterEffectsのプラグインなどで制作されることも多かったみたいですが、 最近では、Unityなどを使って制作することもできるようです。
Unityによるインタラクティブドームコンテンツ作成 | 株式会社オリハルコンテクノロジーズ | ORIHALCON Technologies, Inc.

今やるなら、断然 Unity でやりたいですね!

ofxDomemaster

今回は、いくつか作例映像と使用したaddonを紹介していく形で書きたいと思います。

まず、どの作例映像にも共通しているのが、ofxDomemaster というaddonです。 openFrameworksではaddon(ofxaddons.com)を追加して、 映像を制作していくことができます。中身はC++のライブラリだったり、シェーダーだったりします。

この ofxDomemaster は、簡単に説明すると、ドーム型のメッシュに沿って映像を歪める作用をするaddonです。 addon内で定義されているfisheyeCameraを通して撮影?した映像はドームマスター形式に簡単にレンダリングができます。 私が使ったときには、カメラを回転させたりしたかったので、少し書き加えて使ってました。

https://gist.github.com/uitspitss/90b550bdc9682659b1ea74195cf39534
(試行錯誤の跡が残っていますが、そのままコピペしました)

音楽に合わせた映像

ただ、ドーム映像を作るのも味気ないので、音楽に合わせた映像を作りました。 最初に試作した映像は、雨粒のような短い音が印象的な Akira Kosemura の 「It’s on everything」 を題材にしました。

著作権の都合上、音なしです。公式の音源動画→ITS ON EVERYTHING by Akira Kosemura - YouTube

当時、私が音の解析をしたいと思っていて、雨粒のような音を探す音解析部分はpythonで作りました。 その結果をテキストファイルに書き出して、openFrameworksで描画をしたのがこの映像です。

ofxFX

patriciogonzalezvivo/ofxFX: Unlocking the GPU Power on openFrameworks with this add-on for that make easy to use GLSL Shaders

この映像で使ったaddonは、openFrameworksでもかなり老舗addonのofxFXです。 ofxFXは、映像に様々なエフェクトをかけるシェーダーの詰め合わせaddonになっていて、今回使った水の波紋はaddon内のripple.hというライブラリを使うと表現できます。 簡単に説明すると、点を描画した映像にシェーダーをかけると、点が波紋として描画されていくという感じです。 動画の左上にパラメーターを表示していますが、この中のdampingというパラメーターが波紋の拡がり具合に作用します。 動画内では、このパラメーターを途中から変化させているので、点状に描画されていたものが次第に波紋状の描画に変わっています。

カメラを動かす

先ほどの映像では、カメラが固定されていましたが、今度はカメラを動かした作例映像です。

音源はフリーの音源で、フリーBGM素材 『ひらひらり』 試聴ページ|フリーBGM DOVA-SYNDROME

この映像は、実際に動作している様子を撮影しました。このタイムライン上でカメラやその他のパラメーターを決めて、映像用の画像を書き出すようにしてました。 とりあえずいろんなaddonを試してみようと思って作っていたので、かなりゴチャゴチャしています。 それから、中央付近の球体の大きさが音にシンクロして変化しているのが分かると思います。

ここでは、

を簡単にご紹介します。

ofxTimeline

YCAMInterlab/ofxTimeline: lightweight timeline tools for openFrameworks

メディアアート分野でよく名前を聞く、YCAMのプロジェクトで作られた?addonのようです。 動画に書き出すときに、再現性のあるカメラワークなどが必要になったので使っていました。 さらに、FFTなども備えていたので、音に合わせた表現にもバッチリでした。 ただ、癖があって、導入までが険しい道だったような印象があります。

ofxShadowSimple

NickHardeman/ofxShadowSimple: Simple shadows in OpenFrameworks

条件によっては、変な影が描画されることもありますが、使い方がまさに simple で使いやすかったです。 動画内では物体とカメラを動かしたので再現されていませんでしたが、影描画用の light を動かすと影がチラつくことがありました。

その他、この作例動画では、

  • ofx3DFont
    動画中央付近の立体文字のaddonです。

  • ofxPostProcessing
    上で取り上げたofxFXと同様のエフェクト系のaddonです。個人的にはofxFXよりパラメーターなりで融通が効いた印象がありました。

  • ofxSPK
    パーティクルエンジンaddon。後述します。

パーティクル三昧

この動画も著作権の都合上、音なしです。使用音源→Chouchouの「LUX Aeterna」です。 ありがたいことに楽曲の使用許可をいただけたので、楽曲ありです。

ピアノの優しい音とボーカルが印象的な曲で、映像がシンクロしやすそうということでの選曲でした。 この映像だけでは物足りない印象ですが、私がやっていたところでは、他の映像ソースもあったので、 それらの映像ソースと重ね合わせて投影すると、結構なボリューム感になりました。 ここで、紹介するaddonはofxSPKです。

ofxSPK

satoruhiga/ofxSPK

数多くのofxaddonの製作者である、satoruhigaさんのaddonです。 このaddonはパーティクルエンジンで、作例動画で出てきているパーティクルのほとんどがこのaddonの作用です。 ドキュメントが整備されていないので、addon内のソースを読みながら導入した記憶が印象に残っています。 (addonとして公開していただけるだけでありがたいことです。語弊があるといけないので…)

解像度

最後に、解像度の話です。映像の制作時は2048x2048の解像度で制作してました。 制作時のPCに積んでいたGPUがGTX750Tiでしたが、リアルタイムの描画でコマ落ち等はなかったです。 一度、4096x4096で動作させたときには、リアルタイム描画が厳しかったような記憶があります。

このopenFrameworksのインタラクティブ性を活かして、ドーム映像をリアルタイムで描画させるようなVJ的な使用も目論んでいました。 ただ、大型ドームだったということもあり、映像を投影する部分(主にプロジェクター類)がリアルタイムの描画には厳しかったみたいでした。 もしかすると、ORIHALCONさんのあたりがそういう技術持っているかもしれませんが…

その他の映像のスナップショットと所感

f:id:uitspitss:20170429155552p:plain

以下、3枚はFFTで描いた波形の中に入り込むような演出。VR的で楽しかった。 f:id:uitspitss:20170518074927p:plain

f:id:uitspitss:20170518074942p:plain

f:id:uitspitss:20170518075001p:plain

f:id:uitspitss:20170429155556p:plain

f:id:uitspitss:20170429155535p:plain

先月までにブログにまとめようと思っていたんですが、久しぶりにVSでプロジェクトを開いてみたら、 うまくビルドができなくなっていたりしていて、まとめるのが遅くなってしまいました。 openFrameworksはこの不安定性が少し扱いづらいところかなと思います。 バイナリができあがると、動作が軽くて良いんですけどね!