Tips

Tips

modo 入門向けコンテンツの紹介

これからmodoをはじめる人向けのリンクをまとめました。modoを使ってみたいけど、どこからはじめればいいかわからない。どんな感じのソフトか知りたいという人は、上から順番にリンクたどってみるといいと思います。

とりあえず、ビデオ見ながらボタンを押しまくって覚えよう!

 

modo 入門ビデオ

modoをはじめるときに見ておくべき入門ビデオです。インターフェイスの説明からモデリング、UV、スカルプト、ペイント、レンダリングと一通りの機能が解説されていて、大まかにどんな感じで使えばいいかわかるようになります。
http://modogroup.jp/modo/training_materials/901basic

 

コーヒーマグ

modoの概念や基本機能を使用してモデリングとレンダリングの基礎を学べます。内容は古いものですがステップバイステップでモデリングとレンダリングを学べる内容です。下のリンクは英語マニュアルですが、日本語マニュアルにも同じチュートリアルが含まれています。
https://learn.foundry.com/modo/content/help/pages/tutorials/tutorials_written.html

 

Modo Japan Group 連載コラム

モデリング、レンダリング、アニメーション機能のチュートリアルです。3DCG初心者が読んでもわかるように丁寧に書かれてます。はじめてモデリングにチャレンジする方は、このコラムに沿ってモデリングしてみるといいと思います。
http://modogroup.jp/modo/column

 

Modo Japan Group の機能紹介・チップスサイト

modoの新機能や基本機能の使い方のビデオが多数公開されてます。この機能どうやって使うんだろ?と思ったらここで検索するといいです。オフィシャルの日本語ビデオがここまで充実してる3Dソフトは他にない気がします。
http://modogroup.jp/tipsblog/contents/

 

modo トレーニングビデオ

modo 101 ~ modo 10.2 までの基本機能の紹介や、機能を組み合わせた応用的な使い方のビデオが公開されています。
開発者じゃないと知り得ないようなデモがあったりして面白いです。modoの機能に慣れてきたら見るといいと思います。
http://community.thefoundry.co.uk/tv/training/
http://community.thefoundry.co.uk/tv/training/index.aspx?page=65

 

modo 公式のチュートリアル

英語のチュートリアルですが、さまざまな業種向けのチュートリアルビデオが公開されています。ムービーなので見ながら学べます。3dsMax、Maya、Softimage、Cinema 4Dユーザーがmodoをはじめるためのムービーも公開されています。
https://learn.foundry.com/modo/content/help/pages/tutorials.html

・基本トレーニングシリーズ
・宇宙船を作る
・建築モデリング
・インテリア照明

 

マニュアルの付録、ショートカット集

下のリンクは英語マニュアルですが、日本語マニュアルにも同じショートカット表が含まれています。作業をスピードアップするにはショートカットは必須です。
https://learn.foundry.com/modo/content/help/pages/appendices/appendix_a_keyboard_shortcuts/keyboard_shortcuts.html

 

pixelfondue

pixelfondueはLuxology創設者のBrad氏らが運営する2Dや3D関連のトレーニングや情報を提供するサイトです。中でもmodoの機能やテクニックを解説したVaughan氏の60秒ビデオは投稿数が360個を超えており、とてもわかりやすい内容で必見です。現在はmodoのマニュアル内にもビデオへのリンクがあります。
https://www.pixelfondue.com/training

 

Modo Premium Contents

modoのメンテナンス&サブスクリプションユーザー向けに、有料販売しているチュートリアルを無償で公開しています。
モデリング、レンダリング、アニメーションなどさまざまなジャンルに特化した有料チュートリアルを見ることができます。
全て英語ですがサンプルシーンもダウンロードすることができます。ステップアップに少し複雑なチュートリアルにチャンレンジしたい場合にお勧めです。
https://community.foundry.com/modonaut/training

 

MODOにおけるアニメーションの原理

いわゆるアニメーションの基礎、「アニメーションの12の原則」をmodoを使用して解説したムービーシリーズです。
https://community.foundry.com/playlist/1045/exploring-the-principles-of-animation-in-modo

「アニメーションの12の原則」とはウォルト・ディズニー・スタジオ内の経験から生み出されたいきいきとしたアニメーションを作るための原則で、伝説的な9人のアニメーター「ナイン・オールドメン」のうち2人、フランク・トーマスとオリー・ジョンストンよって書かれた本「ディズニーアニメーション 生命を吹き込む魔法 ― The Illusion of Life」で紹介されているものです。アニメーションを作る上で普遍的な要素なので覚えておいたほうがよいです。

 

modoを使ってる個人ブログは多くないかもしれませんが、Modo Japan Groupさんが多くの情報を公開してくれてます。公式の正確な情報源があるのは助かりますね。

modoのリギングなど、少し手の込んだことをやりたくなったら、私のTips記事も参考にしてみてね。

Tips

modoでコンポーネントのランダム選択

modoのコンポーネント(頂点、エッジ、ポリゴン)をランダム選択する方法を紹介します。使用頻度は多くないかもしれませんが、地面やレンガなどランダムに選択して起伏をつけたいときに便利です。

 

modo 12.0にはHatchet Collection Python Scriptsから、いくつか便利スクリプトがmodoに搭載されるようになりました。マニュアルには「曲線のオフセット、ランダム選択、フラット化など、さまざまな新しいツールがインターフェイスから利用できるようになりました」と書かれてるのですが「ランダム選択」はメニューにもツールパレットにも表示されていません。

しかしスクリプトはインストールされているので、コマンドを実行すれば「ランダム選択」を使用できます。

 

ランダム選択 コマンド

  • @ppi_Random_Select_Edges.py
  • @ppi_Random_Select_Polys.py
  • @ppi_Random_Select_Verts.py

 

半分選択 コマンド

もう一つUIに表示されていない選択機能があります。象限を指定して選択する機能です。対象モデリングで半分だけ選択して削除したい場合に便利だと思います。

  • @ppi_Select_Half.py

これらの選択コマンドはフォーム編集でUIにボタンを追加しておくと便利だと思います。

 

 

プロシージャルモデリングにはSelect Randomが標準で搭載されてるので、ランダム選択をアニメーションしたい場合にはプロシージャル機能がおすすめです。

Tips

modoのプロシージャルメッシュをリジッドボディダイナミクスで使用する方法

modoのプロシージャルメッシュをリジッドボディダイナミクスで使用する方法について書いてみたいと思います。

modoではメッシュを選択して「アクティブリジッドボディ」ボタンを押すと、プロパティに「ダイナミクス」タブが追加されて「シミュレーションを演算」することができます。

ところがプロシージャルメッシュ(メッシュオペレータ)でメッシュを生成した場合、通常の手順で「シミュレーションを演算」してもうまく動作しません。ダイナミクス タブで「スタティック」をOFF、「衝突シェイプ」を任意に変更する必要があります。

恐らく「アクティブリジッドボディ」ボタンはメッシュオペレータでメッシュを生成したものを認識せず、空のメッシュアイテムとしてダイナミクスの初期設定を行います。手動で適切に設定してあげれば、リジッドボディダイナミクスとして計算する事ができます。

今回のスケマティックはこんな感じ。Encode Stringはmodo 13以降は不要です。

 

プロシージャルメッシュをSwitch Stringで切り替えた場合、リジッドボディは0フレーム目のメッシュを使用してシミュレーションを実行する気がします。また、プロシージャルメッシュを「ソフトボディ」で計算することはできないようです (modo 13.0現在)。「シミュレーションの再生」ボタンではシミュレーションが実行されるのですが、「シミュレーションを演算」しても演算結果がキャッシュできないようです。

プロシージャルメッシュとダイナミクスの組み合わせは、もう少し改善してくれると助かりますね。

 

参考

Tips

modoでオブジェクトの内側のパーティクルを検出する方法

modoでオブジェクトの内側のパーティクルを検出する方法を紹介したいと思います。今回もFoundryのフォーラムで公開されていたYahllさんのアイディアです。

https://community.foundry.com/discuss/topic/88018/

サンプルファイル(再アップ)

基本的にはIntersectを2個使ってメッシュの内側を判定して、内側になったパーティクルからParticle Operatorでパーティクルを発生させています。
Intersectは+YとーY方向からメッシュの内側を判定してるのでトーラスの穴の部分も内側と判定されていますが、X方向のIntersectを追加すれば解決すると思います。

 

modo13からはMergeMeshがパーティクルに対応したので、アセンブリの「Select By Volume」を使って手軽にメッシュの内側を判定できるようになりました。ただし、直接パーティクルを制御する方法に比べると、少し動作が重くなります。

サンプルファイル

 

基本的なノードを組み合わせてパーティクルを制御するYahllさんのサンプルはどれも凄く勉強になりますね。

参考

Tips

modoでカーブに沿ってパーティクルを動かす方法

modoでカーブに沿ってパーティクルを動かす方法を紹介したいと思います。前回同様にFoundryのフォーラムで公開されていたYahllさんのアイディアです。

https://community.foundry.com/discuss/topic/86939

 

サンプルファイル(再アップ)

このシーンではPath Constraintを使用することで完全にパスに沿ったパーティクルを実現しています。
1つめのParticle Simulation(青色)はY軸方向に移動するだけの単純なシミュレーションです。このシミュレーションのパーティクル位置をPath Constraintノードを使用してパスに沿わせ、Collector / Emitterノードを使用してカーブに沿ったパーティクルを発生させています。 2つめのParticle Simulation(オレンジ色)。

以前はParticle Simulation を2つ使って計算するという発想がありませんでしたが、このサンプルを見てパーティクルの位置をブレンドするとことができそうだと思いつきました。

 

modoには Curve Force という、カーブに沿ってフォースを発生させるノードがあります。しかし、あくまでフォースであるためパーティクルの速度が速くなるとCurve Forceの影響範囲を飛び出したり、Curve Force の影響範囲が干渉してパーティクルが止まってしまうことがあります。

サンプルファイル

 

modo 13からはMerge Meshがパーティクルに対応したので、シミュレーションしたパーティクルをデフォーマで変形することができます。

サンプルファイル

 

同じような表現をするにも複数のアプローチがありますが、Path Constraintを使用する方法が一番計算速度が早いように思います。発想的にも面白いので、他のパーティクル制御に応用出来る気がします。

 

参考

Tips

modoでサーフェースの色をパーティクル色に設定する方法

サーフェースの色をパーティクル色に設定する方法を紹介したいと思います。Foundryのフォーラムではさまざまな質問と共に多くの面白いサンプルファイルが共有されています。

今回紹介するのは「パーティクルがサーフェース色を継承できないか?」というスレッドのものです。
https://community.foundry.com/discuss/topic/88111

パーティクルをサーフェースから発生させる場合に、発生元のサーフェース色をパーティクルに継承したいことがあります。このスレッドでYahllさんが公開してたサンプルファイルは、私にはよく理解できませんが、確かに問題をクリアしている素晴らしいものです。

サンプルファイル(再アップ)

スケマティックを見るとParticle Operatorで「位置」を「色」に繋げていているのが面白いトリックです。Shader Inputsの「パーティクル色」をパーティクルの位置として扱っていて、Intersectを使用してサーフェースとパーティクルの方向を計算しています。最後にRaycastでサーフェース色を拾って、マテリアルの「ディフューズ色」に割り当ててます。

Particle Operatorの値をシェーダーノードが直接受け取れないので「色」を「位置」に繋げてる所は理解できます。その後の計算が成立してる意味かよく理解できないですが、パーティクルがサーフェース色を継承できています。

しかし、この方法では球体が回転するとパーティクルの色も回転に合わせてかわります。Time Offsetで1フレーム固定のようなことができればいいのですが、残ながらTime Offsetをシェーダーノードに使用するとmodonがフリーズしてしまいます。フォースでパーティクルを動かす場合は、パーティクル発生時の色を利用する仕組みを考える必要がありそうです。

追記
パーティクルオペレーターの「新規」を使用する方法でパーティクル発生時の色を利用することができます。

 

Raycastを使用してサーフェース色を使用する単純なシーンも公開しておきます。このシーンはロケータの-Y方向の色をRaycastノードを使用して拾ってます。

サンプルファイル

スケマティックはこんな感じ。上半分は関係ありません。GLの見た目上のものです。

 

シェーダーノードはLightWaveで挫折してから苦手意識があって使わなくなってましたが、こういう自分では想像もつかないサンプルファイル公開してくれるのはすごく助かります。

Tips

modoのスクリプトやプラグインのインストール方法

modoのスクリプトやプラグインのインストール方法について書いてみたいと思います。

modoは他の3Dソフトと同様にスクリプトやプラグインで機能拡張することができます。FoundryのフォーラムMODO Japan GroupGitHubでは便利なフリースクリプトやプラグインが公開されています。

 

配布形態

modoのスクリプトやプラグインにはいくつかの配布形態があります。

 

スクリプトファイル単体

一番多いのがスクリプトファイル単体で配布されてる場合です。.pyや.plファイルだけ公開されてる場合がそれです。

 

Kit

次に多いのが「Kit」として配布されている場合です。有料プラグインやFoundryが配布しているAfterFX IOやGozはKit形式です。

Kitはスクリプト、プラグイン、UI、画像など複数のファイルで構成されていて、配布に便利な仕組みです。KitはUIの「Kitボタン / キットマネージャ」から有効/無効を切り替えることができます。Mayaのモジュールと似た仕組みですね。

キットは複数のファイルで構成されているため、.lxpや.zipのような圧縮形式で公開されてることが多いです。

 

インストール方法と使用方法

インストール方法は簡単です。ファイルをスクリプト フォルダ、またはKitフォルダにコピーします。

 

スクリプトのインストールディレクトリ

modoのスクリプトは、スクリプト実行時に以下のフォルダを検索します。

C:\Users\ (ユーザー名) \AppData\Roaming\Luxology\Scripts

C:\Program Files\Foundry\Modo\ (バージョン番号) \extra\scripts

Luxologyフォルダは全てのmodoバージョンから参照されるので、基本的には Luxology\Scriptsフォルダにファイルをコピーしておけば問題ありません。

 

スクリプトの使用方法

スクリプトを実行するときはmodoのUI右下にあるコマンド入力に「@+ファイル名」を入力してEnterで実行します。

 

Kitのインストールディレクトリ

Kitをインストールするときは基本的にインストールマニュアルに従うとよいです。modoは起動時に以下のフォルダを参照し、フォルダ内のKitを自動でロードする仕組みになっています。

C:\Users\ (ユーザー名) \Documents\Luxology\Content\Kits

C:\Users\ (ユーザー名) \AppData\Roaming\Luxology\Kits

C:\Program Files\Foundry\Modo\ (バージョン番号) \resrc

Content\Kits はmodoのコンテンツファイルをインストールしてる場合に作成されるフォルダなのですが、多くのKitはContentフォルダにインストールする気がします。

Kitが.zip形式の場合は、ファイルを解凍して Content\Kits フォルダにコピーすればロードされるようになります。

.lxp形式の場合は、modoを起動してウィンドウに.lxpファイルをドラッグアンドドロップします。.lxp形式はただの.zipファイルなのですが、Kitのディレクトリに自動的にファイルをコピーしてくれる便利ファイル形式です。.lxpは拡張子を.zipに変えると、圧縮・解凍ソフトを使用してファイルを直接取り出すこともできます。

.lxはバイナリ形式のプラグインファイルですが、このファイル単体で配布してるのをほぼ見かけたことがないです。多くの場合はKitフォルダを使用してmodoに読み込ませるのが一般的だと思います。

Kitは「index.cfg」内にキットが定義が書かれていて、Kitが使用するスクリプトやプラグインへ相対パスが記述されているのが一般的です。しかし絶対パスの決め打ちでパス指定されているKitもあるため、Luxology\Kits にコピーしないと動かないKitもあります。サードパーティのKitは、インストールマニュアルにしたがった方が無難です。

 

Kitの使用方法

Kitの使用方法はKitごとに異なるので、Kitのマニュアルを見ましょう。ファイルメニューに項目が追加されたり、特定のフォームにボタンが追加されたり、手動でフォームを編集する必要があったり、Kitによって動作がさまざまです。

新しいmodoでKitが動かない

余談ですが、modoを12から13にメジャーバージョンアップしたら、Kitが使えなくなることがあります。

modoのプラグインやスクリプトは後方互換性があるので、新バージョンでも基本的に動きます。しかしVrayなど一部のKitはバージョンごとに読み込みを制限しているため、新バージョンで動かなくなります。これは「index.cfg」内でバージョンを指定することで制限しています。configuration の行でバージョン番号を書き換えれば、新しいバージョンのmodoでKitを使用することができるようになります。

例えばmodo 901のみで動作する場合は以下用に記述してあります。

<configuration and="rel]900" and="rel[1000">

modo 11のみで動作する場合は以下の通り。

<configuration and="rel]1100" and="rel[1200">

modo 12のみで動作する場合は以下の通り。

<configuration and="rel]1200" and="rel[1300">

バージョンの記述方法はメジャーバージョンが見てわかる物や、ビルド番号っぽいものといくつか種類があるようです。

バージョンを制限してるのには理由がある場合があります。フォーラムを見てるとmodoの問題を避ける場合や、新しく追加された機能を使用している場合に動作するバージョンを制限することがあるみたいです。
もし開発が終了してしまってメンテナンスされていないKitが動かなくなってしまったというときは、バージョン番号を書き換えると使えるようになるかも知れません。

 

スクリプト情報 (おまけ)

スクリプト言語

modoが対応しているスクリプト言語は以下の3つです。

  • Perl スクリプト
  • Pythonスクリプト
  •  luaスクリプト

Pythonは古くからサポートしてたPython APIの他に、modo 901で追加された TD SDK というTD向けのPython APIラッパーもあります。

modoのインストールディレクトリを見ると、.pyや.plファイルが大量にあるのがわかると思います。

C:\Program Files\Foundry\Modo\13.0v1j\extra\scripts

スクリプトについては、以下のディレクトリに日本語のスクリプト ドキュメントがインストールされています。

C:\Program Files\Foundry\Modo\13.0v1j\help\Scripting_and_Commands.pdf

最新の情報はSDK Wikiにまとまっています。
http://modo.sdk.thefoundry.co.uk/wiki/Main_Page

modoのスクリプトまとめページです。
http://www.etereaestudios.com/modoshare/tips_python_modo.html

modoの開発者のリポジトリです。
https://gist.github.com/Farfarer
https://gist.github.com/mattcox

 

私はスクリプトは全く書けないので、スクリプト書ける人は凄いなと尊敬しながらフリースクリプトを使わせていただいてます。

 

参考

http://lifewithmodo.blogspot.com/2011/01/modo-501_04.html

Tips

modoのプロシージャルモデリング

modo10.1からプロシージャルモデリングが搭載されましたが、プロシージャルモデリングってどんな時に使うの?どんなことができるのかについて書いてみたいと思います。

 

プロシージャルモデリングとは

プロシージャルモデリングは手続き的、非破壊的にメッシュを編集するモデリング手法です。

これまでのモデリング手法は「ダイレクトモデリング」と呼ばれ、メッシュのコンポーネント(頂点、エッジ、ポリゴン)を直接編集してモデリングしていました。
ダイレクトモデリングはメッシュを直接切り貼りして編集するため編集内容がわかりやすい反面、「面取り」にエッジベベルを使用後、再度ベベル幅を調整するには作り直しに近い手間が発生していました。

ダイレクトモデリングの例

 

プロシージャルモデリングはメッシュを直感的に編集する機能ではありませんが、メッシュオペレーター(メッシュを編集するノード)をいくつもスタックすることで、モデリングの工程をさかのぼってメッシュを編集することができます。例えばスムースシフトのシフト量や、エッジベベルの幅をいつでも編集できます。

プロシージャルモデリングの例

メッシュ編集がリストにスタックするのは、Maxのモディファイヤ スタックに似てますね。メッシュオペレーターの数が多くなると、他のソフト同様に動作が重くなります。

 

プロシージャルモデリングの使いどころ

プロシージャルモデリングは難しそうと思うかもしれませんが、利用頻度の高い機能は限られています。代表的なのは以下のようなメッシュオペレーターです。これらの機能は3dsMaxやC4Dなんかでも非破壊編集できるように専用機能が提供されてたりします。

  • エッジベベル (Edge Bevel)
  • 厚み(Thicken)
  • カーブ押し出し(Sweep Effector)
  • 複製系(Clone、Radial Array、Scatter Clone)

 

エッジベベル (Edge Bevel)

面取りに便利です。

 

厚み(Thicken)

服などの厚みに便利です。

 

カーブ押し出し(Sweep Effector)

パイプやコードに便利です。

 

複製系(Clone、Radial Array、Scatter Clone)

建物など規則的な形状で便利です。

一般的にプロシージャルモデリングはモデリングの最後の工程、後から修正したくなるような編集に使用すると便利です。全てプロシージャルモデリングでモデリングするのではなく、ダイレクトモデリングにちょい足しして使うのがお勧めです。

modoのプロシージャルモデリングの優れている点は、3dsMaxのように用途を限定して非破壊編集機能を提供してるわけではなく、ダイレクトモデリングツールの多くがプロシージャルモデリング機能として使用できることです。普段ダイレクトモデリングツールで使用する機能が、そのままプロシージャルモデリングでも使用できるというのは画期的だと思います。

 

プロシージャルモデリングとリギング

modoのプロシージャルモデリングでユニークなところは、メッシュオペレーターがノードとして提供されていることです。キャラクターのリギングと同じ感覚で、メッシュオペレーターをリギングすることができます。具体的にはHoudiniのデモで見かけるような、プロシージャルな家具や建物を作ることができます。

シンプルなファイルを公開しておくので、興味があるひとはダウンロードしてみてください。いずれもプリミティブのキューブをベースに使用しています。アセンブリとして再利用できるようには作ってないので、自作するときの参考にしてみてね。

 

サンプルファイル

Cloneを使用してメッシュを複製してます。デフォーマを使用するためにMerge Meshesを使用しています。デフォーマを使用しない場合はReplicatorを使用した方が処理が早いです。

 

サンプルファイル

管理を楽にするために天板の形状を作ってから、Merge Meshesで天板アイテムと天板下のフレームに分岐させています。恐らく分岐させると処理が遅くなるので、各アイテムごとにCubeとVertex Bevelノードがあった方が軽くなる気がします。

 

建物

サンプルファイル

壁用のアイテムをGroupにまとめてReplicatorで複製しています。Groupを使用したのはランダムに複製するためで、複製するアイテムが固定でよいならGroupを使用する必要はありません。壁のアイテムはキューブの法線方向を向けるためにセンターを回転してます。
このファイルでは全て同じ壁を複製してますが、Cubeを各面ごとに分解すれば好きな壁を並べることができます。

 

プロシージャルモデリングは元々CAD系のソフトから来た概念らしいです。RhinocerosのプラグインGrasshopperや、3DCGソフトだとHoudiniがプロシージャルモデリングの代表的なソフトでしたが、今後はmodoもプロシージャルモデリングを代表するソフトとしてメジャーになって欲しいですね。

 

参考

Tips

modoでオブジェクトが崩れる表現

modoでオブジェクトが崩れる表現について書いてみます。フォースにフォールオフを設定するだけで簡単にシミュレーションの開始タイミングを制御することができます。

サンプルファイル

 

作り方は単純です。アイテムを「シャッター&グルー」で分解して、全てのアイテムの「ウェイクオン」を「フォース」に変更、「ウェイクオン値」に0.0001のような小さな値を設定します。この設定でアイテムがフォースの影響を受けた場合にシミュレーションを開始できるようになります。

 

Linear Forceを追加して「強さ」に0.1%のように小さな値を設定して、Linear Falloffを作成してリンクします。この設定でフォールオフの範囲にシミュレーションに影響の無いわずかなフォースが発生し、そのフォースによってリジッドボディのシミュレーションが開始します。

アイテムが徐々に小さくなるのは、アイテムインフルエンスとフォールオフを使用しています。

単純な設定ですが橋が崩れるようなシーンなんかに使えて面白いんじゃないかと思います。「ウェイクオン」に「衝突フォース」を使うとアイテムがぶつかったときにシミュレーションを開始することもできて面白いです。

 

参考

https://twitter.com/Merkvilson/status/1106738994631585798

Tips

modoのアイテムインフルエンス

modoのアイテムインフルエンスについて書いてみます。アイテムインフルエンスはアイテムのトランスフォームを変形する機能です。アイテムインフルエンスとフォールオフを組み合わせると、複数のアイテムをデフォーマを使用してアニメーションすることができます。

 

インフルエンスを説明するために、少し回り道になりますがmodoのデフォーマ構成について書いてみます。

 

modoのデフォーマ

modoのデフォーマはプロシージャルモデリングやパーティクルシステムと同じようにノードベースの設計になっています。modoのデフォーマは主に以下のノードで構成されます。

  • アイテム
  • インフルエンス
  • エフェクタ

「アイテム」は変形対象になるアイテムです。「エフェクタ」はベンドやマグネットのように、どんな風に変形するか指定します。「インフルエンス」はどこを変形するか指定します(ウェイトマップやモーフマップなど)。

Soft Lag、Push Influence、MDD Influenceのようにインフルエンスとエフェクタ両方の機能を持った特殊なデフォーマも存在しますが、modoではこれらのノードを組み合わせることで、様々な変形アニメーションに対応しています。

 

アイテムインフルエンスを説明するために、ジェネラルインフルエンスについて書いてみます。

ジェネラルインフルエンス

ジェネラルインフルエンスはメッシュを変形する最も利用頻度の高いインフルエンスです。ベンドやスケルトン変形など一般的に「デフォーマ」でイメージされるメッシュ変形には「ジェネラルインフルエンス」が使用されます。

下の画像はベンド エフェクタを使用してメッシュを変形した例です。ベンドによってメッシュが変形しているのがわかると思います。

 

アイテムインフルエンス

アイテムインフルエンスはアイテムのトランスフォーム(移動/回転/スケール)を変形する機能です。ジェネラルインフルエンスと違いメッシュは変形しません。計算量が少ないので動作が軽いという特徴があります。

下の画像はベンドエフェクタを使用してトランスフォームを変形したものです。ベンドによってアイテムのトランスフォームが変形していますが、メッシュは変形していないことがわかると思います。

 

アイテムインフルエンスの使用方法

アイテムインフルエンスを使用するにはスケマティックを使用して、アイテムをアイテムインフルエンスにリンクします。

 

アイテムインフルエンスは「移動」「回転」「スケール」を個別に制御可能です。フォールオフを使用するとアイテムを連続的にアニメーションすることができます。

サンプルファイル

 

球体を「シャッター & グルー」でバラバラに粉砕したもの。アドバンスドビューポートなのでフレームレートが少し低いですが、アイテム数が380個くらいならリアルタイムで動きます。

 

modoのサンプルファイルにある車をアニメーションしてみた。アイテムの移動はアイテムインフルエンスの「スケールの影響」をOFFにして、スケールをアニメーションしています。元の組み上がってる状態がスケール100%。

 

アイテムインフルエンスを使用するとブレイクダウン映像のように画面の上からオブジェクトが降ってくるようなアニメーションや、オブジェクトが組み上がるようなアニメーションが手軽に作ることができて便利ですね。同じアイテムを大量にアニメーションする場合には、フォールオフプローブを使用したアニメーション制御がお勧めです。

 

modo 601ではじめてデフォーマを使ったとき、エフェクタとインフルエンスとが分かれてる理由がよくわかりませんでした。他のソフトではエフェクタとインフルエンスがセットで「デフォーマ」として扱われている場合が多かったため、modoのノード構成が複雑に思えました。601の頃はノードベースというのがよくわからなかったというのもあります。

今となってはエフェクタとインフルエンスが分かれてることで、エフェクタが違っても同じようにウェイトマップ等のインフルエンス機能を使用ことができることや、新しいインフルエンスが追加された場合でも既存のエフェクタを組み合わせて使用できるように現在のノード構成になっているのかなと思います。

Tips

modoのユーザーチャンネルをFBXに出力する方法

modoのユーザーチャンネルをFBXに出力する方法について書いてみます。modoでリギングする場合はユーザーチャンネルを使用することが多いと思います。このユーザーチャンネルの値を他の3Dソフトに渡したいことがあるかもしれません。

modoはユーザーチャンネルの「チャンネル名称」の先頭を「FBX_」にすると、FBXファイルにユーザーチャンネルを出力することができます。

 

出力可能なチャンネルタイプ

modoがFBXに出力可能なチャンネルタイプは以下の通りです。ただし「正数」やベクターモードの出力には問題があるように思います。

  • 正数
  • 浮動小数点
  • 距離
  • 角度
  • パーセンテージ
  • クォータニオン
  • 焦点距離
  • XYZ
  • RGB
  • RGBA
  • UVW

 

全てのチャンネルタイプを追加してFBX出力して試してみた。

 

Mayaに読み込んだ画像、カスタムアトリビュートとして読み込まれてるのがわかる。一部のチャンネルタイプと値が読み込まれていない。

 

3dsMaxに読み込んだ画像、Mayaと比べるとAngleの値がおかしいのとキーが正しく読み込めてないような気がする。MaxってRGBAのUI存在するんだね、知らなかった。

 

キーフレームの出力

ユーザーチャンネルにキーフレームを設定している場合、modo 12.2以前のバージョンではエクスポート時にmodoがクラッシュするので注意が必要です。

modoからMayaに出力する場合は「浮動小数点」タイプ「スカラー」モードのチャンネルを使用しておくのが無難に思います。またユーザーチャンネルの読み込みはFBXインポーター側の対応状況にも依存するので、事前に調べておく必要がありますね。

Tips

modoのパーティクル モディファイヤ

modoのパーティクル モディファイヤについて書いてみたいと思います。モーショングラフィックのような規則的なアニメーションを手軽に作成することができます。

 

パーティクル モディファイヤとは

パーティクル モディファイヤはメッシュの頂点やシミュレーションされたパーティクルのトランスフォーム情報(位置/回転/スケール)を編集することがでるノードで、Replicatorでアイテムを複製するときに使用すると便利です。

 

 

例えば Particle Look At Modifierを使用すると、Replicatorで複製されたアイテムが指定したアイテムの方向に回転することができます。

 

Particle Modifier

Particle Modifierノードは最もシンプルな機能のノードで、パーティクルにトランスフォームを加えることができます。フォールオフと組み合わせると、フォールオフの範囲内のパーティクルにだけ影響をあたえることができます。

サンプルファイル

 

フォールオフはテクスチャにも使用することができます。うろこがめくれると、質感が変わるような表現にも便利に使えます。サンプルファイルの質感の設定がちょっと雑です。

サンプルファイル

 

アドバンスドビューポートとGradientを使用した例。アドバンスドビューポートはGradientが表示出来て便利なのですが、テクスチャのフォールオフなど、もっと色々な表示に対応してくれたら面白いんですけどね。

パーティクル モディファイヤはモーショングラフィックのような用途以外にも覚えておくと便利だと思います。他のパーティクルモディファイヤの解説ムービーを貼っておきます。

 

参考

Sentinel Skin Transition Effect

https://cgi.tutsplus.com/tutorials/sentinel-skin-transition-effect--cms-22497

 

Particle Modifier

 

Particle Look At Modifier

 

Particle UVT Modifier

 

Particle Snap Modifier

 

Particle Sieve Modifier

 

Particle Audio Modifier

 

関連

modoではVertex Transform Mapを使用すると、パーティクルごとに手動でトランスフォームを編集することができて便利です。静止画用途で便利に使えると思います。

Tips

modoでキューブが揺れる表現

modoのTransform EffectorとSoft Lagを使用して、並んだCubeアイテムが揺れる表現について書いてみます。

サンプルファイル

処理は単純です。Transform Effectorとフォールオフを使用してPlaneメッシュを変形します。変形が加わった頂点にSoft Lagが作用してバネのように揺れます。CubeアイテムはReplicatorを使用して配置しているので、メッシュを直接Soft Lagで変形する場合に比べて軽く動作します。


Transform EffectorとSoft Lagの変形順はデフォーマリストで指定します。

Soft Lagの動作がおかしい場合は、フレーム間の計算がスキップされないように「デフォーマキャッシュ」や「リアルタイム再生」をOFFにすると改善します。

単純なシーンですが、よく見かける感じの表現が簡単に作れるんじゃないかと思います。

Tips

modoのフォールオフプローブでアニメーション制御

modoのフォールでアニメーション再生のタイミングを制御する方法について書いてみます。modo 12.0以降のバージョンで動作します。

サンプルファイル

スケマティックはこんな感じです。基本的にはカーブプローブを使用したアニメーションの制御方法と同じで、ノードが違ってもスケマティックで同じように処理してるのがわかるかと思います。

木のモデルにキーフレームアニメーションを設定して、DummyMeshにペアレントした物をReplicatorで複製します。
DummyMeshの「ワールド位置」を Matrix Vector ノードでマトリクスに変換してFalloff Probe にリンクします。Falloff ProbeのOutputは、フォールオフと複製されたDummyMeshの位置に応じて0~1の値を出力します。0~1の値を使ってアニメーションを再生したいので、Relationshipノードを Time Offsetノードにリンクしてアニメーションの再生速度を調節します。

カーブプローブを使用した時と違い、フォールオフの値がそのままアニメーションの再生速度になってるので、もう少し処理を考える必要があるかも知れません。

 

簡単な木が生えるアニメーションを作ってみました。

プロシージャルモデリングは道路のように繰り返しコピーされてるような形状を作るときに便利ですね。あとから白線の太さや道幅を調整したいとき、1つのメッシュを変更すれば、他のメッシュにも変更が反映されます。

道路と地面は別々のアイテムとして作ったものを、Merge Meshで1アイテムに統合しています。道路はMerge Mesh後に直線状に複製してVertex Mergeで頂点結合した後、メッシュ全体をベンドで曲げてます。

ベンド後の背景アイテムを移動させることで車が走ってるように見せてます。デフォーマとトランスフォームを組み合わせた定番手法です。

 

Tips

modoでオーバースキャンレンダリング

画像を外側に広げた大きさでレンダリングしたい時に便利な、オーバースキャン レンダリングについて書いてみたいと思います。

 

オーバースキャンとは

もともとはブラウン管テレビの外周にある黒縁のように、データは存在するけど映像が見えない目隠しされている領域を「オーバースキャン」と言います。3DCGでもカメラフレーム外側の領域をレンダリングすることを「オーバースキャン レンダリング」と呼んだりします。

CGではコンポジットで被写界深度やレンズのゆがみを追加したとき画像の端が綺麗に処理されるように、または画面揺れを追加できるように、一般的な映像フォーマット(720p、1080p)より少し大きめのサイズでレンダリングすることが多いと思います。静止画でも印刷用途だと「裁ち落とし」部分まで画像を用意すると思います。

 

オーバースキャン スクリプト

オーバースキャン レンダリングしたいときは「bd_overscan.py」を使うと便利です。

 

オーバースキャン レンダリングの計算方法

大抵は3Dソフトごとにオーバースキャン レンダリング用のスクリプトや機能があるのですが、カメラのフィルムバックを使用すると簡単に計算することができます。

元となるカメラの設定です。

レンダー解像度
  • 幅 1280
  • 高さ 720
フィルムバック
  • フィルム幅 36 mm
  • 高さ 24 mm

カメラのフレームはこんな感じです。

デフォルト設定1280×720ピクセルのレンダリング結果です。オブジェクトを左右ギリギリに配置して、球体の影はフレームにかかるよう配置してます。このデータを使ってオーバースキャンを計算してみます。

 

パーセント指定する方法

「フィルムバック」を使用する方法

例えば120%に拡大したい場合は、現在の「レンダー解像度」と「フィルムバック」に1.2を掛けます。フィルムバックを使用するとカメラの「焦点長」を変更せずに済むので便利です。

レンダー解像度
  • 1280 * 1.2 = 1536
  • 720 * 1.2 = 864
フィルムバック
  • 36 mm * 1.2 = 43.2 mm
  • 24 mm * 1.2 = 28.8 mm

120%したプロパティです。

120%でレンダリングした画像です。

 

「焦点長」を使用する方法

フィルムバックの設定がないソフトの場合は「焦点長」を1.2で割る方法が使えます。3dsMaxの「レンズ」でも同じ計算方法が使えます。

レンダー解像度
  • 1280 * 1.2 = 1536
  • 720 * 1.2 = 864
焦点長
  • 50 mm/1.2 = 41.666 mm

120%したプロパティです。

120%でレンダリングした画像です。

ピクセル数を指定する方法

1280pixを1600pixのようにピクセル数を指定する場合は「変更したいサイズ÷現在のサイズ*フィルムバックサイズ」で計算できます。

レンダー解像度
  • 1280 → 1600
  • 720 → 900
フィルムバック
  • 1600 / 1280 * 36 mm = 45 mm
  • 900 / 720 * 24 mm = 30 mm

1280×720を1600×900に変更したプロパティです。

1280×720を1600×900でレンダリングした画像です。

 

ピクセル数を指定して「焦点長」を求めるにはアークタンジェントとかいう計算が必要っぽいので、今回はスルーします。どうして計算方法を書いたかというと、他のソフトでも使うことができるんじゃないかなと思いました。

modoでオーバースキャン レンダリングするときは、シーンを別名で保存/管理する方法もありますが、カメラの動きを修正した場合を考えてレンダーパス使う方法や、バッチレンダリング時にコマンドでオーバースキャンの値を設定する方法が柔軟性があって便利な気がしますね。

 

参考

https://www.pixelfondue.com/blog/2016/12/9/overscan-rendering