Maya中输出nuke脚本的方法
因项目需要,三维部门跟踪组动画组都需要一个能够快速输出nuke预合成工程的脚本。脚本已经写完,源码不便于放出来,写一个大致思路吧。
我首先分析了nuke工程,内部包含了哪些节点,这些节点有哪些属性需要在脚本的UI界面上可控。之后我查看了nuke工程的脚本,分析其结构。大部分软件工程都是类xml的结构,nuke也不例外,所以要生成这样一个nuke工程是有规律可循的,只需要把节点的属性按照这个格式一个个的追加到一个字符串变量再利用f.write()将其输出成工程文件即可。这样大致思路就得到了。
接下来就是考虑到代码的复用性了,因为输出的工程不是唯一的,用已有的nuke工程模板去套显然是一种比较低级的方法。我考虑在python构建一个Node基类,基类中有对应的操作方法,比如添加设置相关属性,设置inputnode等。然后再继承该基类,构建一些特殊节点,比如RootNode节点,在nuke中root实际上并非节点,而是工程的全局设置,它有特定的默认属性,所以需要单独再为其构建一个类RootNode(Node)。
构建完Node类了就可以考虑将Node按顺序添加到字符串变量中了。我再次构建一个类ScriptWriter用以完成这个添加的操作。类中定义了读取Node属性的方法、将属性逐一添加进字符串变量的方法。完成这个类的构建后就可以写个函数来执行这个过程了。
最后再快速的写了个maya的UI,建立好按钮来执行上述命令即可。UI的编写比较简单,无非就是框架、parent一类,我添加了一些特有的小功能在里面,比如:输入框中回车后会激活下一个输入框,就省了鼠标的点击操作;内部构建了变量并利用vars().has_key()判定是否存储上一次的输入信息;集成了输出abc文件的按钮以节约artist时间等。
上个图吧做个结尾吧:
Maya中输出nuke脚本的方法的更多相关文章
- Maya中输出alembic文件的方法
Maya中输出alembic文件是有现成api调用的,与maya中大部分api一样,这个功能参数的传入是非常类似mel的,本质上讲都是kwargs类型的参数,所以我们传入的参数就需要整理成类似于mel ...
- Maya中提交Nuke工程到deadline中的方法
在之前的一篇文中介绍了在maya中生成nuke工程脚本的方法,后来部门负责人希望更简单一些,能在那个功能面板里提交deadline农场渲染更好,这样就不用打开nuke手动提交了,省去了在两个软件直接来 ...
- 在html中添加script脚本的方法和注意事项
在html中添加script脚本有两种方法,直接将javascript代码添加到html中与添加外部js文件,这两种方法都比较常用,大家可以根据自己需要自由选择 在html中添加<script& ...
- shell中引用其他脚本的方法
在Shell中引用其他脚本的方法是source filename.sh 或 . filename.sh 注意: . 和 filename.sh之间必须有空格
- PowerShell因为在此系统中禁止执行脚本解决方法
PowerShell因为在此系统中禁止执行脚本解决方法 在Powershell直接脚本时会出现: 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 " ...
- C++中输出变量类型的方法
C++中输出变量类型的方法 在c++中输出变量或者数据类型,使用typeid().name()的方法.如下例子: #include <iostream> #include <stri ...
- ASP.NET CS文件中输出JavaScript脚本的3种方法以及区别
Response.Write 与 Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptB ...
- ASP.NET CS文件中输出JavaScript脚本
ClientScript.RegisterStartupScript:http://msdn.microsoft.com/zh-cn/library/system.web.ui.clientscrip ...
- InstallShield在MySQL和Oracle中执行SQL脚本的方法InstallShield在MySQL和Oracle中执行SQL脚本的方法
简述 InstallShield已经内建了对MySQL和Oracle的支持.但是这个功能是通过ODBC实现的,它对SQL脚本的格式要求非常严格,因此已经通过官方客户端测试的脚本在IS中执行时往往就会报 ...
随机推荐
- String中对字符串进行操作的一些方法
1.substring 作用:根据字符串下标进行截取 public class StrTest { public static void main(String[] args) { String a ...
- MySQL笔记(1)
数据库和 SQL 概念 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它的产生距今已有六十多年.随着信息技术和市场的发展,数据库变得无处不在:它在电子商务.银行系统 等众多领域 ...
- Insert插入不同的列数量,统计信息对比
一.实验目的: Insert插入表中相同的行数量,不同的列数量,通过10046 和autotrace工具对比查看逻辑读.物理读.time数据,并得出相应结论 二.测试 2.1测试流程: =>[为 ...
- JavaBasic_06
二维数组 二维数组定义格式 格式1 数据类型 变量名 = new 数据类型m; m表示这个二维数组有多少个一维数组 n表示每一个一维数组的元素个数 格式2 灵活性 数据类型 a = new 数据类型m ...
- Unity 3D调用Windows打开、保存窗口、文件浏览器
Unity调用Window窗口 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...
- HDU - 5421:Victor and String (回文树,支持首尾插入新字符)
Sample Input 6 1 a 1 b 2 a 2 c 3 4 8 1 a 2 a 2 a 1 a 3 1 b 3 4 Sample Output 4 5 4 5 11 题意:多组输入,开始字符 ...
- 本地存储之application cache和localstorage
http://blog.csdn.net/kingliguo/article/details/52637087
- Javascript 标准参考教程
http://javascript.ruanyifeng.com/grammar/array.html
- Linux系统安全笔记
Linux系统安全笔记 https://insecure.org/https://sectools.org/SecTools.Org:排名前125的网络安全工具 http://www.ibm.com/ ...
- STM32F4的sct文件理解
原文地址http://blog.sina.com.cn/s/blog_898f36590100ya2l.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...