美文网首页CgTd
Yeti 命令教程

Yeti 命令教程

作者: N景波 | 来源:发表于2016-07-28 18:31 被阅读0次

我其实不会用Yeti插件,做不出好看的皮毛效果,因项目而熟悉Yeti的mel。Yeti的文档是相当全,不懂的完全可以看Yeti官方文档,进入正题。

1. 在Maya中获取Yeti graph node
import maya.cmds as cmd
all = cmd.ls(type='pgYetiMaya')

node的类名为 pgYetiMaya。 长时间不用Maya都忘了去哪找node的type了。


2. 获取Yeti graph node中的 cache 文件路径
cmd.getAttr(node+'.cacheFileName')

node为 1 中获取的节点名。 大部分时间不知道属性名,只能悲催地用

cmd.listAttr(node,  r=True)

列出来慢慢找了。


3. 获取Yeti节点图内部节点

其实Yeti本身内部就是一个旧节点图,通过命令可以获取到这些节点,并能修改其属性。mel命令如下:

pgYetiGraph -listNodes node

node为 1 中获取的节点名


4. 获取Yeti节点图中的某种节点
pgYetiGraph -listNodes -type "texture" node

-type指定 节点类型,类型可以在Yeti的Graph editor中查看。
通过maya.mel.eval() 执行后会得到一个包含node name的list


5. 获取Yeti节点图中某个节点所有属性
pgYetiGraph -node "texture" -listParams node

-node 指定Graph editor中存在的节点。
-listParams 说明要列出所有属性

6. 获取Yeti节点属性
pgYetiGraph -node "texture01" -param "file_name" -getParamValue node

-param 指定属性名。大部分时候不知道属性名,就需要5中的方法,先全列出来看看。
-getParamValue 说明是获取属性。很明显肯定有对应修改属性的参数。


7. 修改Yeti节点属性
pgYetiGraph -node "texture01" -param "file_name" -setParamValueString "new_path"  node

-setParamValueString 后面加空格 跟上新路径


8. 一点参考代码
import maya.cmds as cmd
import maya.mel as mel

def get_graph_path(node):
    return cmd.getAttr(node+'.cacheFileName')

def set_graph_path(node, path):
    cmd.setAttr(node+'.cacheFileName', path)

def get_texture_node(graph_node):
    mel_cmd = 'pgYetiGraph -listNodes -type "texture" %s' % str(graph_node)
    texture_nodes = mel.eval(mel_cmd)
    return texture_nodes

def get_texture_path(texture, graph):
    mel_cmd = 'pgYetiGraph -node "%s" -param "file_name" -getParamValue %s' %(str(texture), str(graph))
    path = mel.eval(mel_cmd)
    return path

def set_texture_path(path, node, graph):
    mel_cmd = 'pgYetiGraph -node "{node_name}" -param "file_name" -setParamValueString {path}  {graph}'.format(node_name=str(node), path=str(path), graph=str(graph))
    print mel_cmd    

all_yeti_nodes = cmd.ls(type='pgYetiMaya')
for node_name in all_yeti_nodes:
    # 获取yeti cache的路径
    cache = get_graph_path(node_name)
    # 每个yeti cahce内部都是个节点图,获取所有 texture节点
    # 返回的是节点名字的list
    tnodes = get_texture_node(node_name)
    for node in tnodes:
        # 获取texture节点内部的 图片路径
        texs = get_texture_path(node, node_name)

        # 给texture节点设置新的 path
        #set_texture_path(texs, node, node_name)

更多请参考Yeti官方文档

相关文章

网友评论

    本文标题:Yeti 命令教程

    本文链接:https://www.haomeiwen.com/subject/zgiajttx.html