Maya浅谈nhair毛发
浅谈nhair毛发
一、要想nhair不出问题,就要遵循以下规则 1、如果头发有动态,出缓存指定缓存,关闭动力学,删除(关闭)解算节点 2、如果头发没有动态,关闭动力学,删除(关闭)解算节点 nhair的毛发解算节点,也就是nucleus节点,一般是直接删除的,Maya在后台渲染的时候会自动打开动力学,有几率给nhair毛发渲染造成一定的影响
二、有动态 1、Maya内展示
导出缓存(这一步一般都是解算来出的) 导出缓存前要打开毛发动力学和解算节点,我这边提供几个Python脚本,可以更改所有节点
# 打开所有毛发动力学
for obj in cmds.ls(type="hairSystem"):
cmds.setAttr((obj + ".simulationMethod"), 3)
print obj, cmds.getAttr(obj + ".simulationMethod")
# 打开所有解算节点
for obj in cmds.ls(type="nucleus"):
cmds.setAttr((obj + ".enable"), 0)
print obj, cmds.getAttr(obj + ".enable")
选择毛发节点,nCache->Create New Cache->nObject 口
然后设置导出的路径,文件格式等, 然后点创建
3、关闭动力学,关闭(删除)解算节点 这里是关闭场景内所有的节点,我这边提供几个Python脚本
# 关闭所有毛发动力学
for obj in cmds.ls(type="hairSystem"):
cmds.setAttr((obj + ".simulationMethod"), 1)
print obj, cmds.getAttr(obj + ".simulationMethod")
# 打开所有解算节点
for obj in cmds.ls(type="nucleus"):
cmds.setAttr((obj + ".enable"), 0)
print obj, cmds.getAttr(obj + ".enable")
4、指定缓存,如果有cacheFile节点直接指定,如果没有就采用下面的方法 可以发现我们的文件已经没有动态了
我们现在指定缓存, 选择毛发system的shape节点
nCache->Attach Cache
更改设置,指定到毛发,点merge
merge后,我们点播放,可以看到毛发是有动态的,直接拖动帧是看不到动态的
5、检查cacheFile路径是否正确
import maya.cmds as cmds
import os
all_image = cmds.ls(exactType ="cacheFile")
for a in all_image:
b = cmds.getAttr(a+".cacheName")
c = cmds.getAttr(a+".cachePath")
print (c+"/"+b+".xml")
三、无动态 没有动态就方便了,直接用工具关闭所有毛发动力学和解算节点
# 关闭所有毛发动力学
for obj in cmds.ls(type="hairSystem"):
cmds.setAttr((obj + ".simulationMethod"), 1)
print obj, cmds.getAttr(obj + ".simulationMethod")
# 关闭所有解算节点
for obj in cmds.ls(type="nucleus"):
cmds.setAttr((obj + ".enable"), 0)
print obj, cmds.getAttr(obj + ".enable")