cwisbg

# Matte Express v3

Jun 5th, 2015
417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.37 KB | None | 0 0
  1. # Matte Express v3.1
  2. from pymel.core import *
  3.  
  4.  
  5.                            
  6. def assignMatX(matC):
  7.     #transCheck = checkBoxTrans.getValue()
  8.     miaCheck = checkBoxMia.getValue()
  9.     sl = selected()    
  10.     for s in sl:
  11.        
  12.         mat = getMat(s)
  13.         if miaCheck:
  14.             print "keep cutout opacity"
  15.             if nodeType(mat[0]) == "mia_material_x_passes":# check if mia
  16.                 print "its a mia!"
  17.                 transConCheck = mat[0].cutout_opacity.listConnections()
  18.                 if transConCheck:
  19.                     checkType =  matC+"_"+s+"_mia_matte"
  20.                 else:
  21.                     checkType = matC+"_matte"  
  22.             else:# if not mia
  23.                 print "not mia"
  24.                 transConCheck = mat[0].transparency.listConnections()
  25.                 if transConCheck:
  26.                     checkType = matC+"_"+s+"_matte"
  27.                 else:# if no transperancy
  28.                     print "no trans"
  29.                     checkType = matC+"_matte"    
  30.                
  31.         else:
  32.             checkType = matC+"_matte"
  33.            
  34.         colorValue = setColors(matC)#set colors
  35.  
  36.         matCheck = ls(checkType)
  37.         print "checkType: ",checkType
  38.        
  39.         if matCheck:# if material already exsists, get connections for assignment
  40.             newMatSG = listConnections(matCheck,t="shadingEngine")
  41.             newMat = matCheck[0]  
  42.            
  43.         else:
  44.             newMatSG = [sets(renderable=True, noSurfaceShader=True, empty=True, name=matC+"_matteSG")]
  45.             if miaCheck:
  46.                 newMat = shadingNode('mia_material_x_passes',asShader=1,n= checkType)
  47.                 if transConCheck:
  48.                     transConCheck[0].outAlpha >> newMat.cutout_opacity                  
  49.                 setAttr(newMat.additional_color,colorValue)
  50.                 setAttr(newMat.diffuse_weight, 0)
  51.                 setAttr(newMat.reflectivity, 0)
  52.                 setAttr(newMat.thin_walled, 1)
  53.                 newMat.message >> newMatSG[0].surfaceShader
  54.                 newMat.message >> newMatSG[0].miMaterialShader
  55.                 newMat.message >> newMatSG[0].miShadowShader
  56.                 newMat.message >> newMatSG[0].miPhotonShader  
  57.             else:# not mia
  58.                 newMat = shadingNode("surfaceShader",asShader=1,n = checkType)        
  59.                 setAttr(newMat.outColor,colorValue)
  60.                 if matC == "alpha":
  61.                     setAttr(newMat.outMatteOpacity,0,0,0)
  62.                 newMat.outColor >> newMatSG[0].surfaceShader
  63.                 transConCheck = mat[0].transparency.listConnections()            
  64.                    
  65.         """
  66.        if not matCheck:
  67.            newMatSG = [sets(renderable=True, noSurfaceShader=True, empty=True, name=matC+"_matteSG")]
  68.            if miaCheck:
  69.                if transConCheck:
  70.                    newMat = shadingNode('mia_material_x_passes',asShader=1,n= checkType)
  71.                    transConCheck.outColor >> newMat.cutout_opacity
  72.                else:
  73.                    newMat = shadingNode('mia_material_x_passes',asShader=1,n= checkType)
  74.                setAttr(newMat.additional_color,colorValue)
  75.                setAttr(newMat.diffuse_weight, 0)
  76.                setAttr(newMat.reflectivity, 0)
  77.                setAttr(newMat.thin_walled, 1)
  78.                newMat.message >> newMatSG[0].surfaceShader
  79.                newMat.message >> newMatSG[0].miMaterialShader
  80.                newMat.message >> newMatSG[0].miShadowShader
  81.                newMat.message >> newMatSG[0].miPhotonShader
  82.                
  83.                if matC == "alpha":
  84.                    setAttr(newMat.cutout_opacity,0)
  85.            else:
  86.                print "3.5"
  87.                newMat = shadingNode("surfaceShader",asShader=1,n = checkType)
  88.                setAttr(newMat.outColor,colorValue)
  89.                if matC == "alpha":
  90.                    setAttr(newMat.outMatteOpacity,0,0,0)
  91.                newMat.outColor >> newMatSG[0].surfaceShader
  92.                transConCheck = mat[0].transparency.listConnections()
  93.                if transConCheck:
  94.                    transConCheck[0].outColor >> newMat.outTransparency              
  95.        """
  96.         print "newMat: ",newMat
  97.         #assMat(s,newMatSG)
  98.         select(sl)
  99.        
  100.        
  101. def assMat(s,matSG):
  102.     #print s, matSG
  103.     try:
  104.         sets(matSG[0], e=1, forceElement = s)
  105.     except:
  106.         try:
  107.             hyperShade(s, matSG = slMat)
  108.         except:
  109.             print "could not assign material to:", s  
  110. def getMat(s):# get material from selected
  111.     matSG = s.getShape().listConnections(t="shadingEngine")
  112.     mat = ls(listConnections(matSG),materials=1)[:1]
  113.     return mat, matSG
  114. def getColor(matColor):
  115.         if matColor == "red":
  116.             colorValue = 1,0,0
  117.         if matColor == "green":
  118.             colorValue = 0,1,0          
  119.         if matColor == "blue":
  120.             colorValue = 0,0,1
  121.         if matColor == "black":
  122.             colorValue = 0,0,0            
  123.         if matColor == "white":
  124.             colorValue = 1,1,1
  125.         if matColor == "alpha":
  126.             colorValue = 0,0,0
  127.         return colorValue  
  128.                
  129. def checkTransperancy(mat):  
  130.     if nodeType(mat[0]) == "mia_material_x_passes":# check if mia
  131.         transConCheck = mat[0].cutout_opacity.listConnections(p=1)
  132.     else:# if not mia
  133.         transConCheck = mat[0].transparency.listConnections(p=1)
  134.     return transConCheck    
  135. def checkDisp(matSG):
  136.     dispConCheck = matSG[0].displacementShader.listConnections(p=1)
  137.     return dispConCheck
  138. def makeOther():
  139.     print "ha not doing anything because i didnt finish this yet"
  140. def makeMia(transCon,dispCon,colorValue,name):
  141.     newMat = shadingNode('mia_material_x_passes',asShader=1, n = name)
  142.     newMatSG = sets(renderable=True, noSurfaceShader=True, empty=True, name= name+"SG")
  143.     setAttr(newMat.additional_color,colorValue)
  144.     setAttr(newMat.diffuse_weight, 0)
  145.     setAttr(newMat.reflectivity, 0)
  146.     setAttr(newMat.thin_walled, 1)
  147.     newMat.message >> newMatSG.surfaceShader
  148.     newMat.message >> newMatSG.miMaterialShader
  149.     newMat.message >> newMatSG.miShadowShader
  150.     newMat.message >> newMatSG.miPhotonShader
  151.     if transCon:
  152.         transCon[0] >> newMat.cutout_opacity  
  153.     if dispCon:
  154.         dispCon[0] >> newMatSG.displacementShader
  155.     return newMat,newMatSG  
  156. def getName(transCon,dispCon,mat,matC):
  157.     t = ""
  158.     d = ""
  159.     matName = ""
  160.     if transCon:
  161.         t = "trans_"
  162.         matName = str(mat[0])+"_"
  163.     if dispCon:
  164.         d = "disp_"
  165.     return matName+t+d+matC
  166. def assignMat(matC):
  167.     sl = selected()    
  168.     for s in sl:
  169.         mat, matSG = getMat(s)#get current material
  170.         transCon = checkTransperancy(mat)#check transperancy
  171.         dispCon = checkDisp(matSG)#check displacment
  172.         #print "Displacment Connection: ",dispCon," Transperancy Connection: ",transCon
  173.         colorValue = getColor(matC)#get colors
  174.         matName = getName(transCon,dispCon,mat,matC)
  175.         print matName
  176.         nameCheck = ls(matName)
  177.         if not nameCheck:
  178.             if nodeType(mat[0]) == "mia_material_x_passes":
  179.                 newMat,newMatSG  = makeMia(transCon,dispCon,colorValue,matName)
  180.                 sets(newMatSG, e=1, forceElement = s)
  181.         #assMat(s,newMat,newMatSG)
  182.          
  183.            
  184.         #get generic material with that color, it exsists, if not create on with connections
  185.  
  186.        
  187.          
  188. sl = selected()  
  189. from pymel.core import *    
  190. win = window(title= "Matte Express",ip=1,rtf=1,s=0,w=50)
  191. mainLayout = rowColumnLayout(nc=1)
  192. text = text("Matte Express",fn="boldLabelFont")
  193. #checkBoxTrans = checkBox(l = "Keep Transperancy")
  194. #checkBoxMia = checkBox(l = "Cutout Opacity",v=1)
  195. btnLayout = rowColumnLayout(nc=3,p=mainLayout)
  196. redButton = button(l="",bgc =[1,0,0],command=Callback(assignMat,"red"),p=btnLayout,w=50)
  197. greenButton = button(l="",bgc =[0,1,0],command=Callback(assignMat,"green"),p=btnLayout,w=50)
  198. blueButton = button(l="",bgc =[0,0,1],command=Callback(assignMat,"blue"),p=btnLayout,w=50)
  199. blackButton = button(l="",bgc =[0,0,0],command=Callback(assignMat,"black"),p=btnLayout,w=50)
  200. whiteButton = button(l="",bgc =[1,1,1],command=Callback(assignMat,"white"),p=btnLayout,w=50)
  201. blackHoleButton = button(l="Alpha",bgc =[0.5,0.5,0.5],command=Callback(assignMat,"alpha"),p=btnLayout,w=50,en=0)
  202.  
  203. win.show()
Advertisement
Add Comment
Please, Sign In to add comment