Maya

【Maya:Python】法線の表示切り替え

法線の転送のために表示切替は非常によく行うのですが、既存のチェックボックスがある場所にたどり着くのが大変だったためpythonで作成しました。
以前の記事で書いたコードの一部を変更するだけでした。

表示切り替え

法線が非表示ならオンに、法線が表示されていたらオフに、トグルになっています。
メッシュ選択した状態で実行してください。
デフォルトだと法線のタイプがフェースになっていますが、頂点タイプで確認したかったため変更するコードも書いています。

# -*- coding: utf-8 -*-
import maya.cmds as cmds

sl_node = cmds.ls(sl=True)
# 法線のタイプを頂点に変更
cmds.setAttr(sl_node[0] + ".normalType", 2)

if cmds.getAttr(sl_node[0] + ".displayNormal") == False:
    cmds.setAttr(sl_node[0] + ".displayNormal", 1)
elif cmds.getAttr(sl_node[0] + ".displayNormal") == True:
    cmds.setAttr(sl_node[0] + ".displayNormal", 0)

サイズを変更しながら切り替え

実行するたびに法線を表示しつつサイズを切り替えられるスクリプトを作りました。
法線サイズはデフォルトで 0.400 と短めなので 10, 7, 5, 2, 非表示 でループするようにしました。
メッシュ選択した状態で実行してください。

# -*- coding: utf-8 -*-
import maya.cmds as cmds

sl_node = cmds.ls(sl=True)

# 法線のタイプを頂点に変更
cmds.setAttr(sl_node[0] + ".normalType", 2)

# 切り替え設定
if cmds.getAttr(sl_node[0] + ".displayNormal") == False:
    cmds.setAttr(sl_node[0] + ".displayNormal", 1)
    cmds.setAttr(sl_node[0] + ".normalSize", 10)
    print '法線サイズ 10',
    
elif cmds.getAttr(sl_node[0] + ".normalSize") == 10:
    cmds.setAttr(sl_node[0] + ".normalSize", 7)
    print '法線サイズ 7',
    
elif cmds.getAttr(sl_node[0] + ".normalSize") == 7:
    cmds.setAttr(sl_node[0] + ".normalSize", 5)
    print '法線サイズ 5',
    
elif cmds.getAttr(sl_node[0] + ".normalSize") == 5:
    cmds.setAttr(sl_node[0] + ".normalSize", 2)
    print '法線サイズ 2',
    
else:
    cmds.setAttr(sl_node[0] + ".displayNormal", 0)
    print '法線 非表示',