Baku Hashimoto

橋本 麦

TAG
cinema4d

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

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

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.

Making of “KAMRA – Deja Vu”

Deja Vu | KAMRA の制作メモ書き.

なにを担当したか

Web制作のワークフローの中に, 映像制作の視点で細かい演出を入れ込む係として, 動きやルックなど薄く広くやらせていただけました. 具体的には, Cinema4D(C4D)でモーションつくってJSONに固める作業と, 本編中の動画・画像素材全般です. dot by dot inc.の谷口監督やデザイナーの太一さん, 実装担当のSaqooshaさんと衣袋さんの間で翻訳?っぽいことをしてたような気がします. 映像素材, モーションデータや設定値は全部gitで受け渡し, こまかいとこはコード中の定数と直接いじったりしました.

dot-by-dot-inc/KAMRA-Deja-Vu | GitHub

動かし

あとでJSONにしやすいように整理しつつも至って普通にC4Dでうごかしてます. MIDIデータを元に動きを自動生成するって話もあったんですが, 顔たちが自発的に表情を変えていくように演出したかったのと, デジデジしく作る過程の中に泥臭く手数をかける工程を入れたかったので, あえて手打ちしました. というより, 動きの気持ちよさをしゃんと詰めていくなら, イージングもbezier-curve一発指定とかでは無しに複雑な形にしていく事になりますし, 現状手打ちの方が単に手っ取り早いというだけの話.

「口角を上げる」「右眉を上げる」みたいな表情を30種類近くつくってやって, それをブレンドする方法で動かしてます(いわゆるポーズモーフ). そんな自慢気に言えることではないですが, キーフレーム数は20,000個以上ありました.

モーションや設定値をJSONに

C4DはPythonがふつうに動くので, APIを参考にモーションデータを書き出し. スプレッドシートで, 渡したいデータのフォーマットを共有.
C4DとThree.jsの座標系は逆なので, このへんで掌変換する必要があります.

これを, フレーム毎のデータとしてJSONに固めて圧縮. 相当に強引ですが, 圧縮後も17MB近くあったので, Saqooshaさんの方で配列部分をバイナリデータにして頂きました. データ構造わかりやすいようにモーションデータ部分を空にしたやつも載っけてます. 参考までに.

つくった素材

背景ムービー

塵や, もやがかったエフェクト, 白い線とかをムービーにまとめて, 比較(明)で合成. サランラップや, プリズムが光る映像とかの物撮り素材を使って, WebGL感を無くすようにしました. スクリーンやオーバーレイと違い彩度が持ち上がらないので, ルック的に不気味さが増すのと, 前後関係があやふやになるので, 背景, 前景的要素を一つのムービーにまとめられました.

LUT

青みがかった色調補正データはLUT(ルックアップテーブル)で指定しました. こういうデータを渡して, glsl-lutで補正.

UVパス

顔がとろとろに溶けるシーンや顔のパーツが福笑いみたくあべこべになるラストシーンは, UVリマップの仕組みでデータを作っています. こういうこと. ビット深度不足を補うのと, 圧縮時のアーティファクトを消しこむためにシェーダ側でブラーかけて使ってもらってます.

Making of “group_inou – EYE”

group_inou “EYE”のMV、かなり独特なフローで制作したので、技術まわりの諸々をメモ。丁寧に書いていくと相当な物量になりそうなので、要所だけ抑える感じで…。

どうやって作る

見れば分かる通り、Street Viewを使ってます。そこにコマ撮りしたアーティストを雑コラ的に合成。

大まかなフローは以下の通りです。

  1. ロケハン (スプレッドシートによさ気な場所をピックアップ)
  2. プロキシ版StreetViewの取得 & プレビズ作成
  3. 撮影
  4. 高解像度置き換え & 合成

いくつもインハウス・ツール的なものを作りました。超汚いコードで多分動かなそうだけど、一応まるっとコードアップしときます。

baku89/group_inou-EYE – GitHub

Hyperlapse.js

StreetViewの画像の取得には、teehan+lax社がオープンソースで公開しているHyperlapse.jsを参考にしました。Vimeo界隈だとこのムービーは有名かも。

ただ、実のところHyperlapse.js自体は殆ど使ってなくて、Hyperlapse.jsが依存しているGSVPano.jsってライブラリを主に使いました。本家リポジトリがGoogleから怒られたらしく消されていたので、Hyperlapse.jsに入ってるバージョンを。teehan+laxのどっかに載ってたメイキング記事によれば、GSVPano.js内部で直でパノラマのタイル画像を引き抜いてる所がアウトだったから、API的に呼び出すよう書き換えた、とのことでしたので。

パノラマの取得

Hyperlapse.jsはGoogle Map APIで2点間の経路を検索し、その経路のパスを分割して点群にバラし、各点毎に近傍のStreetViewを検索かけています。つまり、経路検索の出来ない僻地や建物内は行けない上に、僻地や高架などではうまく動かないので、経路検索ではなく、隣接するパノラマのIDの配列を吐き出すツールを作りました。

Pano ID Extractor

ここで吐き出したパノラマIDをGSVPano.jsに読み込んで、パノラマデータを書き出します。

公開した後になって、この方のツイートでtakramさんの記事を知ったのだけど、やってる事はかなり近いです。ただ、canvasをbase64変換したやつをAjax的にゴニョゴニョしてサーバーから保存かけてやるのはコードが分散して億劫だったので、Node.jsの fs.saveFile() 使ったというワケ。で、ブラウザ内からNode.jsのモジュールが使えるようにするために、NW.jsなるものを使いました。要するにNode.jsでネイティブアプリっぽいものが作れるよーっていうやつで、使い方も割と簡単。多分APIとか絡めてジェネ的に映像素材を作るためのフレームワークとして今後もかなり使えそうです。何よりHTML+CSSでUIが組めるのがデカイ。

データの埋め込み

Hyperlapse.jsを使って保存した連番をPremiereで編集したものがこれ。

下の方にある赤と緑のQRコードみたいなのは、保存をかけたパノラマの各種情報が埋め込まれてて。

{
    "id": "WysqsRo6h5YGNmkkXVa9ZA",
    "rotation": 35.11,
    "pitch": 1.09,
    "latLng": {
        "A": 51.59035,
        "F": 3.677251999999953
    },
    "date": "2009-09",
    "heading": 0
}

こういうJSONを、バイト配列にバラし、各ビットを書き込んでるから仕組みは単純です。(該当箇所のコード) 何がしたいのかというと、後で高解像度版に置き換えられるようにするため。フルHDでスカイマップとして使うには横13,000px位は必要なのだけど、そんなバカバカ画像取得しまくったら何となく怒られそうだったのと、編集段階ではなるたけデータを軽くしたかったので、一旦横1600px程度でサクサクよさ気な場所を取得し、Premiereで実尺に編集したのを一気に高解像度版に置き換え。これも専用のツールを作りました。

プレビズ作成

撮影が大変そうだったので、プリプロ段階でかなり細かい所までプレビズを作りこみました。
編集したパノラマをC4Dに持って行ってカメラワークとか付けて。ちょど前のgroup_inouのPR vol.10のティザー映像で、お二人のローポリモデルを作っていたので、それを再利用して人物の動きも決めていきます。

撮影

コマ撮りなので、5Dmk2で写真撮影しました。基本的に雑コラ感を意図的に出し、あまり馴染ませない方向にはしようと思っていたのだけど、それでも最低限パースとライティングは合わせておこうと。そうなると汎用性の高いポーズを素材撮りして随所で使いまわすという方法が難しかった上に、やっぱりそこは苦労してタイムラインに沿って撮った方が画に凄みが出るように思えたので、3000F近く撮ることに。こうなると、時短のためにも徹底的にオートメーション化してやろうということで、またもやNW.jsで撮影用アプリを組みました。NW.js最高。

DMXで照明の制御

ライブハウスとかの照明の制御に使われるプロトコル、DMXを使って、ライトの制御をしました。DMXの送信にはENTTEC DMX USB PROを使いました。Marvericks以降のドライバのインストールはかなり厄介で、サポート記事参考にしています。

DMXは要するにXLRで照明の明度を送んよーってプロトコルで、ライブ照明とかは本体にXLRの入力端子が付いていたりするのだけど、撮影用照明はそうはいかないので、ELATION DP-415を使って照明への入力電圧を直接変えることにました。今後も色々つかえそうです。

事務所の適当な電球で試したやつです。

カメラ位置、メンバーの向く角度の算出

プレビズ作成に使ったC4DのプロジェクトをXpressoを使い、カメラ位置などを算出します。人物の向く方向は「○時の方向」で。スタジオ床にメンバーからの距離をバミって、三脚の伸縮部分にも目盛りを付け, カメラ位置を正確に移動させられるようにしました。スタジオの周囲には「○時」のプレートを貼り付けて、上のガイド映像を見つつ、指定の方向を向いてもらいます。

Arduinoでレリーズと電動フォローフォーカスの自作

三脚位置が高いので、PCからシャッターやズームリング制御出来ると良いなと思って、Arduinoでチキチキ工作しています。レリーズ自作は超簡単。この記事を参考に。

カメラのタイマーレリーズを自作してみた – FALCON’s Diary

あと、諸々終わって気づいたのだけど、EOSのSDKも出てるし、oF用のアドオンもある。国内ではダウンロード出来ないのだけど、色々ゴニョゴニョやったら入手出来ました。(かもしれません, と念のため言っておきます)

フォローフォーカスはステッピングモーターを使って回します。ズームリングが回りきったのを検出してくれないから危なっかしいんだけど、時間が無かったのでとりあえず動けば良いという方針で。東急ハンズで諸々買い出し。近所のFabCafeでアクリル切って、組み立てた。相当不格好だしMAKERS界隈の人には笑われそうですが…。

とはいえ、実際これ撮影段階で邪魔になり後半使わず…。このまま陽の目を見ないのは可哀想だし、電動フォローフォーカスはコマ撮り系でかなり使えるはずなので、借りたい人は気軽に言ってください。

C4D Library

C4Dも外部のPythonライブラリ普通に使える。つまりはOSCも使えるということなので、pyhton-oscをつかって、Node.jsの撮影アプリとC4D間でフレームやカメラ情報の同期をしたり、C4DからDMXの制御をしたりしています。pySimpleDMXを用いてDMXも同様に。

参考: OSC with C4D – gist

VDMXの有効活用

VDMXを使って、ガイドやカメラからの映像出力を合わせて、プロジェクターで現場に大きく投影しました。現場全体で撮影しているシーンや展開を共有できたので良かったです。

撮影本番

こういうシステム構成にんばりました。ピンクの矢印はOSC。

このシステムを使うことで、結局2日で3500フレーム超撮影することが出ました。とはいえ、相当お二人に負担をかけてしまったのが反省点です。

僕とノガミでテスト撮影。DIY感あります。

ポストプロダクション

撮影後は、地道にAfterEffectsを使って編集。背景は先のReplace Proxyを用いて高画質版に変換し、AEでワープスタビライザーかけています。ただ、あまりに動きが早すぎて、スタビライズが全く上手く効いてくれなかったので、半分くらいは人力で…。(辛かった)

人物の配置は全編にわたって1フレームずつキーフレーム打ってる感じ。2コマ打ちでも良かったのかもしれませんが、地面のプルプルに追従する感じや、動きのジワジワ感を醸し出すためには、2コマ打ちではなく、ここは地道に1コマずつ編集していかないと。。。

また、グリッチ空間のシーンはノガミがベースとなるポリゴンを作っているのですが
, これもPhotoscanというソフトを謎活用して無茶苦茶なことやってるらしいです。

そのほか

Slack最高。
ただ、タスクやチェック動画は、タイムラインだと埋もれてしまうので
スプレッドシートと併用が良いかもしれない。–>

Term of Servicesはかなり読み込みました。ウォーターマークを消さない状態で、ブラウザ上での見え方から”著しく”変わらなければ商用利用も可、許可申請も要らない。雲などの自然物の除去や合成は可。あとは多分ToS的にはアウトですが、2年以上公開停止になっていないStreetViewを使った他作品(これとかこれ)を参考にしつつ、どこまで画を弄っていいかを判断しました。

リファレンスは色々あります。ノガミと共有してるものだと

あと個人的には。


本家Hyperlapse.jsもオープンソースプロジェクトだし、個人的にもっと映像以外にも色々出来るんですよって自慢したかったような気もするので色々書き尽くしました。あと、多分これ普通のアーティストだといろんな意味で絶対やらせてもらえなかったと思います。アーティストやレーベルの方々も、面白いものが出来れば良し、とのスタンスで許して頂けましたし、小回りの効く座組だったからこそ、これだけ変わったワークフローでもどうにか完成させられたと今振り返って思います。

多分今後同じ手法を用いて作品作ることはありませんし, 似た案件が来たとしても断るつもりでいますので、何か作り方に関して質問等があれば気軽に@_baku89に連絡ください。webには書きづらい制作過程とか結構ありますので。


追記 Feb 4, 2016

Making of “group_inou – foods & System Kitchen”

foods & System Kitchenのクロスフェード映像的なものを作りました。
OKもらったんでプロジェクトファイル載っけときます。

foods_system_kitchen_proj.zip (9.6MB)
クリエイティブ・コモンズ・ライセンス


VrayforC4D、これまで#everydaysでは軽く使ってはいましたが、映像案件で使うのはFoods & system kitchenが初めてだったので、つまづいた点など雑多にメモっときます。

参考チュートリアル

Mograph Plusがわかりやすいです。今回観たのはこの2つ。


マテリアル設定

標準マテリアルと大分見た目が違いますが、下から順に物質の内側の設定項目から並んでいると考えると覚えやすいです。

Diffuse Layer は標準マテリアルでいうところの カラーMaterial Weightアルファ

DiffuseやSpecularがいくつもありますが、Photoshopのレイヤーと同じく、幾つものマテリアルを重ねあわせることができる。各Layer内の、 Layer Transparency でマスクをかけられます。

上のチュートリアル観てたら、「完全になめらかな物質は存在しない」とかいって全部に微妙にバンプつけてたので、気持ち真似してた。あまり差は分かりませんが。。

レンダリング設定

レンダリング設定の VrayBridge から各種設定。とりあえず Indirect Illumination(GI) からGIを有効に。細かいことはよくわからないので、 Load GI Preset > [Classic Chaosgroup Setups から選ぶことにしました。(イノウの映像では 04_IR-LC_medium を元に、若干サンプル値を下げたはず)

ちなみに、Vrayだと標準マテリアルも自動的にVrayマテリアルに変換されるので、MoGraphのシェーダエフェクタや、マテリアルのマルチシェーダが効かなくなる事があるみたいです。こちらを参考に、 Options - On the fly C4D material conversion をオフにしたら直りました。

マルチパス

VRayのマルチパスは全てポストエフェクトとして書き出されるので、通常通りに[ポストエフェクト]マルチパスを追加。細かい設定は プラグイン > VRayBridge > V-Ray Multipass Manager から管理するみたいです。

Z-Depth は、カメラの設定を拾ってくれなかったので、 Depth Black Depth White にカメラの設定値をコピペ。これはちゃんとした設定方法がありそう。

Multi ChannelMultimatte はかなり便利。オブジェクトバッファをRGBに振り分けて、1つのパスに3つ分のIDを保存出来る。ちなみにコンポジットタグのオブジェクトバッファに対応するのは、VrayCompositingタグ。

オブジェクト単位ではなく、マテリアル単位でオブジェクトバッファ的なことが出来るのもかなり便利。マテリアル設定左段の MatID で値を割り振り(0以上), Multipass ManagerUse MatID をオンすればOK。

ただ一点注意。ポストエフェクト系のパスは、それが何のパスであるかに関係なく順番に _post_01 のようにサフィックスが振られていくので、Vrayパスを追加・削除しながら複数回レンダリングすると番号がズレます。

ライティング & カメラ

細かいことはチュートリアルにあるので省略しますが、ホワイトバランス云々いじるのが面倒な時は、VrayPhysicalCameraタグWhite balance presetsNeutral にしてやればとりあえず色は変わりません。

あと、SpotとかOmniみたいな点光源だと影がシャープに出るみたい。多分ソフトシャドウにする方法はあるんだろうけど、設定方法が分からなかったので、とりあえずエリアライトにしたら影もボケてなんかイイ感じになりました。

標準レンダラーと違って、現実の撮影と同じくカメラ側のISO, シャッタースピード等の設定と、ライトの強さの両方の掛けあわせで明るさが決まるので、ちょっと面倒臭い。

そのほか

Material | VRAYforC4D から色々マテリアル落とせます。

あと、プラグインメニューにあるVray Material Converterはプレビューが真っ黒になったので全く使ってない。

プロジェクションマッピング制作支援ツールつくった

スクリーンの形状が複雑なプロジェクションマッピングの制作は、その展開図の上に映像をのせていくわけですが、立体スクリーンに投影された所をリアルタイムで確認しながらコンポジットできたら便利だなーと思い、ツールをつくりました。久々のoFです。

VirtualMapper ( source )

ネーミングセンス無くてすみません。(良い案あったら教えてください)

要するに、UV付きのモデルデータを読み込んで、Syphon(ソフト間で映像をやりとりするためのオープン規格)経由で送信された映像をテクスチャとしてリアルタイム表示するというツールです。

C4Dでモデルデータの書き出し、Syphonの出力をAfter Effectsから行った時の画面キャプチャです。

たいていのVJソフトやビジュアルプログラミング環境はSyphonに対応しています。AEは、AESyphonというプラグインをインストールすれば出力可能です。(シェアウェアですが、解像度制限のかかった試用版もあります)

投影時のキャリブレーションツールはたくさん出回っていますが、制作時に便利なツールはほとんど無くて。結構今でも展開図から組み上がった所を脳内補完しながら、力技で作っているケースが多い気がします。現場テストになって初めて、少し別角度から観ると全然飛び出て見えない、って分かってしんどい思いを何度かしているので、もし次制作する機会があったら大分楽になるかなぁと思ってます。

バグや不具合、アイディアなどあったらissueかTwitterにリプライください。僕自身が必要なひと通りの機能は実装し終えたとはいえ、このまま放置するのも勿体無いので、もし一緒に開発してくださる方がいたらとても嬉しいです。

今後は制作時につくった汎用性の高いリソースやツールはバシバシ共有していきたいです。今年の目標です。

MoGraphの複製数を増やした時,新しいクローンをニョキっと生やす

タイトルわかりづらいですが…

MoGraphの複製数を増やした時に,いきなりクローンが現れるのではなく,徐々に大きくなりながら現れて欲しい時のためのスクリプトです.今やってる制作で作りました.

project file

import c4d
from c4d.modules import mograph as mo

prevCnt = 0

def main():
    global prevCnt

    md = mo.GeGetMoData(op)
    if md==None: return False

    cnt = md.GetCount()
    marr = md.GetArray( c4d.MODATA_MATRIX )

    if prevCnt < cnt :
        for i in xrange( prevCnt, cnt ) :
            marr[i].Scale( 0.001 )

    md.SetArray( c4d.MODATA_MATRIX, marr, True )
    prevCnt = cnt
    return True

ディレイエフェクタは,スケールが0からの補間の場合変な挙動をするのですが,現在のフレームで新しく登場したクローンのスケールを1フレームだけごく小さな数に設定する事で,補完が上手く効くようになります.

上の動画みたいな単純な例なら複製数を変えずにボリュームエフェクタでマスクをかけるような感覚でスケール -0.999 を適用したほうが早い気もしますが,頂点数の変わるポリゴンやマトリクスに配置した場合,例えばThinking Particlesと併用した時や,伸長するスプラインに配置した時などに使えそうです.

最近C4DのPythonイジってないからかなり忘れてる…

Rename C4D Image Seq

C4Dのレンダーキューから書きだした時につく「_l1」「_l2」等のサフィックスを取るだけのスクリプト

Download

MoGraphのクローンにオブジェクトを追従させる