Maya

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

shamimatsu

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

ソフトエッジにする

maya.cmds

1# -*- coding: utf-8 -*-
2import maya.cmds as cmds
3
4cmds.polySoftEdge(angle=180)

pymel.core

1# -*- coding: utf-8 -*-
2import pymel.core as pm
3
4pm.mel.SoftPolyEdgeElements(1)

ハードエッジにする

maya.cmds

1# -*- coding: utf-8 -*-
2import maya.cmds as cmds
3
4cmds.polySoftEdge(angle=0)

pymel.core

1# -*- coding: utf-8 -*-
2import pymel.core as pm
3
4pm.mel.SoftPolyEdgeElements(0)

プレビューを変更する

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

1# -*- coding: utf-8 -*-
2import maya.cmds as cmds
3
4sl_node = cmds.ls(sl=True)
5# オブジェクト選択だったらエッジの表示をソフト/ハードにする
6if cmds.selectMode(q=1, object=1) == 1:
7    if not cmds.getAttr(sl_node[0] + ".displayEdges") == 1:
8        cmds.setAttr(sl_node[0] + ".displayEdges", 1)
9    
10# コンポーネント選択だったらオブジェクト選択にしてエッジの表示をソフト/ハードにする
11elif cmds.selectMode(q=1, component=1) == 1:
12        cmds.selectMode(object=1)
13        sl_obj = cmds.ls(sl=True)
14        if not cmds.getAttr(sl_obj[0] + ".displayEdges") == 1:
15            cmds.setAttr(sl_obj[0] + ".displayEdges", 1)

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

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