Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Matte Express v3.1
- from pymel.core import *
- def assignMatX(matC):
- #transCheck = checkBoxTrans.getValue()
- miaCheck = checkBoxMia.getValue()
- sl = selected()
- for s in sl:
- mat = getMat(s)
- if miaCheck:
- print "keep cutout opacity"
- if nodeType(mat[0]) == "mia_material_x_passes":# check if mia
- print "its a mia!"
- transConCheck = mat[0].cutout_opacity.listConnections()
- if transConCheck:
- checkType = matC+"_"+s+"_mia_matte"
- else:
- checkType = matC+"_matte"
- else:# if not mia
- print "not mia"
- transConCheck = mat[0].transparency.listConnections()
- if transConCheck:
- checkType = matC+"_"+s+"_matte"
- else:# if no transperancy
- print "no trans"
- checkType = matC+"_matte"
- else:
- checkType = matC+"_matte"
- colorValue = setColors(matC)#set colors
- matCheck = ls(checkType)
- print "checkType: ",checkType
- if matCheck:# if material already exsists, get connections for assignment
- newMatSG = listConnections(matCheck,t="shadingEngine")
- newMat = matCheck[0]
- else:
- newMatSG = [sets(renderable=True, noSurfaceShader=True, empty=True, name=matC+"_matteSG")]
- if miaCheck:
- newMat = shadingNode('mia_material_x_passes',asShader=1,n= checkType)
- if transConCheck:
- transConCheck[0].outAlpha >> newMat.cutout_opacity
- setAttr(newMat.additional_color,colorValue)
- setAttr(newMat.diffuse_weight, 0)
- setAttr(newMat.reflectivity, 0)
- setAttr(newMat.thin_walled, 1)
- newMat.message >> newMatSG[0].surfaceShader
- newMat.message >> newMatSG[0].miMaterialShader
- newMat.message >> newMatSG[0].miShadowShader
- newMat.message >> newMatSG[0].miPhotonShader
- else:# not mia
- newMat = shadingNode("surfaceShader",asShader=1,n = checkType)
- setAttr(newMat.outColor,colorValue)
- if matC == "alpha":
- setAttr(newMat.outMatteOpacity,0,0,0)
- newMat.outColor >> newMatSG[0].surfaceShader
- transConCheck = mat[0].transparency.listConnections()
- """
- if not matCheck:
- newMatSG = [sets(renderable=True, noSurfaceShader=True, empty=True, name=matC+"_matteSG")]
- if miaCheck:
- if transConCheck:
- newMat = shadingNode('mia_material_x_passes',asShader=1,n= checkType)
- transConCheck.outColor >> newMat.cutout_opacity
- else:
- newMat = shadingNode('mia_material_x_passes',asShader=1,n= checkType)
- setAttr(newMat.additional_color,colorValue)
- setAttr(newMat.diffuse_weight, 0)
- setAttr(newMat.reflectivity, 0)
- setAttr(newMat.thin_walled, 1)
- newMat.message >> newMatSG[0].surfaceShader
- newMat.message >> newMatSG[0].miMaterialShader
- newMat.message >> newMatSG[0].miShadowShader
- newMat.message >> newMatSG[0].miPhotonShader
- if matC == "alpha":
- setAttr(newMat.cutout_opacity,0)
- else:
- print "3.5"
- newMat = shadingNode("surfaceShader",asShader=1,n = checkType)
- setAttr(newMat.outColor,colorValue)
- if matC == "alpha":
- setAttr(newMat.outMatteOpacity,0,0,0)
- newMat.outColor >> newMatSG[0].surfaceShader
- transConCheck = mat[0].transparency.listConnections()
- if transConCheck:
- transConCheck[0].outColor >> newMat.outTransparency
- """
- print "newMat: ",newMat
- #assMat(s,newMatSG)
- select(sl)
- def assMat(s,matSG):
- #print s, matSG
- try:
- sets(matSG[0], e=1, forceElement = s)
- except:
- try:
- hyperShade(s, matSG = slMat)
- except:
- print "could not assign material to:", s
- def getMat(s):# get material from selected
- matSG = s.getShape().listConnections(t="shadingEngine")
- mat = ls(listConnections(matSG),materials=1)[:1]
- return mat, matSG
- def getColor(matColor):
- if matColor == "red":
- colorValue = 1,0,0
- if matColor == "green":
- colorValue = 0,1,0
- if matColor == "blue":
- colorValue = 0,0,1
- if matColor == "black":
- colorValue = 0,0,0
- if matColor == "white":
- colorValue = 1,1,1
- if matColor == "alpha":
- colorValue = 0,0,0
- return colorValue
- def checkTransperancy(mat):
- if nodeType(mat[0]) == "mia_material_x_passes":# check if mia
- transConCheck = mat[0].cutout_opacity.listConnections(p=1)
- else:# if not mia
- transConCheck = mat[0].transparency.listConnections(p=1)
- return transConCheck
- def checkDisp(matSG):
- dispConCheck = matSG[0].displacementShader.listConnections(p=1)
- return dispConCheck
- def makeOther():
- print "ha not doing anything because i didnt finish this yet"
- def makeMia(transCon,dispCon,colorValue,name):
- newMat = shadingNode('mia_material_x_passes',asShader=1, n = name)
- newMatSG = sets(renderable=True, noSurfaceShader=True, empty=True, name= name+"SG")
- setAttr(newMat.additional_color,colorValue)
- setAttr(newMat.diffuse_weight, 0)
- setAttr(newMat.reflectivity, 0)
- setAttr(newMat.thin_walled, 1)
- newMat.message >> newMatSG.surfaceShader
- newMat.message >> newMatSG.miMaterialShader
- newMat.message >> newMatSG.miShadowShader
- newMat.message >> newMatSG.miPhotonShader
- if transCon:
- transCon[0] >> newMat.cutout_opacity
- if dispCon:
- dispCon[0] >> newMatSG.displacementShader
- return newMat,newMatSG
- def getName(transCon,dispCon,mat,matC):
- t = ""
- d = ""
- matName = ""
- if transCon:
- t = "trans_"
- matName = str(mat[0])+"_"
- if dispCon:
- d = "disp_"
- return matName+t+d+matC
- def assignMat(matC):
- sl = selected()
- for s in sl:
- mat, matSG = getMat(s)#get current material
- transCon = checkTransperancy(mat)#check transperancy
- dispCon = checkDisp(matSG)#check displacment
- #print "Displacment Connection: ",dispCon," Transperancy Connection: ",transCon
- colorValue = getColor(matC)#get colors
- matName = getName(transCon,dispCon,mat,matC)
- print matName
- nameCheck = ls(matName)
- if not nameCheck:
- if nodeType(mat[0]) == "mia_material_x_passes":
- newMat,newMatSG = makeMia(transCon,dispCon,colorValue,matName)
- sets(newMatSG, e=1, forceElement = s)
- #assMat(s,newMat,newMatSG)
- #get generic material with that color, it exsists, if not create on with connections
- sl = selected()
- from pymel.core import *
- win = window(title= "Matte Express",ip=1,rtf=1,s=0,w=50)
- mainLayout = rowColumnLayout(nc=1)
- text = text("Matte Express",fn="boldLabelFont")
- #checkBoxTrans = checkBox(l = "Keep Transperancy")
- #checkBoxMia = checkBox(l = "Cutout Opacity",v=1)
- btnLayout = rowColumnLayout(nc=3,p=mainLayout)
- redButton = button(l="",bgc =[1,0,0],command=Callback(assignMat,"red"),p=btnLayout,w=50)
- greenButton = button(l="",bgc =[0,1,0],command=Callback(assignMat,"green"),p=btnLayout,w=50)
- blueButton = button(l="",bgc =[0,0,1],command=Callback(assignMat,"blue"),p=btnLayout,w=50)
- blackButton = button(l="",bgc =[0,0,0],command=Callback(assignMat,"black"),p=btnLayout,w=50)
- whiteButton = button(l="",bgc =[1,1,1],command=Callback(assignMat,"white"),p=btnLayout,w=50)
- blackHoleButton = button(l="Alpha",bgc =[0.5,0.5,0.5],command=Callback(assignMat,"alpha"),p=btnLayout,w=50,en=0)
- win.show()
Advertisement
Add Comment
Please, Sign In to add comment