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

クリーク・アンド・リバー社 COYOTE CG STUDIO テクニカルチームの好きな武将は豊臣秀吉、戦国大好き人間の中林です。

作業単位で起きた問題
弊社では多くのクライアントからデータの発注を受けるため、同じMayaでも様々な環境設定の差があります。
今回はそんな中で作業単位(Working Units)のリニア(Linear)の違いで発生した問題を紹介します。

そもそもの事の起こりは僕がアーティストから選択メッシュモデルのミラーモデルを自動で作成ツールを頼まれて作ったところからです。
原点から少し離れた場所にあるメッシュモデルをミラー反転させたミラーモデルが自分のMayaでは想定した場所に作られるのだけど、アーティストのMayaでは遥か遠くにミラーモデルが作られてました。

原因と問題部分
結論からいうと、原因はクライアント仕様の関係でアーティストのリニアはメートル、僕のリニアは初期状態のセンチメートルでした。
なぜ問題が起きたというと、メッシュモデルのミラー反転に関しては「移動マニピュレータ」の座標を基準に反転をしてたので、

manipMoveContext -q -p Move;

このコマンドで座標を入手してましたが、リニアの設定に関係なく常にセンチメートルの値が返ってきます!!
仮にリニアをメートルに設定した場合に3mの位置にあるメッシュモデルを4mの位置にある「移動マニピュレータ」を基準に反転すると、内部的に400と戻ってくるので400m先を基準に反転して結果的に797mの位置にミラーモデルが作成されます。

距離をコンバートして解決
原因さえ分かれば、リニアの数値自体は以下の命令で変更できます。(使う機会もありませんが)計算が面倒なヤードへの変更もしてくれます。

string $cu = currentUnit -q -l; float $変換float値 = convertUnit -fromUnit "cm" -toUnit $cu "string cmの距離";

ただ、convertUnitの距離がstringではないとエラーになるので、floatからstringに変更する必要があります。

作業単位で問題は滅多に起きない
オブジェクトの座標などをgetAttrで取得する分かるけど、こちらはリニアを変更すれば値の桁数が合わせて変更されます。基本的な値は自動的に変更されるので滅多に起きません。
ただ、矛盾してるかもしれませんが、滅多に起きないことがTA作業ではよく起きます。
作業単位を変えて処理がズレる場合は取得する値が変化しているか確認をした方が良いかもしれません。

nakabayashi nobukazu

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

投稿者記事

  1. 意外と違う!?
    キャラと背景でのデータ作法の違い!!
    第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. Boothツール配信はじめました!

    2023-02-22

  2. 【TA Night】日本ゲームのライティングと
    テクニカルアーティスト:アンケート発表編

    2022-09-28

  3. 【PySide】QToolButton ボタン色が反映されない解決法

    2024-05-28

  4. 【Maya】MELのglobal変数とoptionVarでメニューの値を保存

    2019-12-10

スキルレーダーチャート

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

ABOUT

TECH COYOTE​

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

COYOTE 3DCG STUDIO

C&R Creative Studios

難易度別

RECENT TWEET

ページ上部へ戻る