Baku Hashimoto

橋本 麦

August 25, 2016

具体性に欠けた形をした食べものはかわいい。「料理」というよりは「材質」みたいな、なんかそういうボワッとしたもの。

Making of “depthcope” (EN)

日本語はこちら

VIDEO SOURCE

Below is quick technical note.

Summary

This video is originally made for the Japanese TV Show, “TECHNE – The Visual Workshop“. The every episode introduces one visual technique such as stop-motion, then challenges creators to produce a short video using that tequniques. I’ve called to appear on the program as a video artist, and my theme in this ep is to use “rotoscope”. I had been thinking about how to extend the notion of rotoscope, and finally came up with this “3D rotoscope” technique.

To explain it briefly, I made the 3d previs for rotoscoping in Cinema4D at first. It includes a 3d-scanned face with Kinect and geometrical forms which are not usual as a motif of clay animation. Then I rendered them as “depth map”, which represents a distance from the reference surface, such like a topographical terrain map.

Next, I set a pair of Kinect and projector right above the rotating black table(referred as ‘disc’). I made the app which enables to display whether heights of each point on a surface of the clay is higher or lower comparing with the depth map with colored dots. If higher, it represented as red. The lower one is blue. It becomes green when it gets nearly right. Therefore, the form of the clay almost corresponds with the previs if all of the dots turn into green.

I mean we can trace the 3d previs with a clay by repeating this more than 500 times. Generally speaking, clay animations tend to be more handmade-looks, and an analog one. However using such this workflow, I thought clays will move and metamorphose precisely like CG. In addition, I want to combine the highly automated system with such an old-style and laborious technique.

System

I used Dragonframe and EOS 7D for shooting stop-motion, openFrameworks for creating the shooting app. I adopt a Kinect V2, which partially works on mac.

Integration of Dragonframe and openFrameworks

Dragonframe only can send events by calling shell script with parameters, so I wrote the script which sends as OSC with Node.js.

baku89/dragonframe-osc – GitHub

Kinect-Projector Calibration

I used ofxKinectProjectorToolkitV2 for transformation from 3D Kinect coord to 2D projector coord. I calibrated with this sample in the addon. It exports calibration.xml which includes some coefficients.

The implementation of a transformation using the coefficients appears to be written ofxKinectProjectorToolkitV2::getProjectedPoint(), and I referenced it and rewrote as the shader program to make it more efficient.

Converting to the disc coord

I realized a need for converting between the disc coord (whose origin is positioned at the center of the disc) and the Kinect coord (at IR camera) so I implemented the system to set an X-axis and Y-axis on the disc, like below gif:

Shooting

It was so tiring😭

References

Others

I made the mount for the projector and Kinect. Modeled with Fusion 360, and cut the parts from MDF with my CNC milling machine. Honestly, it was most exciting time than any other processes lol

As you can see, I had planned to control also the rotating table, but it was failed because of a shortage of torque of a stepper motor 😨 I have to study about mechanic more.

Incidentally, I wanted to mix iron sand and a glitter into the clay to make it more variant texture. Below picture is the experiment for it.

And I also found the problem that the measurement of depth is interferred by a man who stands very close to a Kinect. Not to wiggle the measured heights, we have to go on standing the same position. After all, we had referenced the guides and contours which rendered with Cinema4D additinally. I’d like to find a smarter way.


Although there’s many reflection points, it was so interesting to make such an experimental work with experimental workflow.

I think Kinect community should be hotter. Until a few years ago there’s so many digital arts using Kinect whose visual looks like “Minority Report”, and it had got out of date. Many creative coders are now working on VR or deep learning field. However, I think there should be a lot of undiscovered ways to use a depth camera, whether using its depth image to visualize directly or not. So I’d like to go on digging it.

And I really don’t want to touch a clay anymore, at least 10 years lol

Making of “depthcope”

English version is here.

VIDEO SOURCE

技術メモ。

概要

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を掘っていこうと思います。深度カメラを使ってできることってもっとあるはずなので。

あと、当分粘土はさわりたくないです。

ジェネレーティブになにかする時, なんとなく意識すること

After Effectsに求めること (妄想)

新しいコンポジションの種類

子コンポジション

普通のコンポジションから, 再利用性を一切抜いたもの. 特定のコンポの中に, 一度のみ使われる.
TCも親コンポに同期していて, プロジェクトパネル上でも親コンポの子要素として表示される. フォルダ機能にも近く, 親コンポのレイヤーパネルの中で, Finderのツリー表示よろしく展開することもできる.

クラスコンポジション

普通のコンポジションは再利用性がある一方, 再利用先のコンポ内でそれぞれに別の見え方になるような設定を個別にできなかった. クラスコンポジションは, よりコンポジションを抽象化することで, そういった問題を解決する. コンポジション自体に, カスタムプロパティを設定できる. 「コントロールエフェクト」をコンポジションに追加できるイメージ. そのプロパティはエクスプレッションを用いてコンポ内のレイヤーのプロパティとひも付けることができる. 再利用先の親コンポから, クラスコンポジションのカスタムプロパティを設定することで, クラスプロパティ内のレイヤーを再利用先から間接的に制御できるようになり, ある種のカプセル化が可能になる.

映像業界用語

こういうのって全然説明されないから, 学生で制作バイトしてる時困ったよねってやつ. 今でも結構分からないの多くて困るのでメモ. 一般的な技術用語というより, 特殊な使われ方をしている業界用語のみ. 個人的に聞いた意味合いでしかない.

完パケ / パケる

納品すること, くらいの意味合いで使われてる.
完パケ – Wikipedia

白完

編集室で別途テロップを載せるなどするなどの理由で, 文字情報を外した状態で書きだした編集後の映像データ.

QT / モブ / mov

大体拡張子が .mov のファイルをゆるく指してる. mov自体はただのコンテナフォーマットなので, 実際にどういうコーデックで欲しいか確認しないといけないんだけど, 8割方ProResを指してたりもする.

パカチェック / ハーディングテスト / パカる

ポケモンフラッシュの二の舞いになんないかチェックするやつ. 時々, MVの背景セットとかにあるLEDディスプレイに出す映像すらパカチェックかけられたりする. 規格がオープン化されないのとか, (Webでする方法もあるけど)編集室入んないとチェックできないのとか本当アホ臭いのでみんな嫌ってる. 詳細

オフライン

原義をたどればこういう違いなのだけど, ほぼオンライン編集(編集室入っての最終調整)の前段階の事をゆるく指してたり, 納品前の「チェック映像」のことを指してることすらある.

HS

ハイ(High)スピード(Speed)で撮影すること. つまり, スローモーションのシーン撮りたいときは, HSで撮る. イメージと逆. 対義語は 微速度撮影 (=タイムラプス撮影)

Vコン

ビデオコンテなんだけど, 案件によって色々作り込み具合が違う. プレビズ映像の事を指すこともあれば, コンテを並べただけのこともある. 時々, vimeoの映像つなげただけのしょうもないやつもある.

香盤表

= スケジュール表

制作

「製作」との対比としての「制作」って使われ方と,「 制作進行をする人」「制作会社」って意味での使われ方の2パターンあったりする.

ロケハン / プレロケハン

ロケハンは, 撮影現場を事前にディレクターや撮影監督, 照明部とかで下見すること. プレロケハンは, その場所が決まる以前にディレクターと制作さんとで色々ロケ場所候補回ったりする.

PPM

“Pre Production Meeting”. 撮影前の最終打ち合わせ.

ピンが来てない

= フォーカスが合ってない. ディレクターによってはこういう風に言う.

Yを叩く

なんかカラリストに指示だす時に, 撮影監督が言っててかっこいいと思った. ハイ(明部)の黄色を抑え気味にする, って意味っぽい.

June 18, 2016

メディアアートやcreative codingは, ワークフローや技術へのニッチな興味・研究をファッションライクに表現する捌け口になっている側面もある気がするので, コードをコードとして, 論文を論文として発表出来る人は個人的に煩悩を断ち切っていてかっこいい気がする.

作業環境を一時的に移動させるときに合ったほうがいいもの

スリットスキャンをヌルっとさせる小技

スリットスキャンをAEの時間置き換えでやるとこうなりがちなんだけど, もう少し滑らかにするメモ. 質問があったので.

  1. 無理してHSで撮らずとも, Twixtorでfpsを強制的に上げればOK.
  2. AEのbit深度を16, 32にする. 大体の場合16bitで十分.
  3. AEのコンポジション設定のfps上限が99である事に気をつける. (pre-composeしてるとトラブルの原因に)

(3)は, HS素材をフッテージの変換から解釈するfpsを変換しやればOK. 半分とか. その分再生時にスローなるので注意ですが.

ビット深度は, マットレイヤーに変なマッハバンドが出ていない限り実はそんな関係なくて, Twixtorでfps上げるのが一番効果的. PhotoBoothで撮った30fpsの動画でも, 上記の設定しゃんとするとこんな感じになる.

(30fps→90fps, 16bit)

Making of “Olga Bell – ATA”

I made the video for “ATA”, taken from Olga Bell‘s LP.

Although there are many hidden concept and context we had discussed, however, it doesn’t need to be explained. I’d like to write only a few technical note for me, or perhaps someone who want to know such a niche techniques.

3D Matte Painting

Although the video perhaps looks like 3d scanned like this, or this, I actually modeled all the object by hand with using a basic technique called “3D matte painting”. I simply projected the photos taken by Josh Wool to the whole scene, and modeled an object so that its perspective bends weirdly against a rule of thumb. I used Cinema4D and X-particles plugin for modeling, and Photoshop for decomposing into layers. (Just applied the “content aware fill” for backside of the layer lol) FYI, I inspired by reverse perspective paintings, Felice Varini’s works, and some topological shape like Calabi-yau manifold.

Melting the Texture using oF

I’ve experimented generating an abstract gradient with bending daily taken photos, which I personally call the method “Feedback Displacement“. It repeatedly warps an input image a little and then makes a pattern like a hand marbled silk. I had performed it as Vjing few times in this year, and I’ve wanted to introduce this technique to normal video-production.

I built the simple system to integrate C4D with openFrameworks which enables to use oF as a sort of external renderer of C4D. The oF app exports sequence images syncing frame with C4D, and it can be set as animated texture in C4D. The flow is below:

  1. C4D sends a frame number and current parameters (warping speed, angle, and opacity) via OSC
  2. oF receives the message then applies a displacement effect to the current frame.
  3. Save frame as needed.
  4. oF sends back a message “just done rendering” with frame number via OSC.
  5. When receiving above message, C4D increments the frame then returns to (1)

The advantage is you can cherry-pick advantages of both timeline based app and generative approach. C4D and some general video-production software are not good at a kind of “difference equation”, which increments a difference to a previous result repeatedly. It is because such an app needs to be capable of multi-thread rendering for a tremendous amount of calculation. So any frames not allowed to depend on another frame’s status as long as baking the result for each frame. But creative coding approach realizes it very easily.

On the contrary, code-oriented tools are not good at timeline based processing like making a music video. Although part of digital artists uses VEZÉR or Ableton Live as a sequencer, I decided to do with C4D directly since it’s the most simple way I guess. Incidentally, this idea originally comes from Satoru Higa‘s experiment.

I uploaded the sources and project file. I think they’re pretty tangled, though.

baku89/ATA: Tools for “Olga Bell – ATA”


I’ve been always curious about “making new ways to make” as much as an artistic or visual aspect. This quoted from Masashi Kawamura‘s word about his concept making (and originally comes from Masahiko Sato). However, for me, as a designer and coder, it is “designing new workflow and tools to make”. Even I don’t know what I want to mean myself lol but I want to continue experimenting.