【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. 【Maya】超初心者向けMELコマンドのオブジェクト名の指定

    2024-04-30

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

    2023-07-25

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

    2023-05-30

  4. 【Photoshop】別名で保存がワンクリックツール
    ShotSave ver1.0をBoothで頒布

    2023-03-29

関連記事

  1. 【Maya】Maya2017.3以降のUVエディタでツールを再現

    2020-11-10

  2. 【Maya】MELでコンポーネント選択状態の選択解除

    2019-06-25

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

    2022-06-28

  4. 【Maya】MELでシェルフアイコンをクリックで変更してみた

    2019-06-11

スキルレーダーチャート

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

ABOUT

TECH COYOTE​

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

COYOTE 3DCG STUDIO

C&R Creative Studios

RECENT TWEET

ページ上部へ戻る