search
LoginSignup
2

More than 1 year has passed since last update.

posted at

updated at

Maya 保存できないノードを作る

この記事はTakumi Akashiro ひとり Advent Calendar 2020の8日目の記事です。

今日も小粒です。小粒といえば納豆ですね。久しぶりに水戸1に旅行に行って小粒納豆を買いたい。

前置き

保存したくない一時ノードを作ったことはありますか?
自分はあったような、なかったような気もします。

もう1年以上程度前に調べたことを出すので、同期の曖昧さはお許しください。

やってみる

image.png

このシーンで以下を実行して保存してみます。


from maya import cmds

cmds.toggle("pCubeShape2", doNotWrite=True)

そして開きなおすと……

image.png

pCubeShape2が消え、3dViewにあるCubeも一つになりました。
成功ですね!

締め

いやいや、最初はこんなに短くなる予定じゃなかったんですよ!

「OpenMaya使わないといけないんですねー面倒ですねー」みたいなことを言って、使えないニッチな知識を披露する予定だったんですって!本当です!
でも書いてるときにOpenMayaのどのクラスにdonotwriteをセットするやつあるんだっけ?って悩んで、「Maya donotwrite」で検索したら、toggleのMELコマンドリファレンスが出るじゃないですか?
cmdsで試したら普通に保存されないノードができるじゃないですか。
変に難しいやりかたでやるより、cmdsで出来る方が大体のTAは喜ぶじゃないですか?
結果一行で済む記事が出来上がったんであって、私は悪く…いや悪いですね。主に頭が。

...と思っていました。

どちらかと言えば、ポリゴン形状を作るノードのpolyCube2の方を消したいんですよね。
ちょっと試しにやってみましょう。

from maya import cmds

cmds.toggle("polyCube2", doNotWrite=True)

image.png

消えない……だと…?!

toggleコマンドのヘルプを読んでみましょう!

toggle コマンドは、オブジェクトが持つさまざまな オブジェクト コンポーネントの表示と非表示を切り替えます。
たとえば、リストにある NURBS カーブやサーフェスに対して、 CV およびエディット ポイントの表示と非表示を 切り替えることができます。

オブジェクトコンポーネント……?
pCubeShapeはオブジェクトですし、形状なのでコンポーネントも持ってますよね。
PolyCubeはオブジェクトコンポーネントに含まれないので操作不可能なのか……

というわけでOpenMayaを使いましょう!


from maya.api import OpenMaya

def set_flag_of_dont_write(nodename):
    sel = OpenMaya.MSelectionList()
    sel.add(nodename)


    if sel.isEmpty():
        return

    for i in range(sel.length()):
        mobj = sel.getDependNode(i)
        mfn = OpenMaya.MFnDependencyNode(mobj)
        mfn.setDoNotWrite(True)



set_flag_of_dont_write("polyCube2")

image.png

無事(?)、polyCube2(と3dView上のCubeが)消えましたね。

本当の締め

今回はpolyCubeを消したせいで、Shapeの中の形状データまで失ってしまいましたが、
確か探ってた時は、ツール用に一時的なノードを作りたかったんだと思います。

それ以外にもノードエディタ使うとできてしまう、MayaNodeEditorSavedTabsInfoとかをシーンに保存しないためにつかえるんじゃないですかね。

……どうしてあのノードはデフォルトでdoNotWriteフラグ立ってないんだ…
「パネルとレイアウトを保存」をオフにしても当たり前のように保存されるし……

思えば、おそらく一年前の私も同じことを検証した気がします。
……まあそういう事もあるよね!


  1. アンコウが食べたいので大洗でも可。というか冷静になると大洗の方がいいな。アンキモ食べたい! 

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2