Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. import maya.cmds as cmds
  2.  
  3. def createAndConnectTex(nodeName, path, fileAttr, matAttr, isRaw=False, isAlphaAsLum=False):
  4. baseColFile = cmds.shadingNode('file', asTexture=True, isColorManaged=True, n=nodeName)#create file node
  5. cmds.setAttr(baseColFile + '.fileTextureName', path, type='string')#set file path
  6. if isRaw:
  7. gammaNode = cmds.shadingNode('gammaCorrect', n='%s_gammaCorrect' % nodeName, asUtility=True)
  8. cmds.setAttr(gammaNode + '.gamma', 2.2, 2.2, 2.2, type='double3')
  9. cmds.connectAttr(baseColFile + '.outColor', gammaNode + '.value', force=True)
  10. cmds.connectAttr(gammaNode + '.outValueX', matAttr, force=True)
  11. cmds.setAttr(baseColFile + '.colorSpace', 'Raw', type='string')
  12. else:
  13. cmds.connectAttr(baseColFile + fileAttr, matAttr, force=True)#connect file to material
  14. if isAlphaAsLum:
  15. cmds.setAttr(baseColFile + '.alphaIsLuminance', True)
  16.  
  17. def getMapPath(diffPath, newMap):
  18. splitFile = diffPath.split('_')
  19. baseFile = '_'.join(splitFile[:-1])#get path without end
  20. mapTyp = splitFile[len(splitFile)-1]
  21.  
  22. mapTypSplit = mapTyp.split('.')
  23. fileTyp = mapTypSplit[len(mapTypSplit)-1]#get file type
  24.  
  25. newFile = baseFile+'_'+newMap+'.'+fileTyp#combine parts
  26. return newFile
  27.  
  28. def setupMaterial(mat, baseFile):
  29. selMat = cmds.optionMenu(mat, query=True, value=True)#get material name
  30. selFile = cmds.textField(baseFile, query=True, text=True)#get selected file
  31. if selMat and selFile:
  32. createAndConnectTex('%s_Diffuse_file' % selMat, selFile, '.outColor', selMat + '.color')
  33. createAndConnectTex('%s_Specular_file' % selMat, getMapPath(selFile, 'Specular'), '.outColor', selMat + '.KsColor')
  34. createAndConnectTex('%s_Roughness_file' % selMat, getMapPath(selFile, 'Roughness'), '.outAlpha', selMat + '.specularRoughness', True, True)
  35. createAndConnectTex('%s_f0_file' % selMat, getMapPath(selFile, 'f0'), '.outAlpha', selMat + '.Ksn', True, True)
  36.  
  37. nmlNode = cmds.shadingNode('bump2d', n='%s_Normal_B2D' % selMat, asUtility=True)
  38. nmlFileNode = cmds.shadingNode('file', asTexture=True, isColorManaged=True, n='%s_Normal_file' % selMat)#create file node
  39. cmds.setAttr(nmlFileNode + '.fileTextureName', getMapPath(selFile, 'Normal'), type='string')#set file path
  40. cmds.setAttr(nmlFileNode + '.colorSpace', 'Raw', type='string')
  41. cmds.connectAttr(nmlNode + '.outNormal', selMat + '.normalCamera', force=True)
  42. cmds.connectAttr(nmlFileNode + '.outAlpha', nmlNode + '.bumpValue', force=True)
  43. cmds.setAttr(nmlNode + '.bumpInterp', 1)#Set Tangent Space Normals
  44.  
  45. cmds.select(selMat)
  46.  
  47. def browseForFile(baseFile):
  48. selFile = cmds.fileDialog2(ds=2, fileMode=1, fileFilter='Image file (*.*)')
  49. if selFile:
  50. cmds.textField(baseFile, edit=True, text=selFile[0])
  51.  
  52. winID = 'SubToRedUI'
  53.  
  54. if cmds.window(winID, exists=True, resizeToFitChildren=True):
  55. cmds.deleteUI(winID)
  56. cmds.window( winID, title='Substance -> Arnold')
  57.  
  58. cmds.columnLayout()
  59.  
  60. matOption = cmds.optionMenu( label='Materials' )
  61. for mat in cmds.ls(type='aiStandard', long=True):
  62. cmds.menuItem(label=mat)
  63.  
  64. cmds.separator(height=16)
  65. cmds.text(label='BaseColour texture:')
  66.  
  67. cmds.rowLayout(numberOfColumns=2)
  68. baseFile = cmds.textField(width=256)
  69. cmds.button(label='Browse', command='browseForFile(baseFile)')
  70. cmds.setParent('..')
  71.  
  72. cmds.separator(height=16)
  73.  
  74. cmds.button(label='Go!', command='setupMaterial(matOption, baseFile)')
  75.  
  76. cmds.showWindow( winID )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement