![]()
Making-of: depthcope
このビデオの技術メモ。
ソースは以下。
license type='mit' href='https://github.com/baku89/depthcope-toolsGitHub: baku89/depthcope-tools/license
概要
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 で書きました。
license type='mit' href="https://github.com/baku89/dragonframe-osc"baku89/dragonframe-osc - GitHub/license
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 を掘っていこうと思います。深度カメラを使ってできることってもっとあるはずなので。
あと、当分粘土はさわりたくないです。



