modo用の人型リグ作成スクリプト「Auto Character Setup」の無料版が公開されました。ACSは現在バージョン3を開発中ですが、この無料版はACS1が基になってるようです。無料で使えるのはいいですね。
https://www.autocharactersetup.com/free
動作環境
- MODO601 SP5以降
- Windows、OSX
modo用の人型リグ作成スクリプト「Auto Character Setup」の無料版が公開されました。ACSは現在バージョン3を開発中ですが、この無料版はACS1が基になってるようです。無料で使えるのはいいですね。
https://www.autocharactersetup.com/free
modoで選択したアイテムの名前をテキストファイルに出力するスクリプトが公開されてます。たまに欲しくなるので助かる。
https://community.foundry.com/discuss/post/1212480
ファイルパスを設定して実行する必要があります。
import os
import modo# Get the scene item
scene = modo.Scene()
# The path to write out the file to your desktop
file = os.path.expanduser("~/Desktop/selected_items.txt")
# Get all selected items names ass a list
# Adding \n to the end of the name for a new line in the file.
item_names = [item.name+"\n" for item in scene.selected]# Write data to file.
with open(file, "w") as item_name_file:
item_name_file.writelines(item_names)
ソースメッシュをターゲットメッシュに一致させるmodo用のスクリプトが公開されています。
https://gist.github.com/Eterea/a028ce392a8fd41f46922d505406614f
ソースで3頂点を選択し、ターゲットで3頂点を選択して一致させます。スクリプトには3つ引数があります。
3dsMaxのレンダーパスマネージャー「renderStacks」がリリースされました。シーンファイルに情報を保存するため、プラグインが不要なようですね。
https://renderstacks.com/renderstacks/
3dsMax用のレンダーパス/ジェネリックタスクマネージャーです。RPManager、LPass Manager、Prism、StateSet、Scene Stateを使ったことがある人ならわかると思います。みたいなものです。しかし、より賢く、より速く、より安定したものを目指しています。
一言で言えば、RenderStacksではパスごとに実行されるタスクのシーケンスを定義でき、シーンごとに無制限にパスを持つことができます。
例えば「ビューポートをCamera001に設定し、解像度を1920×1080に設定し、出力パスを "Z:\project\awesome\...\v001awesome_bty.exr "に割り当て、フレーム範囲を100から300に設定する」、「ティーポットにレッドプラスチックを適用する」などのように、「Bty」というパスをrenderStacksに指示することができます。
renderStacksを使えば、アーティストのよくあるシーン管理の手間が省けます。パスを一度設定するだけで、アート制作に集中できます。単純なミスでどれだけのレンダーノードの時間が無駄になったことでしょうか?
renderStacksは潜在的なヒューマンエラーの多くを防ぐのに役立ちます。さらに優れているのは、スクリプトを一行もコーディングすることなく、アーティストに優しいUIでこれらすべてを行うことができるということです。
インスピレーションのいくつか
renderStacksの開発者は、3dsMax用の他の多くのレンダーパスソリューションを手に取り、3dsmax用の階層型レンダーパスマネージャのような未発表のソリューションのビデオを研究してきました。 また、ModoのレンダーパスシステムやMayaのレンダーセットアップとレンダーレイヤーなど、他のDCCソリューションもチェックしました。 renderStacksは、アーティストとしての長年の制作経験から生まれたもので、他のソリューションの最高の機能を組み合わせたものです。私たちは renderStacks を Uber のレンダーパスマネージャーだと考えています 。
ここでは、RenderStacksの主な機能、ハイライト、そしてその背景にある考えをご紹介します。
renderStacksの主な目的は、扱う必要のあるシーンファイルの数を減らすことです。これにより、1つのシーンファイルからより多くのことができるようになります。そのためには、このツールはパスごとに非常に包括的なコントロールを提供しなければなりません。カメラ、解像度、フレーム範囲、オブジェクトの可視性、マテリアルオブジェクトのプロパティ、レンダラーのパラメータなどをコントロールすることができます。このドキュメントの最後にサポートされているpmodifier(パスモディファイア)のリストを見ることができます。
しかし、たとえ renderStacks が多くのパラメータを制御できるとはいえ、常にすべてのパラメータを制御する必要はありません。例えば、パスごとに異なるしきい値を設定したい場合、パスごとにすべてのレンダラーパラメータを管理する必要はありません。 renderStacks は何を制御するかについて非常に細かい粒度を提供し、どのパラメータを使用するかを明示的に選択することができます。
renderStacksはスタックベースです。驚きです。ノードベースのワークフローが好きなユーザーもいると思います。しかし、スタックベースのワークフローを選んだ理由はいくつかあります。
これに関しては、モディファイア スタック、LPass Manager、Prism、そして特に 3dsmax 用の Hierarchical Render Pass Manager からヒントを得ました。
パスの切り替えに数秒以上待つのが好きな人はいません。ユーザーのシーンには何億ものポリや何万ものオブジェクトがあることを知っています。私たちは、3ds Max のパフォーマンスを少しでも引き出すために、長年の間に学んだあらゆるトリックを駆使してきました。まだまだ改善の余地があると思いますが、RenderStacksは類似のソリューションの中で最高のパフォーマンスを提供できると確信しています。
renderStacksを使用すると、レンダリングに関連するすべてのパラメータを一箇所でコントロールすることができます。これは、レンダリングとシーン管理に必要なすべてのパラメータパレットのようなものです。コントロールする必要のあるすべてのパラメータが指先に集まっているので、レンダーセットアップダイアログやオブジェクトのプロパティダイアログを開く必要はありません。
従来の3ds Maxの選択セットから、RenderStack独自のレイヤーセットまで、オブジェクトのグループを動的に定義し、統一された方法で利用するための様々な方法を提供しています。
与えられたオブジェクトセットを様々な方法(マットオブジェクト、ライティング除外など)で複数回のパスで使用し、それらが同期していることを確認する必要がありますか? renderStackの様々なオブジェクトセットを使用すると、これらの作業が簡単になり、エラーが発生しなくなります。
パイプラインの集中管理が必要ですか?パスの自動設定?renderStacksは、アーティストからの機能アクセスをオーバーライドまたはブロックするための様々なパイプラインフックを提供します。必要な数だけコントロールを追加することができます。さらに多くのコントロールが必要な場合は、お問い合わせください。それとも、スクリプトでパスを自動生成したいですか?renderStacksのすべての機能にMaxscriptでアクセスすることができます。
renderStacks は、ユーザー間でセットアップデータを簡単に保存して共有する方法も提供しています。アーティスト間で選択したパスを保存してマージすることもできます。
もう出力パスを入力する必要はありません。様々な組み込みトークンでルールを設定するだけです。おそらくそれ以上のものは必要ないでしょう。しかし、本当に個性的な花を咲かせたいのであれば、独自のトークンを作ることもできます。出力名を一度設定して、起動時のRenderStacksファイルに保存するだけです。これで、出力ダイアログを開く必要がなくなります。
レンダラやプラグインを選択して、RenderStacks がどんな素晴らしい新しいオプションをサポートするかを待つ必要はありません。その機能がMaxscriptに公開されている限り、RenderStacksは自動的にそれらの機能を確認し、使用できるようにします。
現在、VRay, Arnold, Corona, Redshift, FStorm, ART, Scanlineを完全にサポートしています。しかし、ほとんどの機能はどのレンダラーでも動作します。
renderStacksは必要なものをすべてmaxシーンファイルに保存します。外部ファイルを扱う必要はありません。また、RenderStacksのデータはパスのために実行する必要がある命令のシーケンスに過ぎません。レンダーノードに何もインストールする必要はありません。シーンファイルをクライアントやサードパーティのレンダーファームに送りたいですか?パスを有効にしてファイルを保存するだけです。クライアント側やレンダーファームでは何も必要ありません。
私たちが出会った3dsMaxアーティストのほとんどは、スクリプトを知らないし、やりたくもありません。ユーザーがスクリプトを必要とするなら、なぜ renderStacks が必要なのでしょうか? 自分たちで作ればいいのに。私たちは、アーティストは必要なことを何でもできるようにすべきだと確信しています。私たちは、UIを通してすべてのものにアクセスできるようにするために多くの努力をしてきました。
最後に、renderStacksは単なるレンダーパスマネージャではありません。単にレンダリングを提出するだけではありません。流体シミュレーションのために様々なシミュレーション設定の組み合わせを実験する必要がありますか?変更した内容を覚えるためにメモを取る必要はありません。シミュレーションパラメータを設定し、RenderStacksパスを作成するだけです。 シミュレーションパラメータはRenderStacksパスと一緒に保存されます。シミュレーションを実行して、別のシミュレーションを試したい場合は、シミュレーションパラメータを変更して、別のRenderStacksパスを作成し、シミュレーションを再度実行してください。 最初のシミュレーションの結果が良い場合は、最初のRenderStacksパスを有効にしてください。 モデリング中にシーン内のすべてのTurboSmoothをオン/オフするにはどうしたらいいでしょうか?"モデル "パスと "プレビュー "パスを作成し、RenderStacksですべてのTurboSmoothをオン/オフすることができます。 基本的には renderStacks を使って、異なるパラメータの状態を切り替えることができます。
これはv1のためだけのもので、今後もっと多くのpmodifierが登場します。
modoのモデリングスクリプト集です。ビューポートの見たままの方向でポリゴンの高さをそろえる機能など、感覚的に使えるスクリプトが便利そうです。
http://modogroup.jp/tipsblog/script_thirdparty/mihi_tools/
http://modoosaka.blogspot.com/2017/02/blog-post_9.html
機能紹介ビデオ
modoに基盤地図情報ビューアから書き出したシェープファイルを読み込むインポーターが公開されてます。スクリプトはYouTubeの説明からダウンロードすることができます。
基盤地図情報ビューアから書き出したシェープファイルをMODOへ読み込むインポーターです。
一応その他のシェープファイルも読み込めますが、 ポリラインとポリゴンのみのサポートです。
modoからobjのシーケンスをエクスポートキットが公開されています。After EffectsのElement 3Dでの使用を想定したもののようです。MeshOps、Deformer、Mesh Fusionをサポート。価格は無料ですが、コーヒーがお好きなようです。
https://gumroad.com/l/objExp
以前公開されていた同様のスクリプトに比べると機能の対応範囲が広そう。
modoのスクリプトやプラグインのインストール方法について書いてみたいと思います。
modoは他の3Dソフトと同様にスクリプトやプラグインで機能拡張することができます。FoundryのフォーラムやMODO Japan Group、GitHubでは便利なフリースクリプトやプラグインが公開されています。
modoのスクリプトやプラグインにはいくつかの配布形態があります。
一番多いのがスクリプトファイル単体で配布されてる場合です。.pyや.plファイルだけ公開されてる場合がそれです。
次に多いのが「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をインストールするときは基本的にインストールマニュアルに従うとよいです。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によって動作がさまざまです。
余談ですが、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つです。
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
私はスクリプトは全く書けないので、スクリプト書ける人は凄いなと尊敬しながらフリースクリプトを使わせていただいてます。
選択した頂点、エッジ、ポリゴンの中心に「センター」を移動するスクリプト「Move Center to Selected Elements」が公開されました。
今まではスナップやマクロで作業平面の中心にセンターを移動させていましたが、このスクリプトを使えば手軽にセンター位置を設定できます。標準機能で入れて欲しいですね。
http://modogroup.jp/tipsblog/scripts/move-center-to-selected-elements/
選択中の複数アイテムに対して、チャンネルをリンクするスクリプトが公開されてました。スクリプトとかまったく書けないですが、この行数なら改造して何かに使えそうかも。。。
https://community.foundry.com/discuss/post/1152345
#!/usr/bin/env python
import modo
chan_out = 'visible'
chan_in = 'render'def scene():
return modo.scene.current()def items_selected():
return [i for i in scene().selected]work_space = scene().groups[0]
for item in items_selected():
item.channel(chan_out) >> item.channel(chan_in)
work_space.addItems(modo.Item(item.id))
modoのワイヤーフレーム色にランダムに色を設定するスクリプトが公開されています。バウンディングボックススレッショルドと組み合わせるとMaxっぽくて便利かもしれません。
https://community.foundry.com/discuss/post/1151471
スクリプトはファイルに保存してUIのボタンに割り当てるか、スクリプトエディターから実行することができます。
import modo, random
def random01():
# Convert random 0-1 into scring
return (str(random.random())+" ")def setColor(item):
try:
# add draw package
lx.eval("!item.draw mode:add type:locator item:%s" % item.id)
# Set color to user
lx.eval("item.channel name:locator$wireOptions value:user item:%s" % item.id)
except RuntimeError:
# Item alread has package
pass
# Randomize color
color = ("{"+random01()+random01()+random01()+"}")
# Set Color
lx.eval("item.channel name:locator$wireColor value:%s item:%s" % (color, item.id))# Get the active scene
scene = modo.Scene()
# Get selected objects of type mesh
items = scene.selectedByType(lx.symbol.sITYPE_MESH)
packAdded = False
# if selection contains meshes
if items:
for item in items:
print item
setColor(item)
else: # Otherwise Do all
for item in scene.iterItemsFast(lx.symbol.sITYPE_MESH):
setColor(item)
print item
変形アニメーションの選択した頂点位置にロケータを作成するスクリプトが公開されています。AfterEffectsや他の3Dソフトに頂点位置転送するとき便利に使えそう。
http://modogroup.jp/tipsblog/scripts/mjg_make_pntlocators/
ファイル出力を便利にするスクリプト Render Output Manager V2.0 がリリースされました。価格はインディー版$29、スタジオ版$99。
https://gumroad.com/l/renderManager2
2018年5月20日まで40%になるクーポンコードが配布されています。
https://community.foundry.com/discuss/post/1128537
メッシュのトポロジの再構成を高速化するように設計されたスクリプト集。価格は$8。
http://pushingpoints.com/v2/pushing-points-topology-scripts-for-modo/
Pythonを使用してカスタムメッシュを生成するmodo用のプラグインがリリースされました。
最近のノードベースの3Dソフトには、大抵Pythonノードがある気がします。私はスクリプト書けませんが、本当は標準機能であった方がよい系の機能な気がします。
https://gumroad.com/l/pyMop
カスタムメッシュ操作を簡単に作成することが、今までにないほど簡単です!
私は3K行以上のコードを書いているので、ユーザーは多くの信じられないことをするために平均で〜10行のコードを書くだけで済みます。または、コードを忘れてサンプルを使用してください!
このプラグインはテクニカルとアート両方のためのものです。このmeshOpのメリットはコードを知る必要はありません。ノードにプリロードされ、新しいノードが頻繁に出てくる例がたくさんあります。
PyMopの他のユーザに譲渡/売却するための例をエクスポートすることができます。このプロセスは、ワンクリックでネイティブの.lpk形式を使用してサンプルをパッケージ化するために合理化されています。
これによりユーザがmodoに直接ドラッグ&ドロップしてPyMop Editorにサンプルを追加することができます。exampleフォルダにpngを追加するだけでカスタムアイコンを追加することもできます。
MODOの手続き型モデリングシステムの不足している部分を埋めるのに役立つ例を作成するので、キットはますます役立ちます。
あなたの好みに合わせて微調整したり、深く掘り下げてこのプラグインのあらゆる部分がどのように作成されたかを学んでください!
*このノードはTDSDKではなくpython apiを使用することに注意してください。しかしTDSDKの使用を試してみることを止めません。そうする前にあなたのシーンをバックアップしてください。
他のソフトウェアの開発と同様、しばらく毎回クラッシュします。誤って9の代わりに8つの値を持つ行列を設定するのと同じように。いくつかの例ではTDSDKを使用して行列を扱います。 これらはほとんどうまくいき、奨励されています。