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

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

[img]http://dl.iteye.com/upload/attachment/359960/876a1216-bad2-3cee-8d7c-0bb9abb0a086.png[/img]

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

下面展示了各个不同模块的实现方法

#------------ 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?
[url]http://packages.python.org/MRV/index.html[/url]

最后付上切换显示碰撞层

#------------ 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值