maya命令的运用。范例1。#举一反三
1)创建一个平面Plane,Width和Height各45。
2)创建一个球Sphere,Radius为1.5,TranslateY为1.5,TranslateZ为10。
3)创建一个平行光DirLi1,RotateXYZ为-85,-35,50。ScaleXYZ为3。Use Depth Map Shadows开启。
4)创建一个摄像机Cam1,TranslateXYZ为0,8,25。RotateX为-26
5)创建一个blinn材质球,命名为shd_P,赋予给Plane。
创建Checker棋盘格纹理,outColor连接到sha_P的color。
创建place2dTexture节点,outUV连接到Checker的UvCoord。
6)创建一个lambert材质球,命名为sha_S,改Color值为1,0,0。然后赋予给Sphere。
创建两个ramp节点。名为Ramp1,Ramp2。
创建两个multiplyDivide节点。命名为Mult1,Mult2。
创建一个samplerInfo节点,命名为SamInf,把SamInf的FacingRatio连接到ramp1的V Coord上。
把lambert1的outColor连到ramp2的V Coord上。
ramp1和ramp2的outColor分别连到Mult1的Input1和Input2上。
Mult1的Output连到Mult2的Input1。改Input2的值为1,0,1。
把Mult2的Output连接到sha_S的AmbientColor上。
7)开启默认渲染器的光线追踪。(defaultRenderQuality.enableRaytracing" 1)
8)在渲染面板中选择Cam,点击渲染吧。
import maya.cmds as cmds Plane = cmds.polyPlane(n='Plane', w=45, h=45) Sphere = cmds.polySphere(n='Sphere', r=1.5) cmds.xform(Sphere,translation=[0,1.5,10]) dirLi = cmds.directionalLight(n='DirLi1',rotation=(-85,-35,50)) #这里得到的是shape节点。不知道怎么得到灯光的transform节点。 cmds.setAttr('DirLi1.scaleX',3) cmds.setAttr('DirLi1.scaleY',3) cmds.setAttr('DirLi1.scaleZ',3) cmds.setAttr(dirLi+'.useDepthMapShadows',1) Cam = cmds.camera(n='Cam1') cmds.xform(Cam, translation=[0,8,25], rotation=[-26,0,0]) #creat shader and SG node.先写节点类型。再写asShader。 sha_P = cmds.shadingNode('blinn', asShader=True, n='shd_p_blinn') sha_P_SG = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=sha_P+'_SG') cmds.connectAttr(sha_P+'.outColor', sha_P_SG+'.surfaceShader') #把面片添加到shader的SG集中 cmds.select(Plane) cmds.sets(edit=True, forceElement=sha_P_SG) #creat checker texture and place2dTexture. CK = cmds.shadingNode('checker', asTexture=True, n=sha_P+'_checker') CK_2d = cmds.shadingNode('place2dTexture', asUtility=True, n=sha_P+'_place2dTexture') cmds.connectAttr(CK_2d+'.outUV', CK+'.uvCoord' ) cmds.connectAttr(CK_2d+'.outUvFilterSize', CK+'.uvFilterSize' ) cmds.setAttr(CK_2d+'.repeatU',4) cmds.setAttr(CK_2d+'.repeatV',4) #把棋盘格连到材质的颜色上。 cmds.connectAttr(CK+'.outColor', sha_P+'.color') #creat lambert sha_S = cmds.shadingNode('lambert', asShader=True, n='shd_S_lambert',) sha_S_SG = cmds.sets(renderable=True, noSurfaceShader=True, empty=True, name=sha_S+'_SG') cmds.connectAttr(sha_S+'.outColor', sha_S_SG+'.surfaceShader', force=True) cmds.setAttr(sha_S+'.color', 1.0, 0.0, 0.0, type= 'double3') cmds.select(Sphere) cmds.sets(edit=True, forceElement=sha_S_SG) #add ambientColor. Ramp1 = cmds.shadingNode('ramp', asTexture=True, n=sha_S+'_Ramp1') Ramp1_2d = cmds.shadingNode('place2dTexture', asUtility=True, n=Ramp1+'_place2dTexture') cmds.connectAttr(Ramp1_2d+'.outUV', Ramp1+'.uv') cmds.connectAttr(Ramp1_2d+'.outUvFilterSize', Ramp1+'.uvFilterSize') Ramp2 = cmds.shadingNode('ramp', asTexture=True, n=sha_S+'_Ramp2') Ramp2_2d = cmds.shadingNode('place2dTexture', asUtility=True, n=Ramp2+'_place2dTexture') cmds.connectAttr(Ramp2_2d+'.outUV', Ramp2+'.uv') cmds.connectAttr(Ramp2_2d+'.outUvFilterSize', Ramp2+'.uvFilterSize') Mult1 = cmds.shadingNode('multiplyDivide', asUtility=True, n=sha_S+'_Mult1') Mult2 = cmds.shadingNode('multiplyDivide', asUtility=True, n=sha_S+'_Mult2') SamInf = cmds.shadingNode('samplerInfo', asUtility=True, n=sha_S+'_SamInf') cmds.connectAttr(SamInf+'.facingRatio', Ramp1+'.uvCoord.vCoord', force=True) cmds.connectAttr('lambert1.outColor.outColorR', Ramp2+'.uvCoord.vCoord', force=True) cmds.connectAttr(Ramp1+'.outColor', Mult1+'.input1') cmds.connectAttr(Ramp2+'.outColor', Mult1+'.input2') cmds.connectAttr(Mult1+'.output', Mult2+'.input1') cmds.setAttr(Mult2+'.input2Y',0) cmds.connectAttr(Mult2+'.output',sha_S+'.ambientColor') #打开反射。 #keyword can't be an expression.这里要注意。 cmds.setAttr('defaultRenderQuality.enableRaytracing',1)