その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

一泊二日のopenFrameworksセミナーに参加してきました


先週末、『デジタルアートセミナー#3 openFrameworksで学ぶ、クリエイティブ・コーディング』という一泊二日のセミナーに参加してきました。(※参加者のTLでは「oFセミナー」という呼称の方が一般的でした)


自分にとっての openFrameworks (以下 oF)は、 去年真鍋さんと仕事したいがために少しかじってみた ものの、さらっと基礎をなでただけで結局一度も実案件で使うことも自分で何かつくってみることもなかった、という程度の縁しかありません。


それでも参加したのは、講師陣と内容がすごく興味深かったからです。


2014年の今に boost ライブラリについてがっつり2時間半教えてくれるセミナーはなかなかないだろうし、iOS 8 から CIKernel が追加されて GLSL で Core Image のカスタムフィルタをつくれるようになった ので、GLSL についてプロ中のプロから直接学べるなら是非ともという感じだし、プロジェクションマッピングは流行り始めてから数年経つけど自分ではやったことないので要素技術とかポイントは把握しておきたいし、映像制作ソフトの連携や映像解析の話も興味ある分野だったり。


つまるところ oF 抜きにしても今回のセミナー内容は自分にとって学びたい内容ばかりだったので、募集開始直後1分以内ぐらいに全力で応募した次第です。


で、実際に参加してみた結果、期待以上でした。「これが聞けただけでも参加した甲斐があった!」と思った話が何度あったことか。これで宿泊費込みで1.5万円は安すぎるので、次回あったら10万円でも参加したいというレベルです。(実際に講師/TAの方々に正規フィーを払ったらそれでも済まないだろうけど。。)


では以下、それぞれのセッションについて。

セッション1 : C++テクニック(boostライブラリの使い方)

講師 : 堀口淳史、藤本直明
openFrameworksを本格的に使う上で避けて通れないC++のテクニックを学びます。
今回は、boostライブラリの使い方について学びます。


oF も C++ も初心者レベルだったので参加前はついていけるか不安だったのですが、基礎の基礎からじっくり丁寧に解説してくれて、libstdc++ と libc++ の違い とか、「oFで動くMacのboostバイナリ」をコンパイルするためのビルドオプションがどういう理由で決まってくるのかとか、あとboostの使い方自体も、非常に勉強になりました。


詳細な講義メモはこちらにあります。

セッション2: Shaderテクニック(GLSL)

講師 : 藤本直明、神田竜、他
GLSL(Shader)と呼ばれるOpenGLの機能を解説し、それを応用した映像表現を学びます。今回は、3Dを中心としたシェーディング手法を中心に解説していきます。


冒頭に書きましたが、iOS 8 から CIKernel で自前フィルタを GLSL で書けるようになったし、GPUImage とかで自前フィルタ追加したい場合もシェーダを自分で書ける必要があるしで、わりと以前から自分の中でシェーダはちゃんと勉強したい項目のひとつでした。


で、やっぱりこのセッションも超勉強になりました。


自分が興味があったところはフラグメントシェーダ(ピクセルシェーダとも呼ばれる)のあたりで、よく分かってなかった Vertex Shader とかのあたりもすごく腹落ちしたし、ライティングについても ライトの種類から拡散光の求め方まで順序立てて教えてもらえて、これまた勉強したいと思っていた3Dプログラミングの勉強もできた感じです。



詳細な講義メモはこちらにあります。

セッション3: 自己紹介&ショートセッション

講師/TA陣が自分の案件とその中で使ってる技術Tipsを紹介してくれるセッション。流れ解散制で、自分は深夜2時に退室したのですが、実に深夜3時半までセッションは続いたそうです。


オフレコな話が多かったので詳細レポートはできませんが、「あの案件の裏側はこうなってたのか!!!」みたいな話が盛りだくさんでこれまた勉強になりすぎる内容でした。


あと、みなさん技術+デザインとか演出のセンス+アイデアがすごくて、iOSしかできない自分はより精進せねば・・・と改めて思ったのでした。

セッション4: プロジェクションマッピング

openFrameworksでのプロジェクションマッピングの基礎を学び、実際に数名ずつのグループで簡単な制作を行います。 また、エッジブレンディングやメッシュワープなど、実践的なプロジェクションマッピングを行う上でのテクニックについても紹介します。


個人的にはあまりプロジェクションマッピングにはそんなに興味がなくて、そしてやったこともなく、でもすごい流行ってるのでちょっと気になる、ちょっと自分で体験してみたりはしたい・・・みたいな存在だったので、まさにうってつけのセッションでした。



講義メモ:


このセミナー全体を通して感じたことですが、プロジェクションマッピング(とかAR)は、もはや興味があるとかないとかのレベルじゃなくて、リアルな場での表現手段としてもはや当たり前なものになってるんだなーと。「これはプロジェクションマッピングの作品です」みたいな感じじゃなくて、演劇の背景だったり、TVのスタジオで世界観をつくる使い方だったりで表現のいち手法になってる感じ。

セッション5: openFrameworksと映像制作ソフトの連携

ライゾマ比嘉さんのセッション。

AfterEffectsやCinema4Dなどの映像ソフトとopenFrameworksを連携させる映像制作手法の紹介を行います。 (AfterEffectsやCinema4D、Ableton Live、Adobe Premiereなどをお持ちの方は、持参して頂けると手元で試せるのでよいかもしれません)


受講前は、「AfterEffects持ってないなー」「Cinema4Dって何??」ぐらいの感じだったのですが、動画内のサッカーボールのトラッキングを After Effects でやって、そのキーフレームを取り出すことでいかにも映像解析がすごい的に見せる みたいな方法は目からウロコで感動しました。



あと、ofxPDF というアドオンで、PDFベクタ形式のデータを読み取ってアウトラインを順番に取り出してアニメーション表示するやつは、すごくいい感じなので iOS ネイティブにも移植しようかと。Xcode 6 の Asset Catalog でも PDF ベクター形式をサポート したので、PDF 形式自体が iOS 界隈で一般的になってきそうだし。



講義メモ:

セッション6: 映像解析によるインタラクション

openFrameworksとOpenCV(ofxOpenCV、ofxCv)を組みあわせることで、映像を用いたインタラクティブな表現の可能性が大きく拡がります。このセッションでは、実例を紹介しながら映像とのリアルタイムなインタラクションの手法を探ります。

田所先生のイントロ、ひつじさんのオプティカルフロー+ドロネー変換、ライゾマ登本さんによるアドバンストな話、の豪華3本立て構成でした。


動画の中から、人間の目ではわからないような微細な変化を検出するアルゴリズム EVM(Eulerian Video Magnification)、トラッキングしながらリアルタイムに学習もしていく TLD(Tracking Learning Detection)アルゴリズム等々、非常に勉強になりました。


(EVMの処理フロー)


講義メモ:


あと、講義の後に、登本さんにとあるライゾマ案件のしくみについて直接聞いてみたところ、自分が用意してた答えとは全然違ってて、聞かないとわからなかったであろう方法だったので、それもほんと質問してよかったなと。

おわりに

最高でした!主催のみなさま、講師のみなさま、TAのみなさま、セミナーハウスのみなさまどうもありがとうございました!!