Skip to content

Instantly share code, notes, and snippets.

@KelSolaar
Last active August 28, 2017 14:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KelSolaar/4616743 to your computer and use it in GitHub Desktop.
Save KelSolaar/4616743 to your computer and use it in GitHub Desktop.
Craig's Texturator
import maya.cmds as cmds
import os
def getSplitextBasename(path):
basename = os.path.splitext(os.path.basename(os.path.normpath(path)))[0]
return basename
def getShaderBranch(texture):
lambert = cmds.shadingNode("lambert", asShader=True)
shadingEngine = cmds.sets(renderable=True, noSurfaceShader=True, empty=True)
cmds.connectAttr("%s.outColor" % lambert, "%s.surfaceShader" % shadingEngine, f=True)
file = cmds.shadingNode("file", asTexture=True)
cmds.setAttr("%s.fileTextureName" % file, texture, type="string")
cmds.connectAttr("%s.outColor" % file, "%s.color" % lambert, f=True)
cmds.connectAttr("%s.outTransparency" % file, "%s.transparency" % lambert, f=True)
place2dTexture = cmds.shadingNode("place2dTexture", asUtility=True)
cmds.connectAttr("%s.outUV" % place2dTexture, "%s.uvCoord" % file, f=True)
cmds.connectAttr("%s.outUvFilterSize" % place2dTexture, "%s.uvFilterSize" % file, f=True)
attributes = ("coverage", "translateFrame", "rotateFrame", "mirrorU", "mirrorV", "stagger", "wrapU", "wrapV" , "repeatUV" , "vertexUvOne" , "vertexUvTwo" , "vertexUvThree" , "vertexCameraOne", "noiseUV", "offset", "rotateUV")
for attribute in attributes:
cmds.connectAttr("%s.%s" % (place2dTexture, attribute), "%s.%s" % (file, attribute), f=True)
prefix = getSplitextBasename(texture)
for node in (lambert, place2dTexture):
cmds.rename(node, "%s_%s" % (prefix, cmds.nodeType(node)))
return cmds.rename(shadingEngine, "%s_%s" % (prefix, cmds.nodeType(shadingEngine))), cmds.rename(file, "%s_%s" % (prefix, cmds.nodeType(file)))
def getTexturedPlane(texture):
shadingEngine, file = getShaderBranch(texture)
plane = cmds.polyPlane(w=cmds.getAttr("%s.outSizeX" % file), h=cmds.getAttr("%s.outSizeY" % file), sx=10, sy=10, ch=0)
cmds.sets(plane, e=True, forceElement=shadingEngine)
cmds.rename(plane, getSplitextBasename(texture))
return True
def assignTextures(directory, extension):
for texture in filter(lambda x: x.endswith(".%s" % extension), map(lambda x: os.path.join(directory, x), os.listdir(directory))):
getTexturedPlane(texture)
assignTextures("/Users/kelsolaar/Downloads/Pictures", "png")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment