Making-of: depthcope
このビデオの技術メモ。
ソースは以下。
GitHub: baku89/depthcope-tools
概要
NHK Eテレで放送中の「テクネ -映像の教室-」という番組内で、ある映像の技法をテーマに、映像作家がショートムービーを作るというコーナーがあります。今回は僕が依頼を受けたのは「ロトスコープ」でした。ドローイングも下手くそなことですし、いっそ開き直って普通に「実写映像の輪郭線を鉛筆でなぞる」のではなく、「立体の表面の高さを粘土でなぞる」ことに挑戦しました。いわば、3Dロトスコープです。
イメージとしては、まずCinema4Dで、ロトスコープするための立体アニメーションを作ります。Kinectで3Dスキャンした顔だったり、クレイアニメーションではあまりやらないような、幾何学的なモーショングラフィックスも取り入れました。それを、ちょうど標高の地形図のような、「深度マップ」として書き出します。
次に、粘土を盛るディスク状の回転テーブル(以下、ディスク)の真上にプロジェクターとKinectを設置して、テーブルに盛られた粘土の高さが、先ほどの深度マップより高いか低いかを、粘土の上に色分けされた状態で投影するシステムを作りました。今回の場合は、基準高さより高い箇所は赤、低い箇所は青、許容値以内に収まっている場合は緑です。つまり、粘土が全部緑色になれば、それはCinema4Dで作った立体とおおよそ同じ形になっているということを表します。
これを500フレーム超、粘土が緑色になるように形を調整しながら1枚1枚コマ撮りしていくことで、3DCGで作った立体をそのまま粘土でトレースしていってしまおうという寸法です。普通クレイアニメは、有機的で手作り感の溢れる動きになりがちです。こういった作り方をすることで、粘土のくせにCGみたいに正確に動くキモさだったり、3DCGで作ろうとすると却って面倒くさいような、色の混じりあいや表面の凸凹といった偶発性の両方を取り入れられないか試してみたかった、ってことです。
システム
コマ撮りソフトにはDragonframeを使用。撮影は7D。システム周りは全部openFrameworksで作りました。Kinect V2をMacで動かしてます。
DragonframeとopenFrameworksの連携
Dragonframeのイベント送出は引数付きでシェルスクリプトを呼び出すという謎仕様なので、OSCとして送出しなおしてやるスクリプトをNode.jsで書きました。
baku89/dragonframe-osc – GitHub
Kinectとプロジェクターのキャリブレーション
Kinectからプロジェクターへの座標変換は、ofxKinectProjectorToolkitV2に全部任せました。サンプルのcalibrationを使って吐き出したcalibration.xml
を使う。
キャリブレーション係数を使った座標変換は、ofxKinectProjectorToolkitV2::getProjectedPoint()
で実装されているようですが、このあたりを参考にシェーダで書き直しました。
ディスク原点の座標系との変換
Kinectのカメラ位置原点の座標系と、ディスク原点の座標系とを変換する必要が所々出てきたので、その仕組みも実装。ディスクの上からガイド用のシートを乗っけて、下のGIFのようにディスク上のX軸Y軸を設定。
撮影
あとはひたすら撮影。500F超撮影しました。
リファレンス
その他
プロジェクターとKinectのマウンターを自作しました。むしろ本編より頑張った。Fusion 360を使って設計し、フライス盤でMDFボードを切削。
回転台も自動制御する予定でしたが、トルクが足りず失敗😨 電子工作とメカニックしゃんと勉強したい。
撮影システムを作るのに時間をかけ過ぎて、十分にコマ撮りする期間を取れなかったのも反省点です。本当は、各粘土に砂鉄やグリッター、真鍮箔などいろいろなものを混ぜて、変な質感を出してみたかったです。
また、Kinect自体、V2になって格段に精度が上がったものの、近くにいる人に影響されて、粘土部分の深度も干渉を受けてしまうということが分かりました。思ったほど標高ガイドがうまく働かず、結局Cinema4Dで出した輪郭線や補助線を頼りに造形した部分も多々あったので、課題点です。
一体これがロトスコープだったのか、「ストップモーション」とか「撮影機材」、「プログラミング」でもなんでも良いじゃねぇか、って気持ちにもなりつつ後半作ってました。予想以上にうまくいった点、失敗した点もありましたが、こうやってしゃんと、実験しながら作ることができたので面白かったです。
Kinectコミュニティもう少し盛り上がってよ!という気も。数年前にKinect使ってマイノリティ・リポートっぽいのが量産されて、そんで(V2のMac非対応もあり)飽きられて今深層学習とかVRにみんな行っちゃってるんで、僕は今からKinectを掘っていこうと思います。深度カメラを使ってできることってもっとあるはずなので。
あと、当分粘土はさわりたくないです。