Maya

【Maya:Python】ソフトエッジ/ハードエッジにする

shamimatsu

maya2022のpython3で動作確認
ソフト・ハードエッジの変更はよく使うと思いますのでボタン一つで設定できるようにしておくと便利です。仕事ではツール内に組み込んで使っています。
maya.cmds pymel.core でコードがかなり違う印象ですね。

ソフトエッジにする

maya.cmds

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

cmds.polySoftEdge(angle=180)

pymel.core

# -*- coding: utf-8 -*-
import pymel.core as pm

pm.mel.SoftPolyEdgeElements(1)

ハードエッジにする

maya.cmds

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

cmds.polySoftEdge(angle=0)

pymel.core

# -*- coding: utf-8 -*-
import pymel.core as pm

pm.mel.SoftPolyEdgeElements(0)

プレビューを変更する

デフォルトだとエッジの表示が標準になっておりソフトエッジにしても見た目が同じワイヤーフレームのため、ソフト/ハードに変更しておくとわかりやすいです。

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

sl_node = cmds.ls(sl=True)
# オブジェクト選択だったらエッジの表示をソフト/ハードにする
if cmds.selectMode(q=1, object=1) == 1:
    if not cmds.getAttr(sl_node[0] + ".displayEdges") == 1:
        cmds.setAttr(sl_node[0] + ".displayEdges", 1)
    
# コンポーネント選択だったらオブジェクト選択にしてエッジの表示をソフト/ハードにする
elif cmds.selectMode(q=1, component=1) == 1:
        cmds.selectMode(object=1)
        sl_obj = cmds.ls(sl=True)
        if not cmds.getAttr(sl_obj[0] + ".displayEdges") == 1:
            cmds.setAttr(sl_obj[0] + ".displayEdges", 1)

番号(0~3まで)を変更すればエッジの表示を指定できます。
例>”.displayEdges”, 2

ABOUT ME
shamimatsu
shamimatsu
3DCGデザイナー
ながらくゲーム業界で2D、3DCGデザイナーとして働いてきましたが、新しい業界に挑戦中です。 ブログのデザインをリニューアル中のため、見づらい箇所もあるかもしれませんが少しづつ修正していきます。
記事URLをコピーしました