【Maya】AutodeskDay2024 Additional Time

Additional Time の長い戦国武将と言えば、武田信玄の父・信虎。48歳で追放され、その後息子の信玄よりも長生きしたそうです。
どうも、クリーク・アンド・リバー社 COYOTE 3DCG STUDIO テクニカルチーム 戦国大好き人間の中林です。
この記事では、9月20日(金)に開催されたAutodeskDay2024で僕が話しきれなかった追加情報を共有します。
AutodeskDay2024

Snap Near Vertexの紹介

COYOTE TECHNICAL ART TEAMがBoothにて頒布中のツール
Booth Snap Near Vertex

・使い方
1・移動先の頂点選択して登録
2・移動したい頂点を選択
3・実行ボタンで登録した近くの頂点に移動
他のモデルの頂点と選択した頂点がずれているときに、ピッタリ調整できます!!

語り切れた部分の弊社ブログ紹介

・MELからPythonへのコマンド変更方法
【Maya】超初心者向け、MELからPythonへのコマンド変更方法

・RunTimeCommandをcmdsで使える!!
【Maya】cmdsから実行できる!? 結構便利なRuntimeCommand

 追加情報1・Mayaのグローバル変数を使う

MELからPythonに移行した際の大きな失敗は、Python のグローバル変数を使ったため、ツールを開き直すたびに target の登録がリセットされる問題が発生したことです。

ツールを開き直すと target の情報がリセットされてしまい、どこまで情報を保持すべきか悩みました。
少なくとも UI を開き直した際には情報を覚えていてほしいのですが、Maya を再起動したときにはリセットしてほしい。
微妙に optionVar で保持するほどの内容ではありません。

では、MEL 版ではどうだったかというと、MEL のグローバル変数は Maya を閉じるまで維持されていたため、この問題はありませんでした。
そこで、Python から Maya のグローバル変数を使えばよいのではと考えました。
以下にその方法を紹介します。

import maya.mel as mel

# MELのグローバル変数の代入
mel.eval('global string $gTargetVtxList;')
selectList = cmds.ls(sl = True)
mel.eval('$gTargetVtxList = "{}"'.format(selectList))

# MELのグローバル変数の取得
mel.eval('global string $gTargetVtxList;')
targetVtxList = mel.eval('$gTargetVtxList = $gTargetVtxList')

mel.eval を使うことで、MEL のグローバル変数を操作できます。
代入は簡単ですが、取得は少し工夫が必要でMELで代入した時の情報を取得します。
これを利用して、UI を閉じても target の情報を保持できるようになりました。  

追加情報2・gキーで繰り返す

g キーは「編集 > 繰り返し (Edit > Repeat)」のショートカットキーです。
Mayaのユーザーの中には、この機能を頻繁に使う人も多いです。
実はこの機能、自作のMELツールでも有効にする方法があります。


参考動画では最初の頂点は 【Done】 ボタンで移動していますが、その後は g キーで移動しています。
繰り返し操作を確認したい場合に便利です。

まずは MEL での方法を紹介します。

global proc sample(){
    print('sample');
    repeatLast -ac "sample()";

acフラグの後ろに関数名を文字列で指定すると、g キーで繰り返すことができます。
このコマンドはスクリプトリファレンスには載っていない、知る人ぞ知る機能です。
これをPythonで使うには少し癖があり、acフラグの中身は MEL スクリプトでないといけません。

def sample():
    print('sample')
    try:
        cmds.repeatLast(ac = 'python("ファイル名.sample()");')
    except:
        pass

まず、MEL で Python を呼び出す python コマンドを使い、関数名を指定します。
import でファイルを読み込んでいる場合は、ファイル名と関数名を指定してパスを通す必要があります。

・pythonコマンドの説明
https://help.autodesk.com/cloudhelp/2025/JPN/Maya-Tech-Docs/Commands/python.html
これも、ある意味でMELにしかないコマンドですね。

そして、repeatLastコマンドでは、初回起動時に確実にエラーが発生します。
そのため、try文を使ってエラーを回避する必要があります。
Python での実装例が少ないコマンドの一つとして紹介しました。

Additional Time終了

この追加情報は、講演時間内で話すには難しい内容で、初心者向けでもないため、ブログで紹介することにしました。
追加機能がなくてもツールは成立しますが、もう半歩使いやすくするための工夫です。
Autodesk Day 2024 の講演を含め、皆様の参考になれば幸いです。

nakabayashi nobukazu

MayaからPhotoshop、Unity、UEなどアーティストが困っていればツール作成にチャレンジしてお助け。
ただ今、Substance Painterに挑戦中です。
やーってやるぜ!!

投稿者記事

  1. 【Maya】意外と違う!?
    キャラと背景でのデータ作法の違い!!
    第1回

    2024-07-02

  2. 【Maya】超初心者向けMELコマンドのオブジェクト名の指定

    2024-04-30

  3. 【Photoshop】ShotSave ver2.0で
    アルファチャンネルにコピーしてみた

    2023-07-25

  4. 【TANight】無料配布Maya便利ツール徹底紹介
    資料公開

    2023-05-30

関連記事

  1. 【Maya】意外と違う!?
    キャラと背景でのデータ作法の違い!!
    第1回

    2024-07-02

  2. 【Maya】MELのスクリプトに作業単位で変更しない値がある

    2019-07-09

  3. 【Maya】日本語optionVarはTAを恐怖のドン底に叩き込んだ!

    2019-10-15

  4. 【Maya】表示されないMELコマンドを知る方法:初心者編

    2019-11-26

スキルレーダーチャート

テクニカルアーティスト専用
スキルレーダーチャート
どなたでも無料でご利用いただけます。

ABOUT

TECH COYOTE​

テクニカルアーティストの為のまとめサイトです。​
本サイトでは、ツール開発、業務効率化等について情報発信をしていきます。

COYOTE 3DCG STUDIO

C&R Creative Studios

難易度別

RECENT TWEET

ページ上部へ戻る