`
schi
  • 浏览: 206906 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

给nDynamics节点赋予随机的碰撞颜色

    博客分类:
  • maya
阅读更多
  在maya中使用nDynamic模块时,场景中的nDynamics节点越多就越难分辨哪个是哪个,而且默认都是清一色的碰撞颜色,给它们分别赋予一个随机颜色是一个不错的想法。



  要实现这个,方法很简单
  1. 获取场景中所有的nRigid, nCloth, nParticle节点
  2. 对它们进行迭代,并设置一个随机碰撞颜色


下面展示了各个不同模块的实现方法
#------------ maya python -----------------
from random import uniform
import maya.cmds as mc

# 获取场景中所有的nRigid, nCloth, nParticle节点
nodes = mc.ls(type=('nRigid', 'nCloth', 'nParticle'))

# 对它们进行迭代,并设置一个随机碰撞颜色
for node in nodes:
    mc.setAttr(node+'.displayColor', uniform(0,1), 
               uniform(0,1), uniform(0,1), type='double3')

    
#------------ pymel -----------------
from random import uniform
import pymel.core as pc
import pymel.core.datatypes as dt

# 获取场景中所有的nRigid, nCloth, nParticle节点
nodes = pc.ls(type=('nRigid', 'nCloth', 'nParticle'))

# 对它们进行迭代,并设置一个随机碰撞颜色
for node in nodes:
    color = dt.Vector(uniform(0,1), 
                      uniform(0,1), 
                      uniform(0,1))
    node.displayColor.set(color)
        
    
#------------ mrv -----------------
from random import uniform
from mrv.maya.nt import it

# 获取场景中所有的nRigid, nCloth, nParticle节点
nodes = it.iterDgNodes(it.api.MFn.kNCloth, 
                       it.api.MFn.kNRigid, 
                       it.api.MFn.kNParticle)

# 对它们进行迭代,并设置一个随机碰撞颜色
for node in nodes:
    node.displayColorR.msetDouble(uniform(0,1))
    node.displayColorG.msetDouble(uniform(0,1))
    node.displayColorB.msetDouble(uniform(0,1))


什么是mrv?
http://packages.python.org/MRV/index.html

最后付上切换显示碰撞层
#------------ pymel -----------------
import pymel.core as pc

nodes = pc.ls(type=('nRigid', 'nCloth', 'nParticle'))
for node in nodes:
    x = 1 if not node.solverDisplay.get() == 1 else 0
    node.solverDisplay.set(x)
    
#------------ mrv -----------------
from mrv.maya.nt import it

nodes = it.iterDgNodes(it.api.MFn.kRigid,
                       it.api.MFn.kNCloth,
                       it.api.MFn.kNParticle)
for node in nodes:
    x = 1 if not node.solverDisplay.asInt() == 1 else 0
    node.solverDisplay.msetInt(x)
  • 大小: 42.8 KB
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics