【Maya】HumanIKのリターゲットをスクリプトから実行する際のハマりどころ

HumanIKを使ったリターゲットをわざわざ手動でぽちぽちやるのが面倒なのでいざ自動化!
と思ったら一箇所詰まったので覚書です。

「scripts/others/hikGlobalUtils.mel」あたりにHumanIK関連のスクリプトがあり、どうやらSourceの指定は「hikSetCurrentSourceFromCharacter」というコマンドでできそうなんですが、実行しても微動だにしません。

f:id:tm8r:20181016100037p:plain

Sourceは枠で囲った部分で、ようはoptionMenuをスクリプトで変えちゃえば動きそうです。
というわけでちょっと調べてみると、フォーラムに同じような内容の投稿がありました。
forums.autodesk.com

というわけで以下のようにしてとりあえず解決。

from maya import cmds
from maya import mel

_HUMAN_IK_SOURCE_MENU = "hikSourceList"
_HUMAN_IK_SOURCE_MENU_OPTION = _HUMAN_IK_SOURCE_MENU + "|OptionMenu"

def retarget(source, target):
    u"""リターゲットを実行

    Args:
        source (unicode): ソースのキャラクター
        target (unicode): リターゲット先のキャラクター
    """
    mel.eval('hikSetCurrentCharacter("{0}")'.format(target))

    # hikSetCurrentSourceFromCharacterが動作しないので、optionMenuのアップデートで実現する
    # https://forums.autodesk.com/t5/maya-animation-and-rigging/pythonic-mel-way-to-retarget-hik/td-p/7609798
    items = cmds.optionMenuGrp(_HUMAN_IK_SOURCE_MENU, q=True, ill=True)
    for i in xrange(0, len(items)):
        label = cmds.menuItem(items[i], q=True, l=True)

        # 空白が頭に入っているので除去
        if label.lstrip() == source:
            cmds.optionMenu(_HUMAN_IK_SOURCE_MENU_OPTION, e=True, sl=i + 1)
            mel.eval('hikUpdateCurrentSourceFromUI()')
            mel.eval('hikUpdateContextualUI()')
            mel.eval('hikControlRigSelectionChangedCallback')
            break

つらみ。

【Maya】MacでMaya2016以降の起動と終了を早くする

Maya2017以降をMacで使っていると、通常シングルサインオン用の「AdSSO-v2」というプロセスが起動します。
(Maya2016だとAdSSO)

自分の環境だと一度Mayaを終了すると、どうやらこのプロセスが邪魔をしてMayaの起動が終わらなかったり、終了しなかったりということが頻繁に起こっていました。

続きを読む

【Unity】FBXをアニメーションクリップ化せずにカスタムプロパティを差し替える

  • はじめに
  • OnPostprocessGameObjectWithAnimatedUserPropertiesを使う
  • OnPostprocessAnimationを使う
  • まとめ

はじめに

先日こんな記事を書きました。
tm8r.hateblo.jp

こちらではFBXからアニメーションクリップを取り出してカスタムプロパティをAnimatorControllerのプロパティから別のプロパティに差し替える、ということをしていました。
が、アニメーションクリップを取り出さずにFBXのままやりたい!ということもあると思うので、改めて調査してみました。

尚、利用環境はUnity2018.1.4f1です。

続きを読む

【Maya】ShaderFXをスクリプトから操作する

ShaderFXで作成されたMaterialのパラメーターを差し替えるツールを作る機会があったので、その際に利用したShaderFXのコマンドに関してまとめてみます。

  • 自動的にShaderFXプラグインを読み込む
  • ShaderFXコマンドのリファレンスを表示
  • ShaderFXシェーダーを作成
  • 既存のグラフを読み込み
  • プロパティを書き換える
  • 作成したShaderFXのMaterialを他のMaterialと差し替える
  • おわり
続きを読む

【Maya】Mayaでsubprocessを使う(クロスプラットフォーム対応)

より正確に言うとsubprocessをGUIアプリケーションからクロスプラットフォームで使う方法です。
とはいえ実際のところMacだと特に困らないので、以下の内容はWindows向けの対応方法になります。

  • 「ハンドルが無効です」エラーに対応する
  • 実行の度にウィンドウが出るのを回避する
  • おわり
続きを読む

【Maya】Mayaの相対パスの挙動とファイルの実際のパスを取得する方法

Mayaでテクスチャの参照があるシーンを作成時と異なるパスに配置した状態で開く、みたいなことってあると思うんですが、このときプロジェクトがちゃんとセットされていれば相対パスでテクスチャが参照されますよね。
このときの挙動の詳細や、それによって起こる問題の解決法を書いてみます。

  • Mayaの相対パスの挙動
  • テクスチャのパスを参照してみる
    • テクスチャのパス参照をするコードの説明
  • おまけ
  • おわり
続きを読む

マンガでわかるMELスクリプト連載開始!

melを説明した書籍は数あれど、プログラミングって敷居が高そう…文章読むの大変…という方々のために…

「マンガでわかるMELスクリプト」の連載を始めます🎉

シンプルなスクリプトから始めて、ちょっとした便利スクリプトの作成、日々の単純作業の自動化、独自のウィンドウの作成までをマンガとサンプルスクリプトで解説します!

また、さらに発展したツール作成を学びたい方のために、「マンガでわかるMayaPythonプログラミング」も連載予定です。
こちらではPython自体の解説はもちろん、PySideを用いたウィンドウの作成までを解説します。

4月より不定期連載開始ということがまことしやかに囁かれているとか、囁かれていないとか、作者の妄想だとか、様々な憶測が飛び交っておりますが、信じるかどうかは、あなた次第です!(どーん)

4/2追記:
エイプリルフールの嘘になるかどうかは僕の頑張り次第になります_(:3 」∠)_

スポンサーリンク