zoukankan      html  css  js  c++  java
  • 实战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()
  • 相关阅读:
    android 学习笔记1- 应用程序的资源管理
    idea shortcut
    关于layou以及layout 上的控件
    java 之深拷贝与浅拷贝
    Java中static静态方法可以继承吗?可以被重写吗?
    String StringBuff StringBuilder 使用。
    linux 中断
    设备类class理解
    linux 内核符号
    QT 调试输出格式
  • 原文地址:https://www.cnblogs.com/3lina/p/10335187.html
Copyright © 2011-2022 走看看