VFXツールの紹介「GeoTracker Object and Camera Tracker」

このブログではチュートリアルが多いのですが、それだけではツマラナイのでVFX(特殊効果)のお話やCGの最新技術の解説などもしていこうと思います。

最初のお話は「GeoTracker Object and Camera Tracker」です。
GeoTracker 1.0 Showreel from keen on Vimeo.

これは「Nuke」という合成ソフトの中で使うツールで、3DCGのオブジェクトをビデオの映像と一致させてVFXの処理を行います。

実写に出てくる人や物をCGに置き換えることを「デジタルダブル」といます。CGのスタントマンだと思ってください。ただ、CGだとバレないように実写とピッタリ合わせて動かすのは大変なのです。それをこのソフトは綺麗にやってしまいます。

このように3DCG空間に女性の顔の位置や角度を正確に計算します。
これは部屋の床や家具の配置を割り出したものです。

CGに置き換えれば粒子になって消えて行く、なんてVFXも簡単!

3Dにした顔の表面をペイントすれば、実写の顔を汚すこともできます。

文系デザイナーのためのmaya MEL/Python基礎の基礎①

このブログは、現在はGPUレンダリングソフトのRedShiftのお話が多いですが、それだけではツマナライので、Mayaなど3DCG制作で便利なツールをプログラムを作る基本的なチュートリアルもやっていこうと思います。

完全にプログラム初心者向けに書いていきますので、文系の方も安心してください。
(逆にバリバリなプログラマーの方には遠回りに思えるかもしれませんが)

Mayaでは、MELPythonの2つのプログラミング方法があります。

Mayaの画面の一番右下のアイコン「スクリプトエディタ」をクリックします。
これは知っている人も多いと思います。

・・・何をしていいか解らないし、難しいそう・・・という方多いと思います。
別にMayaを使ってて困ってないのに新しいことを学ぶのは面倒、という方もいるかと。

そこで、勉強の仕方は「楽をしよう」という思考が大切なのです。とかくクリエイティブな方は「努力と根性」をモットーとする方が多いので「面倒」「効率悪い」「無駄なミスはなるべく減らしたい」「早く帰りたい」という気持ちを持つのが大切です。

そこでオススメなのが、便利なツールをお手本にする、という勉強の仕方です。
初回の今日はこんな例をつかってみようと思います。

これはOutlinerとワイヤーフレームに色を付けて分類する「ColorMaker」ツールです。

リンク先からダウンロードすると、このような「???.mel」ファイルが出てきます。
これをmayaのメインのビューにドラッグするだけです。

適当なプリミティブを出して、色のボタンをクリックするだけで色が付きます。
大したことが無いかもしれませんが、識別しやすくなり、ミスも減るでしょう。
また、チームで制作する際に色を決めておくと、コミュニケーションも取りやすいで

どんなMELファイルでも、これで使える訳ではありませんが、このようにMELは簡単に使えます。
では、これはどうやって作っているのでしょうか?

こんどは先程のMELファイルをスクリプトエディタの下の画面へドラッグしてみましょう。

1399行の長い英語みたいな文が出て来ましたね?これがMELのプログラム本体です。

では、スクリプトエディタの上にある三角ボタンを押すか「CTRL+Enter」キーを押して見てください。

下の段にあったプログラムが上の段に移動して、何もなくなりました。同時に「ColorMaker」が起動しました。
つまり、MELはスクリプトエディタも下の段でプログラムを書き、実行するとMayaがそれを理解したら上の段に移動して、プログラムが動作する、ということなのです。

でも毎回画面にドラッグするのも面倒ですね。Color Markerをダウンロードすると、小さな画像がついてきます。(30x30ピクセル)

これは何に使うのかというと、まず、先ほどと同じようにスクリプトエディタへmelファイルをドラッグします。そこでCTRL+aで「すべてを選択」にして、中ボタンドラッグでシェルフの「カスタム」へドラッグします。


すると、シェルフにアイコンができますね。これをクリックすると、「Color Marker」が起動できるのです。


このアイコンを右クリックして、「編集」します。


「シェルフエディタ」が起動します。ここにスクリプトエディタにあったスクリプトが全部入ってます。
つまり、シェルフをクリックするとMELプログラムが実行する仕掛けになった訳です。
(注:ちなみに普通はこの方法はやりません。解りやすくするための手段です)

シェルフTABに切り替え、アイコン名に先程の小さな画像を選び、「アイコンのラベル」にColorと入力して保存します。


するとMayaのロゴだったアイコンは選んだ画像になり、入力したColorという文字がはいます。これで今後Mayaを起動すればこのシェルフをクリックで起動できるのです。
(注:重ねて説明しますが、初心者向けの解説ですので、正規の設定のやり方ではありません)

このようにMayaへ自分で設定した機能をドンドン追加できるのです。
ということは、他のシェルフも実はMELなのです。


ではいつも使っている、「ポリゴン」→「球」のシェルフを同じように「編集」すると・・・


MELは「CreatePolygonSphere」という命令だ、ということが判ります。
この文字をコピーしておきます。


再度スクリプトエディタを起動して、上下にゴチャゴチャ文字があるので、上記のボタンで綺麗にします。


下の「MEL」に「CreatePolygonSphere」をペーストし、CTRL+Enterしてみてください。


ポリゴンの球が出てきましたね。スクリプトエディタの上の段には、
「polySphere -r 1 -sx 20 -sy 20 -ax 0 1 0 -cuv 2 -ch 1;」という命令が読めます。
シェルフだけでなく、メニューから「作成」→「ポリゴンプリミティブ」→「球」をやっても同じ命令なのが判ります。

ではメニューから「ウインドウ」→「アウトライナ」をやってみましょう。

スクリプトエディタの上の段に何も出てきません・・・ではMELが動いてないという訳ではないのです。

図のようにスクリプトエディタの「ヒストリ」→「すべてのコマンドのエコー」をONにしてみます。

今度は、メニューを選ぶだけでおびただしい行の命令が流れます。これこそ、Mayaの内部で動いているのを見ている状態です。この中にアウトライナを出す命令もあるのですが、探すのは一苦労です・・・
これは処理を遅くするのでOFFにしてください。


このような場合は、コマンドをShift+Altキーを押しながら実行すれば、シェルフ登録できますね?それを右クリックして「編集」してください。
「コマンド」タブに「OutlinerWindow」と書いてあります。これがアウトライナを起動するMELなのです。

このようにmayaを普段メニューからのウインドウ表示、モデリングやアニメーションコマンドやチャネルボックス、アトリビュートなどなど、操作しているのはすべて裏でMELの命令が実行されているのです。

更になんとSaveしたmaの中身もMELなのです。


保存したあとテキストエディタで開いてみると、MELの命令らしきものだらけです。
注意ですがmaを開いたら、適当に書き換えるのは非常に危険ですので、すぐ閉じてください。

ここまでの操作手順は覚える必要はありません。MELの動作の概念だけ理解できれば結構です。

今日はここまでです。次回で順を追って解説していきます。

RedShift & mayaでシェーディング!

前回で簡単にプリセットされた質感設定をやってみましたが、もう少し細かく実験してみましょう。今回のシーンはこんな感じです。
モデルデータはココのフリー素材を使ってます。2000ポリゴンで、大きさは10cmです。
RedShiftドームライトを前回同様置いてあります。これの「DomeMap」をクリックします。


HDR画像を選択します。これはこちらの素材サイトからです。


RedShfitレンダリング結果がこちらです。IBL(Image Based Lighting)ができました!

ですが、流石に2000ポリゴンなのでカクカクしていますね。そこでキーボード「3」のスムーズメッシュプレビューをONにします。

綺麗にスムーズされたレンダリングになります。さて、質感をつけてみましょう。
RedShiftは「PBR(Physically-Based Rendering. 物理ベースレンダリング)です。
PBRの解説はここでしても何ですので「背景アーティストのぶろぐ」にお任せします。


上の図のようにモデルを配置し、中のボールと台の中央はプラスチックの黒を設定しました。それを5つコピーして、RedShiftのArchitecturalという基本シェーダーを設定してます。
Diffuse(拡散反射)のカラーはグレーで、Roughnessを左から0、0.25、0.5、0.75、1と設定してレンダリングします。

ちょっと判りにくいかもしれませんが、Roughness=「表面の粗さ」で0が完全に滑らかでMayaのLambertにほぼ近い状態です。1でザラザラなので若干暗くなっています。

では、今度は金属感を出してみます。

ReflectionのFrenel TypeをMetalnessにします。
Weightを1、Refrectivityを白にします。

ReflectionのRoughnessを左から0、0.25、0.5、0.75、1と設定してレンダリングします。

Roughnessの下のSamplesを大きくするとノイズ減ります。計算時間は増えますが・・・


ReflectionのFrenel TypeをIORに戻します。さらにRefractionのWeightを1にするだけで透明度が上がります。

中の黒いボールはWeightを0.5にし、Colorを赤にして、さらに床にテクスチャを追加してレンダリングしてみました。
また、奥のものはその前の金属のままMetalnessのColorを付けただけです。

いかがでしょうか?すべて1280x720ピクセルのレンダリングで、ほとんど20秒以内で計算終了します。トライ&エラーを繰り返すことが簡単なのは大きなメリットでしょう。

ブロスではRedShiftのレンダリングサービスをしております。ご興味ある方はここのContactフォームまでご連絡ください。