deKaf

[pyMel] Shader attribute check

Oct 22nd, 2019
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.79 KB | None | 0 0
  1. #Line diagnostics - this script checks a custom DX11 shader to verify that artists have been setting values correctly
  2. #evaluates custom MLL plugin
  3.  
  4.  
  5. import pymel.core as pm
  6. import maya.mel as mm
  7. import os
  8.  
  9.  
  10. def fileList():
  11.     mayaFiles = []
  12.    
  13.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\Falcone\sk61_falcone.ma")
  14.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\Batman\sk61_batman.ma")
  15.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\Alfred\sk61_alfred.ma")
  16.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\BruceWayne\sk61_bruceWayne.ma")
  17.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\Cobblepot\sk61_cobblepot.ma")
  18.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\GCGalaMale\sk61_gcGalaMaleAverage.ma")
  19.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\GCGenericMale\sk61_gcGenericMaleAverage.ma")
  20.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\GCPoliceMale\sk61_gcPoliceMaleAverage.ma")
  21.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\GCWaiter\sk61_gcWaiter.ma")
  22.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\Gordon\sk61_gordon.ma")
  23.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\HarveyDent\sk61_harveyDent.ma")
  24.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\MafiaGang\sk61_mafiaGang.ma")
  25.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk61\MercGang\sk61_mercGang.ma")
  26.  
  27.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk62\Catwoman\sk62_catwoman.ma")
  28.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk62\GCGalaFemale\sk62_gcGalaFemaleAverage.ma")  
  29.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk62\GCGenericFemale\sk62_gcGenericFemaleAverage.ma")
  30.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk62\SelinaKyle\sk62_selinaKyle.ma")
  31.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk62\VickiVale\sk62_vickiVale.ma")
  32.     mayaFiles.append(r"C:\Telltale\ArtData\Characters\Sk62\VickiVale\sk62_vickiValeDress.ma")
  33.  
  34.  
  35.  
  36.  
  37.     envLocation =  ('C:\\Telltale\\ArtData\\Environments\\Batman\\')
  38.     objLocation = ('C:\\Telltale\\ArtData\\Objects\\Batman\\')
  39.  
  40.     envList = [f for f in os.listdir(envLocation) if os.path.isfile(os.path.join(envLocation,f))]
  41.     objList = [f for f in os.listdir(objLocation) if os.path.isfile(os.path.join(objLocation,f))]
  42.  
  43.     for env in envList:
  44.         env = envLocation + env
  45.         mayaFiles.append(env)
  46.    
  47.     for obj in objList:
  48.         obj = objLocation + obj
  49.         mayaFiles.append(obj)
  50.  
  51.     return mayaFiles
  52.  
  53.  
  54.  
  55. def checkLines():
  56.     """Checks all dx11Shaders in scene to see if they have jagged/smooth line overrides enabled"""
  57.     materials = pm.ls(mat=True)
  58.     badMats = []
  59.  
  60.     for mat in materials:
  61.  
  62.         for i in set(pm.listConnections(mat, type='materialInfo')):
  63.             for j in set(pm.listConnections(i, type='dx11Shader')):
  64.  
  65.                 jagged = mm.eval(
  66.                     str('t3_getAttributeForBaseParameter "Material - Generate Jagged";'))
  67.                 smooth = mm.eval(
  68.                     str('t3_getAttributeForBaseParameter "Material - Generate Smooth";'))
  69.  
  70.                 if pm.getAttr(j + "." + jagged) == 1.0:
  71.                    if (pm.getAttr(j + "." + jagged)) == (pm.getAttr(j + "." + smooth)):
  72.                        if (pm.getAttr(j + "." + jagged[:-6] + "_Override")) == (pm.getAttr(j + "." + smooth[:-6] + "_Override")):
  73.                             badMats.append(j)
  74.  
  75.     return badMats
  76.  
  77.  
  78. def linesCheck():
  79.     if checkLines().__len__() > 0:
  80.         for mat in checkLines():
  81.             log.write (mat + ' has jagged/smooth both on\n')
  82.     else:
  83.         log.write ('All clean\n')
  84.  
  85.  
  86. logFile = ('C:\\logging\\materialscheck.txt')
  87.  
  88.  
  89.  
  90. for mayaFile in fileList():
  91.    
  92.     try:
  93.         pm.unloadPlugin('toolsManager.mll')
  94.         log = open(logFile, "a")
  95.         log.write(('Opening {0}\n').format(mayaFile))
  96.         pm.openFile(mayaFile, force=True, open=True)
  97.         linesCheck()
  98.     except:
  99.         pass
Advertisement
Add Comment
Please, Sign In to add comment