こんにちわ!
兼業クリエイターのみっつです。
今回はMaya2022で、ポリゴンが表示されないバグの対処法を書いていきます。
【結論】バグを解決するPythonスクリプト
# maya2022でポリゴンが出ないときに使うコード
from maya import cmds as cmds
cmds.lockNode('initialShadingGroup', lock = False, lockUnpublished = False)
# ==== EOF ====
今回はこちらの『ポリゴンを作成しても表示されない!?そんな時はこれで解決するかも』という記事を参考にさせて頂きました!
上記の記事に書いてあったスクリプトを抜粋すると、
# 参考サイトに載ってたコード
import pymel.core as pm
pm.lockNode( 'initialShadingGroup', l=False, lu=False )
# ==== EOF ====
このように書かれてありました。
ほう?わざわざpymelで書く必要ある?
とか思ったので、ついでに『lockNode』コマンドについて調査してみました。
使用したPythonコマンドとフラグ【lockNode】
■Pythonコマンド
- lockNode
■フラグ
- lock
- lockUnpublished
今回使用したPythonコマンドとそのフラグは上記の通りです。
解決用のスクリプトを見る限り、Maya2022でポリゴンが表示されないバグは、『initialShadingGroup』というノードがロックされてるのが原因らしいです。
なので、解決するために使ったフラグを調査してみました。
フラグの説明
■lockフラグ
ノードの新しいロック状態を指定します。既定は true です。
■lockUnpublished
lock フラグと一緒に使用します。
コンテナ上では、コンテナのメンバー上にあるすべてのパブリッシュ解除アトリビュートをロックまたはロック解除します。
コンテナ以外では、指定したノード上にあるパブリッシュ解除アトリビュートをロックまたはロック解除します。
『lockUnpublished』に関しては、よく分からなかったですが、、、
まぁ何となく、ノードをロックしてるんだな~くらいの認識でいいと思います。
公式ドキュメントによるPythonの使用例
とりあえず公式ドキュメントに書いてある使用例を見ながら、lockNodeコマンドを実行してみます。
import maya.cmds as cmds
# スフィア作ってロックした後、デリートしてみる
cmds.sphere( n='sphere1' )
cmds.lockNode( 'sphere1' )
cmds.delete( 'sphere1' )
# エラー:ノードがロックされてるからエラーになる
# ==== EOF ====
import maya.cmds as cmds
# ロックを解除してからデリートしてみる
cmds.lockNode( 'sphere1', lock=False )
cmds.delete( 'sphere1' )
# ==== EOF ====
Pythonスクリプトの使用例を見た感じ、ノード名を指定して、lockをする/しない、を決定してるようですね。
そして、ノードがロックされてたら、デリートは出来ないっぽいです。
ポリゴンが表示されないシーンでlockNodeをクエリーしてみた
今回使用する、『lock』と『lockUnpublished』フラグにクエリーを立てて戻り値を見てみました。
cmds.lockNode('initialShadingGroup',q=1, lock=1)
# 結果: [False] #
cmds.lockNode('initialShadingGroup',q=1, lockUnpublished=1)
# 結果: [True] #
# ==== EOF ====
lockフラグの場合はFalseが返ってきて、lockUnpublishedの場合はTrueが返ってきました。
よく分からないですが、『lockUnpublished』が悪さをしてる感じですね。
つまり、
lockフラグだけFalseにするのではなく、lockUnpublishedフラグも一緒にFalseを渡してあげないとダメって事ですね。
# maya2022でポリゴンが出ないときに使うコード
from maya import cmds as cmds
cmds.lockNode('initialShadingGroup', lock = False, lockUnpublished = False)
# ==== EOF ====
無事にポリゴンが表示されました!!
結論:Maya2022でポリゴンが表示されないときはlockNodeコマンドを使ってみよう
# maya2022でポリゴンが出ないときに使うコード
from maya import cmds as cmds
cmds.lockNode('initialShadingGroup', lock = False, lockUnpublished = False)
# ==== EOF ====
今回は、Maya2022でポリゴンが表示されないバグの解決方法を書いていきました。
参考にしたサイトではpymelが使われてましたが、普通にcmdsモジュールでも対応できましたね。
Mayaで作業していて、ポリゴンが表示されないな~
色々設定見直してみたが、どれもアカンわ~
ってなった際は、上記のPythonスクリプトを試してみてください!
それでは!
みっつでした。