Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import maya.OpenMaya as OpenMaya
- import maya.cmds as cmds
- def jl_create_shader(shaderType='lambert', name=''):
- if name == '':
- name = shaderType
- name = cmds.shadingNode(shaderType, asShader=True, name=name)
- sg = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name='%sSG'%(name))
- # connect shader to SG
- shaderOutput = 'outValue'
- if shaderType== 'mia_material' or shaderType == 'mia_material_x':
- if shaderType == 'mia_material_x':
- shaderOutput = "result";
- cmds.connectAttr('%s.%s' %(name,shaderOutput), '%s.miMaterialShader' %(sg), force=True)
- cmds.connectAttr('%s.%s' %(name,shaderOutput), '%s.miShadowShader' %(sg),force=True)
- cmds.connectAttr('%s.%s' %(name,shaderOutput), '%s.miPhotonShader' %(sg),force=True)
- else:
- cmds.connectAttr('%s.outColor' %(name), '%s.surfaceShader' %(sg), force=True)
- tex = cmds.shadingNode('file', n=name+'_tex', asTexture=True )
- placeTex = cmds.shadingNode('place2dTexture', n=name+'_place2dTex', asUtility =True )
- cmds.connectAttr(placeTex+'.coverage', tex+'.coverage', f=True)
- cmds.connectAttr(placeTex+'.translateFrame', tex+'.translateFrame', f=True)
- cmds.connectAttr(placeTex+'.rotateFrame', tex+'.rotateFrame', f=True)
- cmds.connectAttr(placeTex+'.mirrorU', tex+'.mirrorU', f=True)
- cmds.connectAttr(placeTex+'.mirrorV', tex+'.mirrorV', f=True)
- cmds.connectAttr(placeTex+'.stagger', tex+'.stagger', f=True)
- cmds.connectAttr(placeTex+'.wrapU', tex+'.wrapU', f=True)
- cmds.connectAttr(placeTex+'.wrapV', tex+'.wrapV', f=True)
- cmds.connectAttr(placeTex+'.repeatUV', tex+'.repeatUV', f=True)
- cmds.connectAttr(placeTex+'.offset', tex+'.offset', f=True)
- cmds.connectAttr(placeTex+'.rotateUV', tex+'.rotateUV', f=True)
- cmds.connectAttr(placeTex+'.noiseUV', tex+'.noiseUV', f=True)
- cmds.connectAttr(placeTex+'.vertexUvOne', tex+'.vertexUvOne', f=True)
- cmds.connectAttr(placeTex+'.vertexUvTwo', tex+'.vertexUvTwo', f=True)
- cmds.connectAttr(placeTex+'.vertexUvThree', tex+'.vertexUvThree', f=True)
- cmds.connectAttr(placeTex+'.vertexCameraOne', tex+'.vertexCameraOne', f=True)
- cmds.connectAttr(placeTex+'.outUV', tex+'.uv')
- cmds.connectAttr(placeTex+'.outUvFilterSize', tex+'.uvFilterSize')
- cmds.connectAttr(tex+'.outColor', name+'.color', f=True)
- cmds.connectAttr(tex+'.outTransparency', name+'.transparency', f=True)
- return [name, sg, tex, placeTex]
- def jl_assign_to_shader(shaderSG=None, objects=None):
- # assign selection to the shader
- if objects is None:
- objects = cmds.ls(sl=True, l=True)
- for i in objects:
- try:
- cmds.sets(i, e=True, forceElement=shaderSG)
- except:
- pass
- def jl_import_image_plane( fileName):
- file = fileName
- mayaImage = OpenMaya.MImage()
- mayaImage.readFromFile(file)
- # get image dimensions
- scriptUtilw = OpenMaya.MScriptUtil()
- scriptUtilh = OpenMaya.MScriptUtil()
- wPtr = scriptUtilw.asUintPtr()
- hPtr = scriptUtilh.asUintPtr()
- mayaImage.getSize(wPtr, hPtr)
- twidth = scriptUtilw.getUint(wPtr)*1.0
- theight = scriptUtilh.getUint(hPtr)*1.0
- ratio = theight/twidth
- print "Image ratio: %s" % ratio
- plane = cmds.polyPlane( ch=0, w=2, h=ratio*2, name=fileName.split('/')[-1], sx=2, sy=int(ratio*2))
- shader, shaderSG, texture, placeTex = jl_create_shader('lambert', fileName.split('/')[-1]+'_mat')
- jl_assign_to_shader(shaderSG, [plane[0]])
- cmds.setAttr( texture+'.fileTextureName', file, type='string' )
- print "Nodes created: %s, %s, %s, %s, %s" % (plane, shader, shaderSG, texture, placeTex)
- return 1
- def doImport():
- filter = "Images (*.jpg *.png *.tif *.tga *.iff);;All Files (*.*)"
- openpic = cmds.fileDialog2( ds=1, ff=filter, sff="Images", cap='Import_Image', okc='Import', fm=1 )
- print openpic[0]
- jl_import_image_plane( openpic[0] )
- """
- if __name__ == "__main__":
- doImport()
- """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement