【Maya】Bifrostことはじめ

Maya2019.2からBifrost2.0が使えるようになりました!

Maya のプラグインである Bifrost は、3D アーティストやテクニカルアーティストがすばやく簡単に本格的なエフェクトを作成できる新しいプログラミング環境を提供します。
テクニカルアーティストは、Bifrost グラフ エディタを使用してグラフをカスタマイズ作成し、スタジオでパッケージ化して、その場でアーティストに渡すことができます。
https://area.autodesk.jp/information/bifrost-2-for-maya/

とのことです。テクニカルアーティストなのでやらないといけないですね。しかたないですね。

というわけで簡単にノードを組んだりしてみます。

  • プラグインをロードしてBifrostのグラフエディタを開いてみる
  • ノードを組んでみる
  • 出力結果をShapeに適用する
  • Backdropをつける
  • Compoundにする
  • グラフのデバッグ
  • おわり
続きを読む

【Maya】FBXエクスポートでクリップ分割、クリップ名変更を行う

GameExporterを利用すると以下のような感じでTimeEditorと連携するなどして複数クリップを定義し、FBXのクリップを分割することができます。

f:id:tm8r:20190507213253p:plain

が、GameExporterのUIを使わずにクリップ分割したい、というシーンもあるかと思います。

というわけでやっていきましょう💪

  • クリップを分割してエクスポートする
  • クリップ名変更を行う
  • おわり
続きを読む

【Maya】MayaSquid(v1.0.1)リリース

MayaSquidのv1.0.1をリリースしました!(1週間前に!)
github.com

ツールの説明に関しては以下をご参照下さい。
【Maya】MayaSquid(v1.0.0)リリース - するめとめがね

変更点

f:id:tm8r:20190416203315g:plain
MayaSquid

  • Maya2016以前のバージョンに対応
  • 各パネルで項目選択後にViewPortで即座にショートカットが効かない問題に対応

あわせてREADMEが分かりづらかったので修正してます。
MayaSquid/README.md at master · tm8r/MayaSquid · GitHub

ViewPortでショートカットが効かない件の詳細

別で記事を書いたので、興味がある方はこちらをご参照くださいませ。
tm8r.hateblo.jp

謝辞

ご要望、お問い合わせをくださった潤樹さん、βКさん、ありがとうございました!🙏

【Maya】QtでTreeWidgetなどでノード選択後にViewPortのショートカットが効かない

TreeWidget、ListWidgetなどで項目選択時にそのノードを選択する、って時々やりますよね?よね?

このとき、特に設定をしないと選択直後に「F」キーを押したりしても対象ノードにViewPortがフィットしません。
ので、この場合はMayaのメインウィンドウを一度クリックしたりしてから「F」を押す必要があります。
keyPressEventを乗っ取ったりしてなければCTRL+Fでうまくいったりもしますが、不親切感…😇

というわけで解決していきましょう。

続きを読む

【Maya】スクリプトで頂点カラーをテクスチャからインポートする(+ブレンドシェイプを持つ場合の注意点)

この記事はMaya Advent Calendar 2018の6日目の記事です。

  • 頂点カラーをブレンドシェイプを持つShapeに適用する
  • ターゲットに伝播した頂点カラーを削除する
  • 自動化する
  • おわり

頂点カラーをブレンドシェイプを持つShapeに適用する

こんな感じでスフィアが3つあり、一番左の「pSphere1」が隣の2つのスフィアをターゲットとするブレンドシェイプを持つシーンがありまして。
f:id:tm8r:20181205200126p:plain

この「pSphere1」に対してテクスチャに焼き込んでいた頂点カラーをインポートしたいシーンについて考えます。

普通にGUIで実行する場合はPaint Vertex Toolで以下のボタンを押す形になります。
f:id:tm8r:20181205200430p:plain

これを実行するとpolyColorPerVertexがヒストリに追加されるので、ノンデフォーマーヒストリを削除します。
すると…
f:id:tm8r:20181205200540p:plain

このようにブレンドシェイプのターゲットにも頂点カラーが伝播していまいます。
ファイルサイズも結構増えちゃうのでつらみ。

というわけで不要なターゲットの頂点カラーを消していきましょう。

続きを読む

【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

つらみ。

スポンサーリンク