Skip to content

Instantly share code, notes, and snippets.

@kanishk2391
Created February 8, 2019 15:54
Show Gist options
  • Save kanishk2391/55a9e60b5fe351b65bc48c1016d9331f to your computer and use it in GitHub Desktop.
Save kanishk2391/55a9e60b5fe351b65bc48c1016d9331f to your computer and use it in GitHub Desktop.
Matcaps For Maya - Python
import os
import maya.cmds as cmds
import glob
def matCapShader():
mainShader=cmds.shadingNode("surfaceShader",n="matCapShader",asShader=True)
envBall=cmds.shadingNode("envBall",n="matCapBall",asTexture=True)
placeTextureNode3D=cmds.shadingNode("place3dTexture",n="matCapTexturePlacer3d",asUtility=True)
fileNode=cmds.shadingNode("file",n="matCapFile",asTexture=True)
placeTextureNode2D=cmds.shadingNode("place2dTexture",n="matCapTexturePlacer2d",asUtility=True)
cmds.connectAttr("%s.worldInverseMatrix"%placeTextureNode3D,"%s.placementMatrix"%envBall)
cmds.connectAttr("%s.outColor"%envBall,"%s.outColor"%mainShader)
cmds.connectAttr("%s.coverage"%placeTextureNode2D,"%s.coverage"%fileNode)
cmds.connectAttr("%s.translateFrame"%placeTextureNode2D,"%s.translateFrame"%fileNode)
cmds.connectAttr("%s.rotateFrame"%placeTextureNode2D,"%s.rotateFrame"%fileNode)
cmds.connectAttr("%s.mirrorU"%placeTextureNode2D,"%s.mirrorU"%fileNode)
cmds.connectAttr("%s.mirrorV"%placeTextureNode2D,"%s.mirrorV"%fileNode)
cmds.connectAttr("%s.stagger"%placeTextureNode2D,"%s.stagger"%fileNode)
cmds.connectAttr("%s.wrapU"%placeTextureNode2D,"%s.wrapU"%fileNode)
cmds.connectAttr("%s.wrapV"%placeTextureNode2D,"%s.wrapV"%fileNode)
cmds.connectAttr("%s.repeatUV"%placeTextureNode2D,"%s.repeatUV"%fileNode)
cmds.connectAttr("%s.offset"%placeTextureNode2D,"%s.offset"%fileNode)
cmds.connectAttr("%s.rotateUV"%placeTextureNode2D,"%s.rotateUV"%fileNode)
cmds.connectAttr("%s.noiseUV"%placeTextureNode2D,"%s.noiseUV"%fileNode)
cmds.connectAttr("%s.outUV"%placeTextureNode2D,"%s.uv"%fileNode)
cmds.connectAttr("%s.outUvFilterSize"%placeTextureNode2D,"%s.uvFilterSize"%fileNode)
cmds.connectAttr("%s.outColor"%fileNode,"%s.image"%envBall,force=True)
cmds.setAttr("%s.filterType"%fileNode,0)
cmds.setAttr("%s.eyeSpace"%envBall,1)
return(mainShader,fileNode)
def assignShader():
r=cmds.ls(sl=True)
for i in r:
cmds.hyperShade(a=shaderName)
def fetchFiles():
path=cmds.textField(inputPath,q=True,text=True)
os.chdir(path)
files = glob.glob('*.*')
cmds.textScrollList(matCapListBox,e=True,append=(files))
def changePreviewImage():
mainPath=cmds.textField(inputPath,q=True,text=True)
selectedIndex=cmds.textScrollList(matCapListBox,q=True,si=1)
imagepath=mainPath+"\\"+selectedIndex[0]
print imagepath
cmds.setAttr("%s.fileTextureName"%fileName,str(imagepath),type="string")
cmds.iconTextButton(matCapPreviewImage,e=True,image1=imagepath)
matcapList=[]
matcapWindow = cmds.window( title="Matcaps for Maya", iconName='Short Name', widthHeight=(505, 315),tlb=True,sizeable=False,bgc=(0.3,0.3,0.3) )
createShader=matCapShader()
fileName=createShader[1]
shaderName=createShader[0]
cmds.columnLayout( adjustableColumn=True )
cmds.iconTextStaticLabel( st='textOnly',l='MATCAPS FOR MAYA',h=30 )
cmds.separator(h=10)
cmds.rowColumnLayout(nc=3)
cmds.iconTextStaticLabel( st='textOnly',l='Path',w=50 )
inputPath=cmds.textField(w=350,bgc=(0.5,0.5,0.5))
cmds.button("Fetch Matcaps",w=100,c="fetchFiles()")
cmds.setParent("..")
cmds.separator(h=10)
cmds.rowColumnLayout(nc=2)
matCapListBox=cmds.textScrollList(append=(matcapList),sc="changePreviewImage()",w=300)
matCapPreviewImage=cmds.iconTextButton( style='iconOnly', image1=None,w=200,h=200)
cmds.setParent( '..' )
cmds.separator(h=10)
cmds.button("Assign Shader",w=250,c="assignShader()")
cmds.showWindow( matcapWindow )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment