Tips

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

Tips

modoのセンターとピボット

modoの「センター」と「ピボット」について書いてみます。とりあえず他の3Dソフトで言う「ピボット」を編集したい場合、modoでは「センター」を使っておきましょうという話です。

 

modoはアイテムモードで移動/回転/スケールするとき、メッシュのどの位置を基点にするか指定する機能として「センター」と「ピボット」という2つの要素があります。「センター」はメッシュの基準となる位置、「ピボット」はセンターからのオフセット位置と、アイテムを移動/回転/スケールするときの基点となる位置として使用されます。

ピボットはセンターからのオフセットとして動作しています。

センターはアニメーションできませんが、ピボットはキーを設定してアニメーションしたりリギングに使用することができます。

サンプルファイル

 

modoのピボットはトランスフォームアイテムです。ピボットの位置を編集するとピボット用のトランスフォームアイテムが追加されます。ピボットを編集しない場合はセンターがピボット位置として機能します。
トランスフォームアイテムの計算順はチャンネルビューポートで確認することができます。

 

ロケータで親子関係を設定すればピボットを直接アニメーションしなくても同じようなことができますが、サイコロを転がすようなアニメーションの場合は、ピボットを使用した方がアイテムリストがスッキリしていいかもしれません。

 

ちなみに、メッシュの中心にセンターやピボットを移動したいときは、専用のコマンドがあるので便利です。

 

とりあえず「センター」を使うとよい

他の3Dソフトを使用した経験があると「センター」と「ピボット」の関係が少しややこしいですが、回転などトランスフォームの基点になるという意味ではmodoも他のソフトと同じで「ピボット」が使用されます。ピボットのオフセット位置を計算するための基点として「センター」という概念が導入されているのだと思います。

それでは他のソフトのピボットと同じような感覚で、modoのピボットを使用すればいいかと言うと違います。理由は以下の通り。

  • modoはFBX出力するときにセンターをピボットとして出力する
  • modoのリジッドボディダイナミクスは回転の基点にセンターを使用する

他のソフトやゲームエンジンとの連携を考えると、ピボットを直接アニメーションしたいとき以外は「センター」を編集した方が何かとトラブルに遭遇しなくてすむと思います。
Foundryのフォーラムで「センターはピボット、ピボットはピボット オフセットに名称を変更した方がいい」という書き込みを見かけましたが、確かにその方が他のソフトを使用してるユーザーにはなじみがいいように思いました。

 

3dsMaxやLightWaveなど設計の古いソフトはピボットをアニメーションすることができませんでした。このためセンターという概念や用語がありませんでした。
MayaやMaxのプラグインBipedやCAT、Messiahなどアニメーションに強いと言われるソフトはピボットのアニメーションに対応してる場合が多かったように思います。modoの「センター」と「ピボット」はその辺りをふまえた設計なのかもしれません。

 

参考

http://modogroup.jp/modo/column/animation05

Tips

modoで車リグの作り方

modoで車リグの作り方について書いてみたいと思います。本格的で複雑なリグではなく、タイヤが地形に合わせて動くような単純なものです。

 

タイヤの回転

車のタイヤ(ホイール)の回転にはRevolveノードを使用します。Revolveノードはオブジェクトの移動距離から、回転を計算してくれる便利なノードです。

スケマティックはこんな感です。

ロケータに円柱をペアレントして、ロケータに移動アニメーションを設定しています。Revolveの「方向軸」はロケータをどの軸方向に移動したとき回転するかを指定します。また画像では直径1mのプリミティブの円柱を使用しているので、「半径」に半径500mmを設定します。

ロケータを直接アニメーションする場合は、ロケータの進行方向に沿って回転する必要があります。スケマティックを見るとわかる通り、Revolveは「ワールド位置」と「ワールド回転」を計算に使用します。移動方向に回転が設定されていない場合は、回転の計算が正しくおこなわれません。

Revolveを使用する場合は、パスコンストレイントを使用すると手軽に回転させることができると思います。

 

タイヤの接地

タイヤと地面の接地には、Intersectノードを使用します。Intersectはメッシュにロケータを沿わせることができるノードです。メッシュに近い位置のパーティクル色パーティクルのサイズを変えたりすることもできる便利なノードです。

Revolveで制御してるタイヤをIntersectでメッシュに沿わせたロケータにペアレントすると、地面の起伏に沿って回転するタイヤを表現することができます。ただしRevolveは平面上の移動から回転を計算するので、起伏がある地形では少しずれが発生してると思います。

 

車体の制御

起伏がある地形で車を走らせる場合、タイヤの位置にあわせて車体の傾きを制御したいと思うかもしれません。車体の傾き制御は以下の2つの処理で行います。

  • 車体のバンク角は前輪と後輪の平均した角度を使用します。
  • 車体ピッチ角は前輪と後輪の位置を使用します。

スケマティックはこんな感です。

左上の水色のグループはIntersectを使用して接地させる処理です。タイヤ4個ぶんロケータを作成しています。

左下の緑色のグループはRevolveを使用してタイヤを回転させる処理です。タイヤは全部同じように回転しています。Time Offsetはロケータの移動から、自動でステアリングを回転させる処理に使ってます。現在の回転値と-10フレームの回転値を減算することで、カーブでステアリングが回転して10フレしたら回転値が0になるようにしてます。動かないと違和感があったので、いいかげんな処理ですが入れてみました。RelationShipはステアリングの角度を±35°に制限するためと、イーズの効いた自然な動きにするために使用してます。

右側の紫色のグループが車体の制御の処理です。Position Constraint に2つのロケータの「ワールド位置」をリンクすることで、左右のタイヤの中間位置にロケータをコンストレイントしてます。Direction Constraint も同様で、左右のタイヤの平均にするためにコンストレイントしてます。(Position Constraintの変わりにMatrix Blendを使用しても問題ありません。気分的にDirection Constraintに合わせて、コンストレイント系のノードにそろえてみました)

前輪と後輪の中間位置にあるロケータの「ワールド位置」を Matrix Blend_1 にリンクして、前輪と後輪の中間位置を車体制御用のロケータ(Body_Rotation)にリンクします。Direction Constraint はピッチ角制御です。前輪と後輪の高さに合わせて、車体の前後方向をコンストレイントしています。Matrix to Eulerを使用して マトリクスを3軸の角度に分解して、車体制御用のロケータにリンクします。

Matrix Blend_2 はバンク角制御です。Matrix Blendを使用して前輪と後輪の中間の回転値を求めてます。Time Offsetは車体が回転するタイミングをずらすことで、サスペンションが揺れてる感じが出せないかと思って入れてみました。本格的にバネのようなサスペンションの揺れを再現するには、CBOXのマッスルデフォーマを使用すると作れると思います。

手作業で車体の揺れが調整できるように、車体制御用のロケータ(Body_Rotation)に車体のメッシュをペアレントしています。下の画像の最後の揺れは、自動ではなく手付けです。

 

制御用のロケータを表示した画像です。青色のシリンダーがホイールの中心位置、紫のピラミッドが車体の傾き制御用のロケータです。

 

実際にはこれだけでは不完全です。Intersectのモードに「レイ」のY軸を使用しているので平面や多少の起伏なら問題ありませんが、傾斜が大きい場合に前輪と後輪の距離が離れてしまいます。タイヤの距離を一定に保つシャーシのような仕組みが必要です。

Direction Constraintを使用してタイヤの距離を一定に保ったり、Relationshipを使用してタイヤの距離を調整することはできるのですが、すっきり解決する方法が思いつかなかったので、とりあえずここまでの記事としておきます。

 

参考

車はフリー化されたignition-masterのモデルを使用しました。タイヤの回転やスケールに望ましくない値が入っていたので修正して使ってます。
https://github.com/9bstudios

Tips

modoのレンダリングウィンドウで進行状況を表示しない方法

modoのレンダリングウィンドウで、レンダリングの進行状況を表示しない方法について書いてみます。

modoはレンダリング実行時に、オレンジ色のバケット単位でレンダリングの進行状況が表示されます。レンダリングの進捗が見れるのでミスがあった場合に気がつきやすくて便利なのですが、進捗表示はレンダリング速度に影響します。

進捗を100%サイズで表示していると画像のアップデートの処理ぶんレンダリングが遅くなり、3.313%のように表示サイズを小さくすると少し早くなります。これはレンダリングウィンドウのサイズを変えてレンダリングしてみると、速度に差が出るのを簡単に確認できると思います。
静止画であれば問題になることは少ないと思いますが、アニメーションの場合は少しでもレンダリングが速いほうが嬉しいと思います。

 

レンダリングコマンド

進行状況を表示しないようにするには、render.animation コマンドのオプションを使用します。

render.animation {C:\Output\FileName_} png16 2

コマンドフィールドに入力してEnterを押すと、進行状況を表示せずアニメーションのレンダリングが実行されます。レンダリングが完了すると最後のフレームがレンダーウィンドウに表示されます。

コマンドリストを検索すると、render.animation の引数について書かれているのがわかると思います。

render.animation <filename:string> <format:string> <options:integer> <group:&item>

<filename:string>は出力先のファイルパスとファイル名を設定します。ファイルパスのような引数は{}で囲んで指定します。<format:string>は出力形式、<options:integer> がレンダリングオプションです。<group:&item>はレンダーパスの設定です。今回レンダーパスは使用してないので省きました。引数がない場合はシーンの設定でレンダリングされます。

コマンドリストにはオプションに関する説明がありませんが、以下のようになってるらしいです。

  • 1 : NOT_WAITING // 次のフレームをレンダリングするまで待機しません
  • 2 : NO_IMAGE // 進捗画像を表示しない
  • 4 : IC_ONLY // ICのみレンダリング
  • 8 : NO_CLEANUP // レンダリング終了後にクリーンナップしない
  • 0 : RENDER_ANIIM // アニメーションをレンダリングしていることを示すためにrender.animationによって使用される。

今回は進捗を表示したくないので「2」を使用しました。このオプションはデバッグ用に用意された物で、現在でも上記のオプション通りに動作するかはわかりません。

アニメーションをレンダリングするときに使うと、時間の節約になって便利かもしれません。ちなみに進捗状況の表示サイズが大きいとレンダリングが遅くなる問題はAfter Effectsでも発生するし、modo同様にビューを縮小するとレンダリング速度が速くなります。

 

参考

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

Tips

Mayaのコマンド ライン レンダラを使用したバッチレンダリング

Maya のコマンド ライン レンダラ Render.exe (mayabatch.exe)を使用したバッチレンダリングの方法について書いてみます。複数のシーンファイルを連続してレンダリングしたい場合に便利です。

 

バッチファイル作成

例えばCut_001.ma、Cut_002.ma、Cut_003.maのように複数のシーンファイルがあって、全てのシーンをレンダリングする場合について書いてみます。

テキストエディタを使用してRender.exeと.maファイルへのパスを記述し、拡張子を.batにして保存します。バッチファイルは行ごとにコマンドが実行されるので改行には注意してください。

“C:\Program Files\Autodesk\Maya2017\bin\Render.exe” -rd “C:\BatchFolder\Output” “C:\BatchFolder\Cut_001.ma”
“C:\Program Files\Autodesk\Maya2017\bin\Render.exe” -r sw -s 1 -e 5 -of tga -rd “C:\BatchFolder\Output” “C:\BatchFolder\Cut_002.ma”
“C:\Program Files\Autodesk\Maya2017\bin\Render.exe” -r sw -s 1 -e 12 -of png -im “Cut_003_” -fnc “name#.ext” -rd “C:\BatchFolder\Output” “C:\BatchFolder\Cut_003.ma”
cmd /k

コマンド ライン レンダラはフラグを設定して、シーンファイルの設定を変えてレンダリングすることができます。

1行目が最も単純な記述方法です。フラグ -rd はレンダリングした画像の出力先を指定するものです。

2行目 -r はレンダラの指定で sw はMayaソフトウェアです。mr はメンタルレイです。
-s 1 -e 5 はフレームレンジで、開始フレーム数と終了フレーム数です。
-of tgaはイメージフォーマット。
-rd “C:\BatchFolder\Output”はレンダリングした画像の出力先のディレクトリ指定です。

3行目 -im “Cut_003_” は出力ファイル名です。-im “<Camera>/<RenderLayer>/Cut_003_<Scene>_<RenderPass>” のように「ファイル名プリフィックス」を使用してフォルダを作成したりレンダーレイヤーの名前を使用することできます。
-fnc “name#.ext”は連番番号と拡張子のフォーマットの指定です。

基本的には「レンダー設定」のフラグを覚えると便利に使えます。

.batをダブルクリックするとコマンドプロンプトが起動してレンダリングが実行されます。レンダリングが終了したらコマンドプロンプトを閉じて完了です。

 

環境変数

Mayaはシステムの環境変数によってUIの言語やプラグインパスが定義されていますが、バッチファイルを使用すると環境変数を指定してMayaを起動することができます。

例えばMayaを英語で起動したい場合は、以下のようなバッチファイルを作成します。

SET MAYA_UI_LANGUAGE=en_EN
“C:\Program Files\Autodesk\Maya2017\bin\maya.exe”

バッチレンダリングでも同様のことができます。例えば以下のようにプラグイン(モジュール)のバージョンを指定してレンダリングすることができます。

SET MAYA_MODULE_PATH=C:\Modules\PluginVersion_100\
“C:\Program Files\Autodesk\Maya2017\bin\Render.exe” -r sw -s 1 -e 5 -of png -im “AAA_” -rd “C:\BatchFolder\Output” “C:\BatchFolder\Cut_001.ma”
SET MAYA_MODULE_PATH=C:\Modules\PluginVersion_130\
“C:\Program Files\Autodesk\Maya2017\bin\Render.exe” -r sw -s 1 -e 5 -of png -im “BBB_” -rd “C:\BatchFolder\Output” “C:\BatchFolder\Cut_001.ma”
SET MAYA_MODULE_PATH=C:\Modules\PluginVersion_151\
“C:\Program Files\Autodesk\Maya2017\bin\Render.exe” -r sw -s 1 -e 5 -of png -im “CCC_” -rd “C:\BatchFolder\Output” “C:\BatchFolder\Cut_001.ma”
cmd /k

Mayaはマイナーバージョンでも細かくバグが増えて動作がおかしくなることが多いので、Mayaに問題があるのかプラグインが問題かテストするときに、複数のプラグインバージョンでレンダリングをテストするときに便利です。

 

参考

コマンド ライン レンダラの共通フラグ

https://knowledge.autodesk.com/ja/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2016/JPN/Maya/files/GUID-0280AB86-8ABE-4F75-B1B9-D5B7DBB7E25A-htm.html

環境変数

http://help.autodesk.com/view/MAYAUL/2016/JPN/?guid=GUID-925EB3B5-1839-45ED-AA2E-3184E3A45AC7

Tips

AfterEffectsでaerenderを使用したバッチレンダリング

After Effects のaerender.exeを使用したバッチレンダリング方法について書いてみます。複数のプロジェクトを連続してレンダリングしたい場合に便利です。

 

バッチファイル作成

例えばCut_001.aep、Cut_002.aep、Cut_003.aepのように複数のプロジェクトファイルがあって、全てのプロジェクトをレンダリングする場合について書いてみます。

テキストエディタを使用してaerender.exeと.aepファイルへのパスを記述し、拡張子を.batにして保存します。バッチファイルは行ごとにコマンドが実行されるので改行には注意してください。

“C:\Program Files\Adobe\Adobe After Effects CS6\Support Files\aerender.exe” -project C:\BatchFolder\Cut_001.aep
“C:\Program Files\Adobe\Adobe After Effects CS6\Support Files\aerender.exe” -project C:\BatchFolder\Cut_002.aep
“C:\Program Files\Adobe\Adobe After Effects CS6\Support Files\aerender.exe” -project C:\BatchFolder\Cut_003.aep
cmd /k

.batをダブルクリックするとコマンドプロンプトが起動してレンダリングが実行されます。レンダリングが終了したらコマンドプロンプトを閉じて完了です。

プロジェクトファイルは、あらかじめレンダーキューを追加してファイルの出力先を設定して「レンダリング」ボタンを押すだけの状態にしておく必要があります。

 

引数

aerenderは引数を使用してレンダリングするフレームやコンポジッションを指定することが出来ます。個人的には全く使わないけど、テストしたのでメモっておきます。

以下は「CompositionA」というコンポジッションをレンダリングして、任意のディレクトリにファイル出力する例です。

“C:\Program Files\Adobe\Adobe After Effects CS6\Support Files\aerender.exe” -project C:\BatchFolder\Cut_001.aep -comp “CompositionA” -output C:\BatchFolder\Output\Cut001_[####].psd
cmd /k

ちなみに -comp がないと -output を使用してファイルパスを変えられません。マニュアルには「引数を指定しない場合は、レンダーキュー内のコンポジションすべてがレンダリングされます。この場合は、–project、–log、–output、–v、–mem_usage および -close 引数のみが使用され、その他の引数は無視されます。」と記載されてますがCS6では動作しません。-comp がない場合は「-comp がないので-output引数は無視されます。」という警告がでます。

–output を使用すると出力パスと出力ファイル名を指定することができますが、拡張子を変えててもファイルフォーマットは変わらないようです。

 

監視フォルダーモード

バッチファイルを使用して監視フォルダーモードを実行することもできます。「監視フォルダーモード」は複数のPCがフォルダを監視し、レンダリング可能なプロジェクトがあればフレーム単位で分散レンダリングしてくれる機能です。

テキストエディタを使用してAfterFX.exeと、 -wf を使用して監視するディレクトリを記述し、拡張子を.batにして保存します。

“C:\Program Files\Adobe\Adobe After Effects CS6\Support Files\AfterFX.exe” -wf C:\BatchFolder\

「監視フォルダーモード」でレンダリングするには「レンダリング制御ファイル」 が必要です。ファイルメニューの「フォルダを収集」実行時に作成されます。

 

レンダリング制御ファイル

レンダリング制御ファイルは「フォルダを収集」を実行すると.aepと同じディレクトリに「プロジェクト名_RCF.txt」という形で作成されます。

テキストファイルの中身はこんな感じで、使用するPCの上限などが書かれてます。

After Effects 11.0v1 Render Control File
max_machines=5
num_machines=0
init=0
html_init=0
html_name=””

レンダリング完了後は以下のようになる。

After Effects 11.0v1 Render Control File
max_machines=5
num_machines=1
init=1
html_init=1
html_name=”Cut001_00.htm”

item1=(Finished,1,1,0)

レンダリングが完了するとレンダリング制御ファイルにレンダリング済みのフラグが書きこまれ、「監視フォルダーモード」のレンダリング対象から除外されます。「init=1」を「init=0」に変えると再度レンダリング対象になります。

 

参考

aerenderの引数はマニュアルに記載されています。
https://helpx.adobe.com/jp/after-effects/using/automated-rendering-network-rendering.html

Tips

modoのバッチレンダリング

modoのヘッドレスモードを使用したバッチレンダリングの使い方について書いてみたいと思います。
複数のシーンを連続してレンダリングする場合に便利です。

 

ヘッドレスモードとは

ヘッドレスモードはGUIのないmodoです。WindowsのコマンドプロンプトやOS Xのターミナルを使用してmodoを操作します。GUIがないためメモリが少なく済み、レンダリング中のプレビュー表示がないためレンダリング速度も少し早くなります。
ヘッドレスモードはGUIで使用できるほとんどのコマンドが使用できるので、特定のパラメータを変更してレンダリングすることができて便利です。

ヘッドレスモードのような仕組みはMaya、Max、AfterEffectsなど、アニメーションをレンダリングするソフトには大抵搭載されていて、ネットワークレンダリングなんかに使用されます。

 

バッチファイルとコマンドファイル

modoではヘッドレスモード用のmodoを起動するバッチファイルと、modoのコマンドを記述したテキストファイルを使用してバッチレンダリングをおこないます。

例えばCut_001.lxo、Cut_002.lxo、Cut_003.lxoのように複数のシーンファイルがあって、全てのシーンをOutputフォルダにレンダリングする場合について書いてみます。

 

バッチファイル

バッチファイルは拡張子を.batに変えたテキストファイルです。ヘッドレスモード用のmodo_cl.exeのパスと、コマンドファイルへのパスを記述します。今回は.batと同じディレクトリに.txtファイルがあるのでファイル名だけ書いてます。バッチファイルは行ごとにコマンドが実行されるので改行には注意してください。

“C:\Program Files\Foundry\Modo\12.2v1j\modo_cl.exe” < RenderSettingsFile.txt
cmd /k

 

コマンドファイル

コマンドファイルは拡張子通り普通のテキストファイルです。コマンドファイルにはmodoのコマンドを書いておくと1行ごとに実行されます。

log.toConsole true
log.toConsoleRolling true

scene.open {C:\BatchFolder\Cut_001.lxo}
render.animation {C:\BatchFolder\Output\Cut_001_} PNG16
scene.close

scene.open {C:\BatchFolder\Cut_002.lxo}
@ChangeRenderFrameRange.pl 1 3
render.animation {C:\BatchFolder\Output\Cut_002_} PNG16
scene.close

scene.open {C:\BatchFolder\Cut_003.lxo}
@ChangeRenderFrameRange.pl 1 4
render.res 0 1280
render.res 1 720
render.animation {C:\BatchFolder\Output\Cut_003_} PNG16
scene.close

app.quit

最初の2行はログ出力用のコマンドです。scene.openでファイルを開きrender.animationでレンダリングを実行してscene.closeでファイルを閉じています。render.animationコマンドは引数としてファイルの出力先のパスと出力ファイル名、出力フォーマットを指定しています。

@ChangeRenderFrameRange.pl はmodo標準のレンダリング範囲を変更するスクリプトを使用して、レンダリング範囲を変更する例です。render.resはレンダリング解像度の変更コマンドです。

 

レンダリングの実行

バッチファイルとコマンドファイルの準備ができたら.batファイルをダブルクリックします。modo_cl.exeとコマンドファイルのパスが正しく設定されていれば、コマンドプロンプトが開いてレンダリングの状況が表示されます。レンダリングが終了したらコマンドプロンプト閉じて終了です。

 

今回は単純にバッチレンダリングの例でしたが、ヘッドレスモードはほとんどのmodoコマンドが使用できます。例えばキャラと背景別々のシーンファイルを1つのシーンに読み込んでレンダリングしたり、複数のファイルのパラメータに同じ編集を加えてファイル保存したり、色々な使い方ができて便利だと思います。

 

参考

コマンドラインからModoのレンダリング
https://www.pixelfondue.com/blog/2016/11/3/modo-rendering-from-the-command-line

RenderMonkey

バッチレンダリング用のスクリプトも公開されています。元は有料のキットでしたが無料化されました。
https://github.com/9bstudios/mecco_renderMonkey

バッチレンダリングスクリプト

modoを通常通り起動してPythonスクリプトでバッチレンダリングするという物。レンダリングウィンドウで進捗を見たい場合にはいいかもしれません。https://community.foundry.com/discuss/post/747715

Tips

modoのパーティクル色

modoのmodoのパーティクル色ついて書いてみたいと思います。

Particle ModifierやParticle Generator、Particle Operatorノードには「色」というチャンネルがあり、パーティクルに色の情報を設定することができます。

パーティクルに設定した色を使用するには Particle Sampleノードの「パーティクル色」を使用します。スケマティックにParticle Sampleを追加して、マテリアルの「ディフューズ色」にリンクすると、リプリケータを使用して複製したアイテムに「パーティクル色」を適用することができるようになります。

 

下の画像はParticle Modifierの「色」で設定したグラデーションを使用して、リプレイケータで複製した球に色を設定したものです。Capsule Falloffを使用して色を設定する範囲を指定しています。

スケマティックはこんな感じです。

Particle Operatorはベースになる色を設定するのに使用しています。パーティクル色はデフォルトで黒色なので、Particle Operatorに特性「色」を追加して演算ノードで1を設定して白色にしています。ただしパーティクルが発生したフレームは色が適用されず必ず黒色になるようです。パーティクル色を使用する場合は発生直後のパーティクルをレンダリングしないようにする必要があるかも知れません。

 

単純な表現であればグラディエントテクスチャを使用して同じようなことができますが、
パーティクル色を使うとスケマティックを使用した複雑な表現ができるようになります。
たとえば下の画像のように、ポリゴンメッシュに距離が近いパーティクルに色を設定することができます。

スケマティックはこんな感じです。

基本的にはレゴブロック風の表現と同じ処理で、Intersectノードを使用してメッシュとパーティクルの距離を出力して、Relationshipノードを使用してメッシュに近い場合に任意の色になるように設定しています。

Intersectノードはmodo標準機能だと、コンストレインの「交差サーフェイス」で使用されるノードです。IntersectノードのTypeはデフォルトでLineになっているのでSurfaceに変更します。このTypeチャンネルは凄く重要なパラメータなのですが、プロパティには表示されないので、チャンネルビューポートで設定する必要があります。

Intersectはメッシュチャンネルとアイテムの位置情報を使用するので、ToroidのワールドチャンネルをMatrix Composeして「トランスフォーム入力」にリンクします。Matrix ComposeやMatrix Constructが何かわからない場合はマトリクスチャンネルの記事を読んでみてください。

 

Particle Generatorをエミッターにして等間隔に発生させたパーティクルを使用すると、ドット絵っぽい表現になります。

ちなみにParticle Generatorについてる「色」は、タイプが「配列」のときは正常に動作しないので注意が必要です。「放射状」では正しく色が反映されます。Particle Generatorは簡単にテストしたいときによく使うので、ちょっと罠っぽいですね。

タイプが配列の場合、グラデーションが無視される。

タイプが放射状の場合、グラデーションが適用される。

 

パーティクル色はスケマティックと連携すると色々面白い表現ができそうです。モーショングラフィックにも最適ですね。

Tips

modoのWebビューでアイテムセレクター作ってみた

今回は「Webビュー」を使用したアイテムセレクターの作り方について書いてみたいと思います。htmlの編集に慣れていれば簡単にグラフィカルなアイテムセレクターやツールパレットを作ることができます。

 

CBOX Selectorの使用方法

Webビューに以下のURLを表示してご使用ください。

http://kai-tei.daa.jp/contents/diary/img/2019/CBOX_Selector.htm

WEB ビューの表示方法は「メニュー / レイアウト / パレット / 新規パレット」を実行後に、パレット右上の▼アイコンから「アプリケーション / ウェブ ビュー 」を選択します。
ギアアイコンまたはタイトルを右クリックで表示した「ホームページ」に上記のURLを入力し、「ホームページへ」ボタンをクリックします。

Webビューは以下のような記述でPCローカルにあるhtmlファイルも表示することもできます。Webビューにhtmlをドラッグアンドドロップして表示することもできます。コマンドをカスタマイズしたい場合はhtmlをローカルに保存してご使用ください。

resource:ModoIntroScreen.html

 

WEB ビューとは

Webビューはmodo 10.2で追加されたビューポートで、modo内でhtmlファイルを表示することができます。modo 11.0の初回起動時に表示されるイントロダクションスクリーンはWebビューを使用しています。

イントロダクションスクリーンは以下のコマンドで表示することができます。

introScreen.start show:1

イントロダクションスクリーンの元になっていると思われるファイルは以下のディレクトリあります。

C:\Program Files\Foundry\Modo\12.2v1\resrc\ModoIntroScreen.html

modoのWebビューのレンダリングエンジンはQtの古いブラウザ機能を使用しているらしいです。このためChromeのような近代的なブラウザに比べて制限があるかも知れません。

 

Webビューからコマンドを実行する方法

Webビューはハイパーリンクを使用してmodoのコマンドを実行することができます。コマンドは javascript:lx.cmdExecute(‘ コマンド ‘) のように記述します。

以下は<A>タグの記述例です。

<a href=”javascript:lx.cmdExecute(‘select.item RootItem set’)”>ルートアイテム選択</a>

テキストリンクの単純なサンプルです。

http://kai-tei.daa.jp/contents/diary/img/2019/webView_1.htm

CBOX Selectorでは画像を使用したいので「クリッカブルマップ」や「イメージマップ」と呼ばれる機能を使用しました。クリッカブルマップは画像にリンクを設定して、特定の場所をクリックしたときにURLに移動するための機能です。Webだと天気予報の地図で地域を選択するのによく使われます。

以下は<map>タグの記述例です。クリック範囲をピクセル指定します。

<map name=”Map”>
<area shape=”rect” coords=”193,653,343,675″ href=”javascript:lx.cmdExecute(‘select.item RootItem set’)” alt=”RootItem” title=”RootItem”>
</map>

クリッカブルマップの範囲は「HTML Imagemap Generator」のようなサービスや、Dreamweaver で手軽に作成することができます。

 

クリッカブルマップのレスポンシブ対応

アイテムセレクターとして使用するために工夫した点として、クリッカブルマップのレスポンシブ対応があります。

レスポンシブというのはどんな画面サイズの端末でも快適にWebページを見ることを目指したウェブデザインの手法です。現在はPC、タブレット、スマホ、ガラケーなど端末によってWebの視聴環境が様々あると思います。どんな環境でも快適に見れるWebサイトの方がユーザビリティーが高いのでよいとされています。

このサイトもレスポンシブに対応しています。ブラウザの表示幅を変えると、表示幅に応じてレイアウトやデザイン、フォントサイズが変わるのがわかると思います。

アイテムセレクターとして使用するぶんには大がかりな設定は必要ありませんが、カードビューと同様にウィンドウサイズに応じて画像がスケールしたほうが便利です。
htmlとcssだけではクリッカブルマップをレスポンシブ対応させることができないので「jQuery RWD Image Maps」というスクリプトを使用しました。「jQuery」はJavaScript用の便利ライブラリです。詳細はhtmlのソースを見てください。

参考

レスポンシブなイメージマップの作成
https://qiita.com/tknakatsu/items/a37b0cb9939f9f6458e6

 

まとめ

カードビューコマンド範囲、そしてWebビューと3種類のアイテムセレクターの作り方について書いてみました。modoはスクリプトやプラグインが書けなくてもグラフィカルなUIを作ることができて楽しいですね。

基本的にはどの機能を使用してもアイテムセレクターを作ることができますが、各機能の感想を書いておくので参考にしてください。

  • カードビュー
    カード切り替えでフェードしたり少しリッチな見た目にすることができます。手のマウスカーソルアイコンのセンター位置が少し違和感あるくらいで、使用して特に気になるところはありません。htmlの知識がない場合は、cfgファイルを編集するカードビューが簡単かも知れません。
  • コマンド範囲
    modo内で簡単に作成できますが、シーン内にアイテムがあるのが邪魔です。またhtmlのようにページを切り替えることができません。
  • Webビュー
    テキストやクリッカブルマップからコマンドを実行できるので、htmlの編集に慣れていれば手軽にアイテムセレクターを作ることができます。デザインをスタイルシートで管理できるしhtmlの編集と更新も楽です。画像縮小があまり綺麗じゃない点が気になります。

個人的には慣れてるhtmlを使用するのが便利です。好みの方法でアイテムセレクター作ってみてください。

Tips

modoのコマンド範囲でアイテムセレクター作ってみた

前回はカードビューを使用したアイテムセレクターの作り方について書いてみましたが、今回は「コマンド範囲」を使用したアイテムセレクターの作り方について書いてみたいと思います。

■ サンプルファイル

 

コマンド範囲とは

コマンド範囲はmodo 901 で追加された機能で、ポリゴンをクリックしてコマンドを実行する機能です。
「コマンド範囲割り当て」ダイアログを見てわかる通りアイテム選択することを意図した機能ですが、スクリプトやモデリングコマンドを設定して使用することもできます。

これはMayaのリグでよく見かけるコントローラーが数多く表示されるリグと異なり、ドリームワークスのツールピクサーのPrestoのようにアニメーション専用ツールで見かける、アニメーションしたい部分を直感的に選択するための機能を実現するための仕組みと思われます。

 

コマンド範囲の作成方法

ポリゴンを選択して「コマンド範囲割り当て」を実行し、以下のような選択コマンドを設定することでアイテムを選択しています。「名称」はマウスオーバー時のツールチップとして表示されるので、わかりやすい名前を設定するとよいです。簡単ですね。

select.item アイテム名 set

 

コマンド範囲はポリゴンに設定されているので、アイテムを別のシーンに読み込めば、そのままアイテムセレクターとして使用することができます。
セレクター用のアイテムをシーンの邪魔にならない位置に移動して、専用のビューポートを表示すればカードビューのような使い方もできます。

コマンド範囲はポリゴンをそのまま使用できるので、カードビューを使用したアイテムセレクターより手軽に作成することができるんじゃないかと思います。
次回はWebビューを使用したアイテムセレクターの作り方について書いてみたいと思います。

 

参考

Tips

modoのカードビューでアイテムセレクター作ってみた

modoのカードビューを使用したアイテムセレクターを作ってみたので公開したいと思います。

リギングされたモデルをアニメーションする場合に、素早くアイテムを選択するためにグラフィカルなアイテム選択ツールが使用されることが多いと思います。3dsMaxだと「bipedsel」が有名でしょうか。

modoにはアイテム選択ツールのようなUIを作るのに便利な機能がいくつか用意されています。今回はmodoに古くからある機能「カードビュー」を使用してみました。カードビューから select.item コマンドを実行してる単純なものです。自分が便利に使いたいだけなのでCBOX専用です。汎用性は高くないですが必要に応じて書き換えてご使用ください。アイテム名を書き換えればACSでも使えると思います。シンプルなカードビューファイルも置いておくので解析に使ってみてください。

CBOX Selector

 

インストール方法

解凍したファイルを「Configs」フォルダにコピーしてください。

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

 

カードビューの使用方法

カードビューの使用方法は「メニュー / レイアウト / パレット / 新規パレット」を実行後に、パレット右上の▼アイコンから「アプリケーション / カードビュー 」を選択します。ギアアイコンまたはタイトルを右クリックで表示するカードビューを選択します。

 

注意点

CBOX用のアイテム選択ツールです。CBOXでデフォルトで設定されるスケルトン名称に準拠しています。「select.item アイテム名 set」のようにアイテム名を使用して選択しているため、シーンにリグが複数ある場合やスケルトン名を変更してる場合はCFG内のアイテム名を書き換える必要があります。

RootItemがないシーンで「ALL」ボタンをクリックするとmodoが落ちます。単体のコマンドでは問題ないのですが、なぜかバッチコマンドを使用すると落ちる。

 

カードビューとは

カードビューは新機能紹介で使用されていたビューポートです。modo 201の頃には搭載されていてmodo 起動時に表示されていました。(modo 10.2からはWebビューに変更されました)

カードはCFGファイルによってカスタマイズ可能で、カードの背景画像の指定や、コマンドを実行可能なクリック領域などを指定することができます。

 

CFGファイル

カードビューはHTMLをテキストエディタで編集するのと同じ感じで作成できます。modoのショーケースのCFGは以下のディレクトリに保存されているので参考になると思います。

C:\Program Files\Foundry\Modo\12.1v1j\extra\scripts\801_Showcase_Kit\configs\showcase_cards.cfg

解析しやすいように単純化したファイルも置いておくのでテンプレートとして使ってください。コマンドはスクリプトなどmodoで実行可能なコマンドは全て実行できるので、モデリング専用のツールパレットなグラフィカルなUIを作成することができます。

CFG解析用サンプルファイル

CFGファイルをテキストエディタで開くと、カードに関する設定が書かれているのがわかると思います。カスタマイズしたい場合は、”Command”の部分を書き換えるところからはじめるといいと思います。

<hash type=”Region” key=”Pelvis”>
<atom type=”Box”>230 346 310 398</atom>
<atom type=”ToolTip”>Pelvis</atom>
<atom type=”Action”>
<atom type=”Command”>select.item Pelvis set</atom>
</atom>

私も手探りで編集してるので正確なことは書けないのですが、編集してて気がついたメモを残しておきます。

  • CFGファイルを変更した場合はMODOを再起動が必要があります。
  • タグの閉じ忘れがあるとカードビューの一覧に表示されなくなります。
  • “Region” はクリック範囲の定義で、その後のKey=は範囲の名前です。
  • “Box”はコマンドを実行するクリック範囲です。矩形の左上と右下の座標(ピクセル数)を指定します。CARD VIEW CREATION TOOLSCard-O-Matic KITを使用するとmodo内でボタンの範囲を設定できて便利です。
  • “ToolTip”はマウスオーバーで表示されるツールチップ用のテキストです。
  • “Command”にはmodoのコマンドを設定します。
  • “Scheme”のkey=はmodo全体で名称が重複しないように設定します。
  • ファイルパスにはresource:、configs:、content:などの短縮パスを設定可能です。リソースフォルダC:\Program Files\Luxology\modo\801_sp2j\resrcresource:

     

    コンフィグフォルダ

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

    configs:

     

    コンテンツフォルダ

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

    content:

  • openURLでURLをブラウザで開くことができます。openURL “https://www.google.com/”

     

  • “CardName”でカードの切り替えを指定します。
  • “ImagePath”で背景画像を指定します。.png.jpg.tif.psd.tgaなどmodoがロード可能な画像フォーマットが使用可能です。pngで試したところアルファは無視されます。

カードビューを使用するとアイテムセレクターを手軽に作ることができます。ですが注意事項に書いた通り私が公開したものはアイテム名を使用して選択しているので汎用性が低いです。スクリプト書ければ自由度の高いセレクターが作れるんじゃないかと思います。
次回はコマンド範囲を使用したアイテムセレクターについて書いてみたいと思います。

 

参考

modo 202 Card View紹介ビデオ
http://community.thefoundry.co.uk/tv/training/view.aspx?id=76

カードビューの解説

Tips

CARD VIEW CREATION TOOLS

CARD VIEW CREATION TOOLSについて書いてみたいと思います。

CARD VIEW CREATION TOOLSはmodo内でカードビューを作成するためのスクリプトです。modo 201の頃にPerlで書かれたものですが、背景色の設定やカードの切り替えなどカードビューの多くの機能をカバーしています。
modoの仕様が変わってしまったのが原因か、残念ながら701以降はエラーがでてCFGを保存することができません。記事を書くために601を引っ張り出しました。

コマンドの設定にポリゴンの「パートの設定」を使用するため、Card-O-Matic KITに比べてコマンドの編集が少し面倒です。

 

配布元のWebアーカイブ

SenecaさんはDOOMで有名なid Softwareの方で、多くのmodo用スクリプトを公開してましたがサイトが閉鎖されてしまいました。
https://web.archive.org/web/20170504221035/http://www.indigosm.com/modoscripts.htm

再アップURL
https://community.foundry.com/discuss/post/1137398

 

インストール方法

ファイルを解凍して以下のファイルを「Configs」フォルダにコピーします。

  • cardTools.pl
  • cardToolsForm.CFG

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

 

使用方法

とりあえず既存のCFGファイルを開くと理解しやすいです。modo 801のショーケースを読み込むとこんな感じになります。

C:\Program Files\Foundry\Modo\12.2v1j\extra\scripts\801_Showcase_Kit\configs\showcase_cards.cfg

CARD VIEW CREATION TOOLSでは1アイテムが1カードとして扱います。ボタンを作るには、ボタンのクリック範囲になる平面ポリゴンを作成して「ポリゴンのパート」にコマンドを設定します。このときカンマ区切りで「Region名,コマンド」のように入力します。Region名はボタンのクリック範囲に使用するKeyです。詳細はCFGファイルを開いて見ると理解しやすいです。

簡単なCard set Settingの説明です。

  • LOAD CFG : 既存のCFGを読む込むことができます。ボタンのクリック範囲をメッシュとしてロードします。パートにもコマンドが入ってるので、ファイルを解析するに便利です。
  • SAVE CFG :シーンのアイテムを参照してCFG出力します。
  • name : カードの名前
  • username : UIのに表示されるタイトル
  • description : カードの説明
  • transition : カード遷移時のフェードの速度。ミリ秒指定
  • scheme :スキームの名前設定
  • color : 背景色の名前設定
  • COLOR SETS : 使用するスキーム名と背景色の指定

 

 CARD VIEW CREATION TOOLSのコマンド

CARD VIEW CREATION TOOLSが独自に使用するコマンドの記述方についてメモっておきます。

  • カードの切り替え
    CARD VIEW CREATION TOOLSでは1アイテムが1カードとして扱われます。LINK=で切り替え先のカード名を指定します。

    Showcase_Design_Image,LINK=M801_Showcase_Design
    Design_To_Showcase_Home,LINK=M801_Showcase_Homepage

  • URLに飛ばす

    NewIn601Link,openURL “http://www.luxology.tv/help.aspx?name=NewIn601.m4v”

  •  (–CARD–)
    特別なパートです。ディスクリプションやスキーム、カードのインデックス番号が記述されてます。

    (–CARD–),QuickLaunch,Start Card,1,set.cardQTbg
    特殊フラグ, 名前,説明/ディスクリプション,カードインデックス1~4,背景色

古いスクリプトですがカードビューの多くの機能に対応しているので、カードビューの仕組みを調べるのに役立つ気がします。

 

参考

https://web.archive.org/web/20170105055017/http://indigosm.com/modo2/CardTools.mov

Tips

Card-O-Matic KIT for modo

Card-O-Matic KIT for modoのについて書いてみたいと思います。

Card-O-Matic KIT for modoはmodo内でカードビューを作成するためのスクリプトです。Pythonで書かれていてmodo 12でも動作します。
CARD VIEW CREATION TOOLSと同じようにmodo内でポリゴンを使用してボタンのクリック範囲指定と、コマンドを設定することができます。既存のCFGを読み込んで編集することはできませんが、ざっくりとボタン配置してコマンド設定するにはCARD VIEW CREATION TOOLSより使い勝手がいいです。

配布先

残念ながらフィードバックが少なかったためキットの配布が終了してしまいました。

https://www.youtube.com/watch?v=HD5Y_HwEzAo

Youtubeのコメントを見と(ここ数日で公開が停止された?)、メールすれば配布していた最後のバージョンを送ってくれるようです。使いたい場合は問い合わせてみてください。
https://www.marc-albrecht.de/

 

Kitのインストール方法

「cardomatic」フォルダを「Scripts」フォルダにコピーします。

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

 

使用方法

Card-O-Maticはツールパレットもカードビューで作られています。カードビューの表示方法は「メニュー / レイアウト / パレット / 新規パレット」を実行後に、パレット右上の▼アイコンから「アプリケーション / カードビュー 」を選択します。ギアアイコンまたはタイトルを右クリックで表示するカードビューを選択します。

画像を読み込んでクリック範囲とコマンドを設定する流れ。

  1. カードビューに使用する画像を「Configs」フォルダに保存する。
  2. 「Prepare Card」をクリックして画像を読み込む。
  3. 平面ポリを作成。これがクリック範囲になる。
  4. 「Put Box」をクリックすると空のアイテムが生成される。
  5.  3で作成されたアイテムにBOXツールで平面を作成する。
  6. 「コマンド」をクリックして、ダイアログにコマンドを入力する。
    カードビューでボタンをクリックしたとき、ここで入力したコマンドが実行されます。コマンドはアイテムのユーザーチャンネルに追加されているので、直接ユーザーチャンネルを編集しても大丈夫です。
    必要なボタンの数だけ「Put Box」でアイテムを作成してコマンドを入力します。
  7. 「Write CFG」をクリックして「Configs」フォルダに保存する。
    保存時に使用したファイル名がカードビューのタイトルになります。

Card-O-Matic KITは細かな設定はできませんが、手軽にカードビューを作成できて便利だと思います。公開が停止されてしまったのが残念です。

Tips

modoのコマンド

modoのコマンドについて書いてみたいと思います。コマンドはmodoの根幹のシステムで、マクロやリギングなど様々な用途で便利に使える仕組みになっています。

 

コマンド

modoではツール切り替え、アイテム選択、ファイルの保存など、ユーザー操作のほとんどが「コマンド」として管理・実行されています。コマンドを実行するときは同時に「引数」がセットになっていて、コマンドの動作を決定しています。コマンドの仕組みがわかるとUIのカスタマイズや、マクロやスクリプトの作成で役立ちます。

コマンドと引数はコマンドラインUIを縦に広げて確認できます。

コマンドと引数の例です。たとえば、移動ツールをアクティブにすると、以下のコマンドが実行されます。

「tool.set」がコマンドで、それ以降の「TransformMove on」が引数です。

引数がない場合は、引数を入力するダイアログが表示されます。コマンドラインの「tool.set」だけ入力してEnterした場合、以下のようにどのツールを実行するか選択するためのダイアログが表示されます。

 

コマンド一覧

modoで実行可能なコマンドはコマンドタブに一覧として表示されます。

コマンドを検索することもできます。

iアイコン をクリックしてコマンドの説明を表示することもできます。

 

ショートカットキーの割り当て

履歴タブでは実行したコマンドにショートカットキーを設定することができます。コマンドの履歴で右クリックメニューから「コマンドにキーを割りあて」を実行すると、キーの割り当てダイアログが表示されます。


割り当てたいキーを押してOKすると、コマンドにショートカットキーが設定されます。

「コマンドにキーを割りあて」は後述のマクロやスクリプトなど、modoで実行されるコマンド全てにキーを設定することができます。

 

マクロ

モデリングやアニメーション作業で、決められたいくつかの操作を繰り返したいときがあります。そんなときmodoは操作を「マクロ」として保存して、同じ操作を繰り返し実行することができて便利です。

例えば選択したポリゴンに決まった量のベベルを実行したいときに使用します。下の画像のでは選択したポリゴンに「放射状」に整列した後、チューブ状に「ベベル」を実行するマクロの作成手順です。

作成したマクロは「Scripts」フォルダに保存すると、コマンドラインに「@マクロ名.LXM」を入力していつでも実行することができます。

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

マクロファイルはテキストエディタで開くことができます。今回作成したベベルマクロを開くと、以下のように「コマンド」と「引数」が処理順で記載されていることがわかります。

#LXMacro#
tool.set xfrm.radialAlign on
#Command Block Begin: ツール有効化
tool.setAttr xfrm.radialAlign centerX 0.0
tool.setAttr xfrm.radialAlign centerY 0.5
tool.setAttr xfrm.radialAlign centerZ 0.0
tool.setAttr xfrm.radialAlign radius 0.3018
tool.setAttr xfrm.radialAlign angle 0.0
tool.setAttr xfrm.radialAlign radHandleX -0.7071
tool.setAttr xfrm.radialAlign radHandleY 0.0
tool.setAttr xfrm.radialAlign radHandleZ -0.7071
#Command Block End: ツール有効化
#Command Block Begin: ツールの修正
tool.setAttr xfrm.radialAlign angle 0.0
tool.setAttr xfrm.radialAlign smooth 50
#Command Block End: ツールの修正
tool.doApply
tool.set poly.bevel on
tool.noChange
#Command Block Begin: ツールの修正
tool.setAttr poly.bevel inset 0.0
tool.setAttr poly.bevel shift 0.285
#Command Block End: ツールの修正
tool.doApply
tool.set poly.bevel off 0
tool.clearTask snap
tool.set *.bevel on
tool.noChange
#Command Block Begin: ツールの修正
tool.setAttr poly.bevel inset 0.109
tool.setAttr poly.bevel shift 0.0
#Command Block End: ツールの修正
tool.doApply
tool.set poly.bevel off 0
tool.clearTask snap
tool.set *.bevel on
tool.noChange
#Command Block Begin: ツールの修正
tool.setAttr poly.bevel inset 0.0
tool.setAttr poly.bevel shift -0.315
#Command Block End: ツールの修正
tool.doApply
tool.set poly.bevel off 0
tool.clearTask snap

「ペイント選択」のようにユーザー入力必要な操作はマクロに記録ることができないので注意が必要です。modoのコマンドを組み合わせると「レンダリング完了後に音声ファイルを再生する」ようなこともできるようになります。

 

マクロ内の値を実行時に変更

マクロ内の一部の値を実行時に変えたいときがあると思います。そんな時はコマンドのマクロ名の後ろに追加パラメータを指定すると、マクロファイル内の %1 %2 %3 … の部分を値に置き換えて実行することができます。

たとえば私の場合は、ループスライスの「位置」を決め打ちにしたカスタムのボタンを使用しています。スライス位置ごとに複数のマクロファイルを用意してもいいのですが、この追加パラメータを指定する方法であればファイルの数が少なくて済みます。

 

バッチコマンド

バッチコマンドは複数のコマンドを順番に実行することができます。複数のコマンドを実行したい場合、以前はマクロかスクリプトを使用する必要がありました。modo 801以降はバッチコマンドを使用して連続してコマンドを実行することができるようになりました。

バッチコマンド記述は以下の通りです。1つめの{}はラベル用の物で、2つめ以降のコマンドが実行されます。コマンドは最大20個実行できます。

cmds.batch {Temp} {item.duplicate false all:true} {item.setType locator locator}

このコマンドはアイテムと同位置にロケータを作成するものです。アイテム選択してコマンド実行すると、選択アイテムを複製してアイテムタイプをロケータに変更します。

 

コマンドとフォーム

modoのUIにはボタンがいくつも並んでいます。ボタン、プルダウンリスト、チェックボックスなどですが、これらのUI要素をmodoでは「フォーム」と呼んでいます。フォームにはコマンドが設定されていて、ボタンをクリックするとコマンドが実行される仕組みになっています。

下の画像はmodoの左側に表示される「移動ツール」のフォームを表示したものです。「フォーム編集」ではボタンラベル、ツールチップ、アイコンなどを編集することができるのがわかると思います。

フォームは「フォーム編集」を使用することで自由に表示方法を編集することができます。modo標準のフォームを編集したり、お気に入りのコマンドを集めたカスタマイズしたツールパレット作成にも使用できます。

 

ワークベンチ

modo 12.2ではより直感的にフォームを編集する機能として「ワークベンチ」が追加されました。

ちなみにZBrushのようにUIのボタンをドラッグアンドドロップで編集する「フォーム編集モード」もあります。

 

 アセンブリ ユーティリティとコマンド範囲

コマンドが使用されるのはUIだけではありません。ロケータのアセンブリタブのユーティリティや、コマンド範囲からもコマンドを実行することができます。

これらの機能は主にリギングでの使用を目的とているため、▼のプリセットボタンにはトランスフォームツールを起動するコマンドが並んでしますが、マクロやスクリプトなど任意のコマンドを登録して使用することができます。

 

まとめ

modoはほとんどのコマンドを確認できるので、UIを自由にカスタマイズしたり、スクリプトが書けなくてもマクロを作ることで作業を効率化できるところが素晴らしいです。コマンド範囲のように、ポリゴンにコマンドを貼り付けることができるというのも面白いですね。

コマンドのような仕組みは比較的一般的なようです。たとえばPhotoshopの「アクション」もコマンドのような仕組です。LightWave、3dsMax、Mayaも同様でツールを実行したときにコマンドを発行して、ユーザーがスクリプトやマクロを作りやすくする仕組みがあります。
しかしLightWaveや3dsMaxなんかは発行されるコマンドが限られているため、マクロやスクリプトを作成しようとするとパラメータにどうアクセスすればいいかわかりにくいという話をよく見ます。Mayaがカスタマイズしやすいと評価されるのは、より細かくコマンドを確認できることや、UIがMELなどスクリプトベースで作られているため動作を解析できるところにあるようです。

私はまったくスクリプトを書くことはできませんが、Pythonの知識があればmodoのコマンドを組み合わせて自動化や効率化するのは難しくないんじゃないかと思います。

 

参考


 

Tips

modoのプロシージャルモデリングでスライスアニメ

modoのプロシージャルモデリングで、ロゴマークなんかがスライスアニメの作り方について書いてみます。

サンプルファイル(12.2)

スケマティックとメッシュオペレーション リストです。

処理はアニメーションを見た通りです。ロゴのモデルを Merge Mesh で読み込み、複数のSliceノードで縦にカットします。Sliceのオプションででは「分割」「断面を埋める」をONにして、カットした部分のポリゴンを生成しています。
Axis Sliceに「分割」「断面を埋める」のオプションがあれば1ノードで済むのですが、オプションがないのでちょっと処理がスマートじゃないです。スライス幅を調整しやすいように演算ノードを使ってスライスの「開始 X」「終了 X」を制御しています。

スライドするアニメーションはmodo 12.2で追加された Jitter ノードを使用します。「リジッド移動」をONにて「範囲 Y」にキーを設定することでスライドさせています。スライドインする範囲を指定するために Boolean も使用してみました。回転のアニメーションはTransform Deformerを使用しています。

 

ちなみにブーリアンでも同じことができます。キューブを配置してブーリアンした方がノードの数を少なくできたかもしれません。

今回はプロシージャルモデリングの再編集可能な状態でアニメーションを作ると、どんな感じになるかのテストでした。詳細はサンプルファイルを見ていただくとわかりますが、プロシージャルモデリングを使用すると再編集のメリットはありますが細かなノードが増えてしまいます。

ロゴはパスの細かさや厚みを再編集できる状態が便利ですが、エッジベベルで面取りしたりアニメーション作業では通常のメッシュアイテムになってる方が作業しやすいように思います。

Maxの「ポリゴン編集モディファイヤ」のようにダイレクトモデリングツールの編集をスタックできるようになれば、だいぶ使いやすくなる気がします。将来のバージョンに期待したいですね。

 

参考