实战1#创建反射层! #重点,查询节点是否链接。#选择分组有待优化

Posted 3lina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实战1#创建反射层! #重点,查询节点是否链接。#选择分组有待优化相关的知识,希望对你有一定的参考价值。

这些年一直想学python,但总是断断续续,鼓起无数次的勇气学它。

五年前买的书python书。每年都会看,可每次看到循环到了函数,就怎么也看不下去了。真想抽自己个嘴巴子!

书是买了一本又一本,收藏的教程也越来越多。

不实际打出来练习,都是看了又忘,忘了又放。一点兴趣都提不起来。也不知道怎么跟maya结合起来。

今年可能是空闲的时间太多。好像茅塞顿开一般。翻帮助文档,看基础教程。跟着教程打字,这里难了,放一放,隔两天再回头看,又解决了先前的问题。

就在不断的打击,不断的遗忘,再不断的忍耐,不断的巩固下,开了窍。

学习估计也就是这么一个艰难的过程。

虽然自学确实很难找到头绪,但有想要解决问题的需求,python就是一定要学下去的。

 

这次刚好项目中渲染角色需要有单独的反射层。

写了制作步骤和要求,用程序执行,感觉实现起来并不难。

于是乘热打铁写了一个。虽然有些bug,但足以增强我的自信心啊~~~

农历新年即将来到,以这个小程序作为今年的收尾吧。

 

 1 import maya.cmds as cmds
 2 import mtoa.core as core
 3 def refl_layer():
 4     if cmds.pluginInfo("mtoa" , l = 1 , a = 1 , q = 1):
 5                 print "Warring: mtoa is already loaded"
 6     else:
 7         cmds.loadPlugin("mtoa")
 8 
 9     #设定角色(选择角色组(不能框选),这里要优化)
10     allCharGrp = cmds.ls(sl=1)
11     charAll = cmds.ls(dag=True, ap=True,sl=True)
12     char = cmds.ls(charAll, g=True)
13 
14 
15     #选择非角色
16     cmds.select(allDagObjects=True)
17     cmds.select(allCharGrp, tgl=True)
18     #列出所选节点下的所有节点,然后列出geo.
19     exChar = cmds.ls(dag=True, ap=True, sl=True)
20     SC = cmds.ls(exChar, g=True)
21 
22     #改角色渲染属性
23     for charMeah in char:
24         cmds.setAttr(charMeah+.visibleInReflections,1)
25         cmds.setAttr(charMeah+.primaryVisibility,0)
26 
27     #改非角色的渲染属性
28     for scMeah in SC:
29         cmds.setAttr(scMeah+.visibleInReflections,1)
30         cmds.setAttr(scMeah+.castsShadows,0)
31 
32 
33     #选地面,赋予新的材质
34     #SC = cmds.ls(sl=True)
35     cmds.select(SC)
36     SC_set = cmds.sets(n=SC_set)
37     cmds.sets(SC_set, q=1)
38 
39     sdCatch = cmds.shadingNode(aiShadowCatcher, asShader=1, n=SC_sdCath)
40     sdCatch_SG = cmds.sets(renderable=1, noSurfaceShader=1, empty=1, name=sdCatch+SG)
41     cmds.connectAttr(sdCatch+.outColor,sdCatch_SG+.surfaceShader)
42 
43     sdCatch_ref = cmds.shadingNode(aiStandard, asShader=1, n=sdCatch+_ref)
44     cmds.setAttr(sdCatch_ref+.Kd,0)
45     cmds.setAttr(sdCatch_ref+.Ks,0)
46     cmds.setAttr(sdCatch_ref+.Kr,1)
47     cmds.setAttr(sdCatch_ref+.Fresnel,1)
48     cmds.setAttr(sdCatch_ref+.Krn,0.5)
49     cmds.connectAttr(sdCatch_ref+.outColor,sdCatch+.reflection)
50 
51     cmds.select(SC_set)
52     cmds.sets(edit=1, forceElement=sdCatch_SG)
53 
54 
55 
56     #关闭环境反射图(若影响角色灯光,就不要断,直接改属性关闭环境反射)
57     #查询是否有环境反射图,
58     Env = defaultArnoldRenderOptions.background
59     if cmds.connectionInfo( Env, isDestination=1):
60         env_bg = cmds.connectionInfo(Env, sourceFromDestination=1)
61         print env_bg
62         cmds.disconnectAttr(env_bg,Env)
63 
64 refl_layer()

 

以上是关于实战1#创建反射层! #重点,查询节点是否链接。#选择分组有待优化的主要内容,如果未能解决你的问题,请参考以下文章

Greenplum 调优--查看子节点SQL运行状态

ES实战节点数据的清空

反射动态操作类+注解灵活打标签 | 反射注解结合灵活高效实战

MySQL查询父节点下面的所有子孙节点,查询用户列表时多级(公司)部门处理,根据反射,递归树形结构工具类

MySQL查询父节点下面的所有子孙节点,查询用户列表时多级(公司)部门处理,根据反射,递归树形结构工具类

使用反射从类创建数据表?