Mayaのmelスクリプトに関するいろいろ

自分でmelスクリプトを書いてて気づいたこと、困ったこと、解決法や成果についてをまとめました。備忘録的な意味合いが強く、あまり高度な内容でもないです。せいぜい初級~中級向け程度? Twitterモーメントでまとめていましたが、編集機能が停止された為こちらに移行します。 業務のモノが映りこむ可能性がある為、画像での説明がほぼ無いです。
1
夏馬 @natsuma_e

melでウインドウを作る時、最近はframeLayoutで折りたたむUIを使うことが多いのだけど… 何かのLayoutに収めず、手抜きでframeLayoutの直下に非表示UI(変動するUIの個数を保管しておくintField等)を置くとframeLayoutを「畳む→開く」した時に強制表示されてしまうことを知った

2022-01-21 18:44:32
夏馬 @natsuma_e

開発中のリグシステム。「操作したいリグを直感的に選択できるUI」の構築をどうするか?がネックだったけど。 Mayaのスプレッドシート機能をこないだ触ってて。 あれにフィルタした結果を並べて選ばせりゃいいじゃん、というところにたどり着いた。あれなら項目の複数選択も、表示数の可変も自由だ。

2021-07-10 18:51:19
夏馬 @natsuma_e

社内製リグシステムの選択UI、大体完成。 ふと降りてきた ・スクリプトテーブルにリグ名並べる ・セル選択したら対象のリグを掴む というアイデアを実行してみました。 表示対象のフィルタリングも簡易に出来る。 …リギングの際、「部位」「左右」「表示名」を埋め込む作業が必要だけど。 pic.twitter.com/grHtmPTFwL

2021-08-12 12:05:39
拡大

制作物1:チェーン状の骨をパラメータで揺らす

夏馬 @natsuma_e

まだ試作段階だけど、こんなリグを作ってみた。非物理。 久々にsinカーブをExpression上であれこれして、脳が溶けそうになった… ハンドル一個とカスタムアトリビュートいっぱいで、あれこれ触らずにざっくり揺れる動きを作るのが目的。 社内向けツールなので公開する予定は無いです pic.twitter.com/guiO8q6kBZ

2021-03-12 14:41:38

制作物2:複数のシーンファイルを指定してバッチ処理する機能

1・ゲームエクスポータの記述を参照して、指定したsetsを使用して出力するFBXエクスポータ

夏馬 @natsuma_e

ついに ・ゲームエクスポータと同じfbxの仕様で、複数のMayaファイルに対して自動でバッチ出力 ・リファレンスファイルのネームスペースを指定しておき、出力前にマージしてから出力実行 の機能作成に手をつける時が来た。 fbxの出力方法、指定フォルダのファイル一覧取得は出来た

2022-01-13 19:24:11
夏馬 @natsuma_e

概要は出来たので、まずはUI設計を ※明日から頑張る pic.twitter.com/0oQbiKUHK1

2022-01-13 21:51:20
拡大
夏馬 @natsuma_e

fbxエクスポートのバッチ処理機能作成進捗。 ・フォルダを指定→その中のmayaファイルを検索→リスト表示→対象ファイルを選択する、までが出来るUI ・モーションファイルはモデル・リグのファイルをリファレンスしてるので、出力処理前にマージさせたいネームスペースを指定するUI ここまでは完了

2022-01-20 00:27:47
夏馬 @natsuma_e

あとは ・「出力ファイル名を識別するための文字列」の指定、それに対応する選択セットとの連携を指定するUI ・出力前に必要な操作がある場合の指定UI ・ゲームエクスポータの記述を読み取って、必要なクリップを出力するバッチ処理 こんなとこかな。先は長い…

2022-01-20 00:27:47
夏馬 @natsuma_e

Mayaのゲームエクスポータ、色々と便利なんだけど。 どうやら ・リファレンス(標準機能)を使うこと、リファレンスをマージすること を想定していないようで、保存した出力設定がリファレンス先の設定と名前が衝突し、結果 【開いた瞬間に設定が吹き飛ばされる】 という挙動になることがある…

2022-02-04 19:55:13
夏馬 @natsuma_e

ゲームエクスポータの記録情報(=『gameExporterPreset*』ノードのAttr)を基にfbxをバッチ出力する機能を作ってたんだけど、その過程で得た知見。 衝突しないようにする工夫と知識がユーザー側に求められるorz

2022-02-04 19:55:13
夏馬 @natsuma_e

…Mayaの日本語対応の時にも思ったけど、ちょいちょい乱暴な手法で機能対応することがあるのは困るね… (※enとjaで設定ファイルを分けた結果、日本語でだけバグる挙動があった) まあコードや挙動ルールがぐっちゃぐちゃで統一し難いのだろうという想像も出来るし同情もするけど

2022-02-04 19:55:13
夏馬 @natsuma_e

書くの忘れてた。 1・Mayaファイル指定(複数可) 2・(必要なら)削除するネームスペースを指定 3・出力ファイルの命名規則と使用する選択セットを紐付け 4・(必要なら)出力直前に変更するパラメータを指定 …を指定して、各ファイルのクリップ情報を基にfbx出力する機能は完成してる

2022-02-04 20:22:52
夏馬 @natsuma_e

出来たのは先週だけど、実際に運用テスト出来たのは今週。 やってみたら案の定ヘンな挙動があって、クリップ名を格納した配列をクリアしなきゃいけないのを忘れてた。やはり運用テストは大事だ…

2022-02-04 20:22:53
夏馬 @natsuma_e

個人的ポイントは「複数ファイルに対するバッチ処理が出来るようになった」こと。 今回はfbxの出力に限定した機能だけど、「複数ファイルに一括して同じ修正をカマす」場合に自動処理出来る手掛かりが出来たわけで、これは発展させたい

2022-02-04 20:22:53

2・記述したmelスクリプトを各シーンファイルに適用するバッチ機能

夏馬 @natsuma_e

テンプレートデータ作成時にうっかりゴミノードを残してしまったせいで 「どのファイルを開いても『〇〇っていうテクスチャが無いぞ』と怒られる」 という事態が大量のファイルで起きてることに気づき、仕方なく「複数のMayaファイルをバッチ修正するツール」に着手する羽目になる

2022-05-23 18:00:53
夏馬 @natsuma_e

よっしゃ出来た! 複数ファイルのバッチ処理は既に作ってたものがある分、改造で済むので話が早い。 但し「各ファイルに対して一律に修正したい内容」をmelで記述する手法なので、あまり優しくはない…(苦笑

2022-05-23 20:19:24

3・使用済みブレンドシェイプを調査するバッチ機能

夏馬 @natsuma_e

複数のモーションファイルに跨がって「どのファイルで、どの表情のブレンドシェイプが使われているか」を調べる必要があり、今後も何度か調べる必要がありそうなことから、バッチ処理を作ることに。 前に作ったfbx出力バッチを下敷きにして、都合1日程度の作業で形になった。いやー楽に済んだわ。

2022-03-16 23:06:53
夏馬 @natsuma_e

課題は「一度も使われてないもの」の選り分けをどうするか?だけど、スプレッドシートに持ち込めるとこまでは出来てるので、マクロでなんとかならんか明日プログラマに聞いてみよう。

2022-03-16 23:06:54
夏馬 @natsuma_e

プログラマ「調べた結果に『使ってないので0を出力する』もいれるようにして、『横軸:調査した情報、縦軸:調査したファイル』のマトリックスにしちゃえばいいんじゃない?」 ワイ「あッ」 直すわ。

2022-03-17 12:05:32
夏馬 @natsuma_e

出来たぞ!! ※Maya上で収集した情報をテキスト化してテキストフィールドに表示し、そのテキストをスプレッドシートに(手動で)貼り付けるとこうなる pic.twitter.com/qT4ZyEkxFI

2022-03-17 13:46:20
拡大