Diary

Tips

modoで複数のスペキュラを重ねる表現

modoで複数のスペキュラをレイヤーのように重ねる表現について書いてみます。

■ サンプルファイル

 

現在のようにPBRマテリアルが主流になる前の時代、金属を表現する場合はスペキュラを重ねることで表現してました。modoではShaderの「ブレンドモード」を使用して複数マテリアルのスペキュラを加算することができます。

 

現在はマテリアルに「クリアコート」があるためスペキュラを重ねた質感が手軽に作れるようになってますが、スペキュラを3つ以上重ねたい場合には今回紹介した方法が便利かもしれません。あとクリアコートはレンダリングが少し遅い気がします。

 

スペキュラを加算したレンダリング。

クリアコートを使用したレンダリング。

 

参考

http://forums.luxology.com/discuss/post/42125

Multi-Coat

 

おまけ

スペキュラを重ねた金属表現はLightWave界隈では「Gaffer」が有名でした。3dsMaxにもMulti Layer Shaderがあり、かつては金属表現に欠かせない定番の設定でした。

Gaffer

セレクティブライト、多重スペキュラ、フレネル、反射の色、ブルームなどライティングに関連する様々な質感を制御することができるプラグインでした。
https://web.archive.org/web/20010108121200/http://www.worley.com/gaffer/gaffer_spec_control.html

 

MegaLight

スペキュラにトーンカーブのようにバイアスをかけることで金属っぽいスペキュラを表現したプラグイン。
http://www.dstorm.co.jp/dsproducts/FreePlugins/PreviousPlugins/MegaLight.html

 

Multi Layer Shader

参考資料

Unityアニメの新しい威力

「あした世界が終わるとしても」のUnity使用例を見ることができます。MaxとUnityのPencilのレンダリング比較画など。やはりDCCとUnityでデータのやりとりするところが手間取りそうですね。

Tips

modoのウェイトマップをアニメーション

Transfer Vertex Mapを使ってウェイトマップをアニメーションさせてみた。ちょっとしたテストです。

■サンプルファイル

 

Texture Falloffを使用したアニメーション。

 

基本的には法線の転送のウェイトマップ版です。現状はフォールオフを使っても0か1の値しか転送出来ないため、滑らかなウェイトにすることができないのが残念です。Merge Meshesが使えないのも残念。。。Merge Meshesをつかればキャラクターのウェイト設定を使い回す仕組みが作れそうです。

C4Dのようにウェイトの範囲を時間経過で広げたり、時間差でウェイトを消したりできるようになって欲しいですね。

Tips

modoのコンストレイント ウェイト

modoのコンストレイントにあるウェイトチャンネルについて書いてみたいと思います。コンストレイントのウェイトを使用すると2点間でアイテムを等間隔に配置するようなリグを作ることができます。

modoのコンストレイントは複数のアイテムを指定することができます。ことのきコンストレイントの「ウェイト」を使用すると、コンストレイントの重みを調節することができます。ウェイトはプロパティに表示されないので、チャンネルビューポートを使用して設定します。

 

ウェイトを設定すると2点間でアイテムを等間隔に配置するようなリグを作ることができます。

Position Constraint、Rotation Constraintのウェイトを調整すると、こんな感じの制御ができるようになります。

 

コンストレイントは2つ以上の複数のアイテムに使用することもできます。

 

ウェイトの使い道は様々で「カメラブレンドリグ」のようなものが作れるので便利です。

参考資料

EasyToon for Maya

コミックおよびアニメスタイルの制作のための強力なツールキットおよびレンダリングソリューションだそうです。パース変形やモーションブラーが面白いですね。使ってるレンダラーは3Delightのようですね。

CG 日記

デスクトップキャプチャソフト「OBS Studio」

ビデオ録画とライブ配信用のオープンソースのソフトウェア「OBS Studio」の紹介です。
https://obsproject.com/ja

クイックスタート
https://obsproject.com/wiki/OBS-Studio-Quickstart

 

たまにWindowsのデスクトップをムービーキャプチャしたいときがあって、これまではNvidiaの「ShadowPlay」を使用してました。CPU負荷が少なく画質もそこそこの品質、無料ということもあり便利に使ってましたが バージョン重ねるごとに使い勝手が悪くなっています。私は4Kモニタを使用していているのですが、キャプチャ用に解像度下げて録画しようとしたとき、ついに画面に表示している解像度で録画できなくなってしまいました。

あれこれ調べてたどり着いたのが「OBS Studio」です。YouTubeやTwitchのようなライブ配信向けのソフトですがPCのデスクトップキャプチャにも使用できます。

なぜこのソフトにしたかというと、Nvidia NVENCのH.264/MPEG-4 AVCへの変換に対応しているというのがあります。NVENCはShadowPlayで使用されているコーデックで、GPUを使用してエンコードするためCPU負荷が低いです。またOBS Studioは開発をTwitch、Nvidia、Logitech が支援してたり、Nvidiaがカンファレンスで取り上げてるので安心感があります。

 

使い方

デスクトップをムービーキャプチャする手順です。UIはQtで作られてるので、グラフィックソフトのような感覚で自由にレイアウトできます。

1.ソース追加

ソースの+アイコンでキャプチャ対象を追加します。デスクトップをキャプチャしたいときは「画面キャプチャ」、ゲームをキャプチャしたい場合は「ゲームキャプチャ」をクリックして、キャプチャ対象のゲームやウィンドウを指定します。

OBS Studioはライブ配信用のソフトなので、複数の画面(ソース)を切りかえることができる仕組みになっています。

2.録画開始

コントロールの「録画開始」をクリックするとキャプチャが開始します。同じボタン「録画終了」を押すとキャプチャが終了します。

設定

デフォルトではライブ配信向けの設定になっているため、出力サイズが小さく画質も低めに設定されてます。ファイルメニューまたはコントロールの「設定」を開いて、「録画品質」「録画フォーマット」「エンコーダ」「出力(スケーリング)解像度」を任意に設定します。

参考資料

THE PEAK

マーザ・アニメーションプラネットによるUnityを使用した映像作品。THE GIFTの主人公サラの新たなエピソード。

メイキング。手描きの2D素材に自動的に厚みをつけてエフェクト作ってるの面白いですね。

参考資料

「七つの大罪」をゲームで高品質グラフィックを具現化するための技法と開発最適化

「七つの大罪」をゲーム化するにあたり、工夫した点が解説されてます。

シェーディングにMatcapを使用してライトに関係なくシェーディング、顔の頂点法線を編集、眉毛の描画順を髪の前面に変更。カメラの角度でテクスチャ切り替えるImposter Shaderが面白いですね。

Tips

modo終了時にコンフィグファイルに設定を保存しない方法

modoの終了時にコンフィグファイルに設定を保存しない方法について書いてみます。

modoはアプリケーション終了時にUIやウィンドウの状態をコンフィグファイル(MODOxx.x.CFG)に保存します。UIを意図せず変更して壊してしまうのを避けるため、コンフィグに設定を保存したくないという場合があるかもしれません。
そんな時はコマンドラインフラグを使用すると、コンフィグに設定を保存しないようにできます。

-dbon:noconfig

ショートカットのプロパティにフラグを追加すると便利に使えます。

 

ファイルに「アクセンス許可」で書き込みを禁止する場合と異なり、ファイルメニューの「設定の上書き保存」を使用して好きなタイミングで設定を保存できます。

 

参考

https://community.foundry.com/discuss/post/1181324

参考資料

Transient

スローモーション撮影用のカメラPhantom Flex4Kで撮影した雷の映像素材のようです。

Tips

modoのパーティクルをサーフェースに沿って動かす方法

今回はメッシュの表面に沿ってパーティクルを動かす方法について書いてみたいと思います。

■サンプルファイル

アイテムのスナップ移動」でも軽く書いてますが、modoのパーティクルシステムは他のソフトと違い、アイテムのリギングで使用するノードをそのままパーティクルシステムで使用することができます。
汎用性が高くて面白い特長ですが、どうすれば欲しい表現を実現できるかわかり難いと感じることもあると思います。そこで「パーティクルをサーフェースに沿って動かす表現」を作る場合の考え方、どんな感じでノードを使えばいいか手順を書いてみます。

 

1.サーフェースに沿わせたい →「交差サーフェース」コンストレイント

パーティクルをサーフェースに沿わせたい場合、まずサーフェースと交差判定できるノードが必要そうだと思いつきます。modoのアニメーション機能でサーフェースと交差判定できる機能といえば、「交差サーフェース」コンストレイントです。

「交差サーフェース」コンストレイントは、サーフェース表面にロケーターをくっつけてくれる機能です。操作の基準となるアイテム、メッシュアイテムの順番で選択してモディファイヤタブの「交差サーフェース」ボタンを押すと、サーフェース表面に沿って移動するロケーターを生成してくれます。

スケマティックでノードの繋がりを見るとこんな感じになってます。

Toroidアイテムと、操作の基準となるアイテム(Locator)がIntersect ノードにつながって、交差位置用のアイテム(Locator_2)に位置が出力されていることがわかります。

このノードの処理をパーティクルで組めば同じようにサーフェースに沿ったパーティクルの移動が作れそうです。

 

2.「交差サーフェース」コンストレイントと同じ処理をパーティクルで組む

スケマティックはこんな感じです。Intersectの流れを見比べると「交差サーフェース」で作られたノード構成と同じようにリンクされてるのがわかると思います。

Particle Operatorの特性で「位置(Read Only)」「位置」の2チャンネル追加して、「交差サーフェース」と同様にノードをリンクします。Intersect の「位置出力」のチャンネルタイプマトリクスなので、Matrix Vectorを使用して「位置」チャンネルにリンクできるようXYZ軸に変換します。

 

「位置(Read Only)」「位置」について

パーティクルは「位置(Read Only)」「位置」の2つのチャンネルを使用することで、他のノードで計算した結果を戻すことができるようです。
modoは1つのノードであれば依存ループにならずに計算出来るのですが、パーティクルの場合は1つだけでは複雑な計算ができないため、このような動作になってるのかもしれません。

 

VDB Voxelを使用してメッシュを作成すると、サーフェース表面を水が流れるような表現にも使えそう。

パーティクルをサーフェースに沿って動かすのは Particle Snap Modifierを使用しても同じような表現は可能ですが、Particle Snap Modifierはパーティクルそのものの位置には影響がありません。
例えばサーフェースに沿って動いてるパーティクルから、さらにパーティクルを発生させたい場合には今回紹介した方法が便利だと思います。