Advertisement
Guest User

jl_import_image_plane

a guest
Mar 16th, 2012
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.82 KB | None | 0 0
  1. import maya.OpenMaya as OpenMaya
  2. import maya.cmds as cmds
  3.  
  4.  
  5. def jl_create_shader(shaderType='lambert', name=''):
  6.   if name == '':
  7.     name = shaderType
  8.   name = cmds.shadingNode(shaderType, asShader=True,  name=name)
  9.   sg = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name='%sSG'%(name))
  10.  
  11.  
  12.   # connect shader to SG
  13.   shaderOutput = 'outValue'
  14.   if shaderType== 'mia_material' or shaderType == 'mia_material_x':
  15.     if shaderType == 'mia_material_x':
  16.       shaderOutput = "result";
  17.       cmds.connectAttr('%s.%s' %(name,shaderOutput), '%s.miMaterialShader' %(sg), force=True)
  18.       cmds.connectAttr('%s.%s' %(name,shaderOutput), '%s.miShadowShader' %(sg),force=True)
  19.       cmds.connectAttr('%s.%s' %(name,shaderOutput), '%s.miPhotonShader' %(sg),force=True)
  20.   else:
  21.     cmds.connectAttr('%s.outColor' %(name), '%s.surfaceShader' %(sg), force=True)
  22.  
  23.   tex = cmds.shadingNode('file', n=name+'_tex', asTexture=True )
  24.   placeTex = cmds.shadingNode('place2dTexture', n=name+'_place2dTex', asUtility =True )
  25.   cmds.connectAttr(placeTex+'.coverage', tex+'.coverage', f=True)
  26.   cmds.connectAttr(placeTex+'.translateFrame', tex+'.translateFrame', f=True)
  27.   cmds.connectAttr(placeTex+'.rotateFrame', tex+'.rotateFrame', f=True)
  28.   cmds.connectAttr(placeTex+'.mirrorU', tex+'.mirrorU', f=True)
  29.   cmds.connectAttr(placeTex+'.mirrorV', tex+'.mirrorV', f=True)
  30.   cmds.connectAttr(placeTex+'.stagger', tex+'.stagger', f=True)
  31.   cmds.connectAttr(placeTex+'.wrapU', tex+'.wrapU', f=True)
  32.   cmds.connectAttr(placeTex+'.wrapV', tex+'.wrapV', f=True)
  33.   cmds.connectAttr(placeTex+'.repeatUV', tex+'.repeatUV', f=True)
  34.   cmds.connectAttr(placeTex+'.offset', tex+'.offset', f=True)
  35.   cmds.connectAttr(placeTex+'.rotateUV', tex+'.rotateUV', f=True)
  36.   cmds.connectAttr(placeTex+'.noiseUV', tex+'.noiseUV', f=True)
  37.   cmds.connectAttr(placeTex+'.vertexUvOne', tex+'.vertexUvOne', f=True)
  38.   cmds.connectAttr(placeTex+'.vertexUvTwo', tex+'.vertexUvTwo', f=True)
  39.   cmds.connectAttr(placeTex+'.vertexUvThree', tex+'.vertexUvThree', f=True)
  40.   cmds.connectAttr(placeTex+'.vertexCameraOne', tex+'.vertexCameraOne', f=True)
  41.   cmds.connectAttr(placeTex+'.outUV', tex+'.uv')
  42.   cmds.connectAttr(placeTex+'.outUvFilterSize', tex+'.uvFilterSize')
  43.   cmds.connectAttr(tex+'.outColor', name+'.color', f=True)
  44.   cmds.connectAttr(tex+'.outTransparency', name+'.transparency', f=True)
  45.  
  46.   return [name, sg, tex, placeTex]
  47.  
  48. def jl_assign_to_shader(shaderSG=None, objects=None):
  49.   # assign selection to the shader
  50.   if objects is None:
  51.     objects = cmds.ls(sl=True, l=True)
  52.   for i in objects:
  53.     try:
  54.       cmds.sets(i, e=True, forceElement=shaderSG)
  55.     except:
  56.       pass
  57.  
  58.  
  59.  
  60. def jl_import_image_plane( fileName):
  61.   file = fileName
  62.   mayaImage = OpenMaya.MImage()
  63.   mayaImage.readFromFile(file)
  64.   # get image dimensions
  65.   scriptUtilw = OpenMaya.MScriptUtil()
  66.   scriptUtilh = OpenMaya.MScriptUtil()
  67.   wPtr = scriptUtilw.asUintPtr()
  68.   hPtr = scriptUtilh.asUintPtr()
  69.   mayaImage.getSize(wPtr, hPtr)
  70.   twidth  = scriptUtilw.getUint(wPtr)*1.0
  71.   theight = scriptUtilh.getUint(hPtr)*1.0
  72.   ratio = theight/twidth
  73.   print "Image ratio: %s" % ratio
  74.   plane = cmds.polyPlane( ch=0, w=2, h=ratio*2, name=fileName.split('/')[-1], sx=2, sy=int(ratio*2))
  75.   shader, shaderSG, texture, placeTex = jl_create_shader('lambert', fileName.split('/')[-1]+'_mat')
  76.   jl_assign_to_shader(shaderSG, [plane[0]])
  77.   cmds.setAttr( texture+'.fileTextureName', file, type='string' )
  78.   print "Nodes created: %s, %s, %s, %s, %s" % (plane, shader, shaderSG, texture, placeTex)
  79.   return 1
  80.  
  81. def doImport():
  82.   filter = "Images (*.jpg *.png *.tif *.tga *.iff);;All Files (*.*)"
  83.   openpic = cmds.fileDialog2( ds=1, ff=filter, sff="Images", cap='Import_Image', okc='Import', fm=1 )
  84.   print openpic[0]
  85.   jl_import_image_plane( openpic[0] )
  86.  
  87. """
  88. if __name__ == "__main__":
  89.  doImport()
  90. """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement