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节点。名为Ramp1Ramp2

  创建两个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)

 

posted @ 2019-01-10 20:06  3lina!  阅读(762)  评论(0编辑  收藏  举报