Materials 関係の Tips
Material を作成・アサインする¶
Pymel の場合¶
import pymel.core as pm
shader , shadingEngine = pm.createSurfaceShader("lambert")
# forceElement にはノード名を入れる(string or list or pyNode)
pm.sets(shadingEngine,forceElement="pCube1")
maya.cmds の場合¶
import maya.cmds as mc
shader = mc.shadingNode("lambert",asShader=True)
shadingEngine = mc.sets(noSurfaceShader=True,renderable=True,empty=True)
mc.connectAttr(shader + ".outColor", shadingEngine + ".surfaceShader")
mc.sets("pCube1",e=True, forceElement=shadingEngine)
使用されているマテリアルか調べる¶
Material の Assign は Sets(ShadingEngine)で管理している。
ので、アサインされているかどうかは、Sets に含まれているかどうかで判定することができる。
maya.cmds の場合¶
def is_used_materials(mat_name):
sg_list = mc.listConnections(mat_name + ".outColor")
if len(sg_list) == 0:
return False
if mc.sets(sg_list[0],q=True, size=True) == 0:
return False
return True
pymel の場合¶
def is_used_materials(mat_name):
if isinstance(mat_name,str) is True:
mat_name = pm.PyNode(mat_name)
sg_nodes = mat_name.outColor.connections()
if len(sg_nodes) == 0:
return False
sg = sg_nodes[0]
if len(sg.members()) == 0:
return False
return True
最終更新日: 2020-07-11 15:53:43