研究对象:Hiero中的FnNukeShotExporter脚本
研究目的:修改FnNukeShotExporter使得可以将多个TrackItem导入到一个.nk中
 
FnNukeShotExporter这个script控制了Exporter中的Nuke Project File输出选项,关于TrackItem输出到.nk工程中的方法都存放在这个script里。
NukeShotExporter类继承自FnShotExporter中的ShotTask类,输出.nk工程的核心代码都在self.step()方法中。
仔细阅读这段代码又会发现该方法调用了来源于hiero.core.nuke.Script.py中的ScriptWriter类,该对象调用了hiero.core.nuke.Node.py中的多个Node类。
了解了内部逻辑关系后对该功能的修改就变得很容易了。
我们发现,self.step()方法的最后一部分有这样一行:
script.writeToDisk_vhq(scriptFilename)
显然这是将script对象写入具体.nk文件的一个方法。
找到该方法代码块如下:
 
def writeToDisk(self, scriptFilename): 
    dstdir = os.path.dirname(scriptFilename)

    if not os.path.exists(dstdir):

    os.makedirs(dstdir)

if os.path.lexists(scriptFilename):

    os.remove(scriptFilename)

fileContents = str(self)

f = open(scriptFilename, 'w')

    f.write (fileContents)

    f.close()

 
我们发现第五六行代码会判断同名.nk工程是否存在,如果存在就会删掉,然后创建新的.nk工程进行写入,这与我们将好几个TrackItem
写入同一个.nk工程的想法是背道而驰的,所以只要对这个方法进行修改,使其能对同一个工程重复追加写入即可。具体修改方法很简单,就不说了。

Hiero_FnNukeShotExporter的解析与修改的更多相关文章

  1. 面试官问我:如何在 Python 中解析和修改 XML

    摘要:我们经常需要解析用不同语言编写的数据.Python提供了许多库来解析或拆分用其他语言编写的数据.在此 Python XML 解析器教程中,您将学习如何使用 Python 解析 XML. 本文分享 ...

  2. linux下内存大小、起始地址的解析与修改

    在实际的工作中,由于产品型号的不同,经常需要调整linux所管理的内存的大小,而内核在启动阶段,会两次去解析从uboot传递过来的关于内存的信息,具体如下: 一.解析从uboot传递过来的tag(在p ...

  3. AutoIt: 如何使用 AutoIt 解析,修改XML 文件

    项目组这次要发布一个项目,需要实施人员根据现场的机器情况,修改项目配置文件的几个节点,为了减轻实施人员的工作负担,我应用AutoIt写了一个小界面,实施人员只需在该界面上点几个按钮,就能够完成文件的配 ...

  4. xml解析-jaxp修改结点

    jaxp修改结点 / 修改第一个p1下面的sex内容是nan * 1.创建解析器工厂 * 2.根据解析器工厂创建解析器 * 3.解析xml返回document * 4.得到sex item方法 * 5 ...

  5. BOOST 解析,修改,生成xml样例

    解析XML 解析iworld XML,拿到entity和VisibleVolume的数据 int ParseiWorlds::readXML(const bpath &dir) { ptree ...

  6. dns解析慢 修改的参数

    情况: ping域名时反应速度慢,ping ip却很正常 方法一:禁用ipv6 /etc/hosts中注释ipv6相关的 vim /etc/sysconfig/networks NETWORKING_ ...

  7. UE4官方行为树快速入门文档解析和修改

    近学习了UE4官方文档的行为树快速入门指南,发现里面的部分逻辑稍稍有点混乱和重叠,于是加入了自己的想法,修改了部分行为树逻辑,优化了其AI寻路能力. 初始的基本操作和资源创建同官方文档一样:1个Fol ...

  8. Java Dom对XML的解析和修改操作

    与Dom4J和JDom对XML的操作类似,JDK提供的JavaDom解析器用起来一样方便,在解析XML方面Java DOM甚至更甚前两者一筹!其不足之处在于对XML的增删改比较繁琐,特开篇介绍... ...

  9. EasyUI加zTree使用解析 easyui修改操作的表单回显方法 验证框提交表单前验证 datagrid的load方法

    带参提交一次查询,从服务器加载新数据.这是一个神奇的方法 $('#dg').datagrid('load',{ code: '01', name: 'name01' }); easyui修改操作的回显 ...

随机推荐

  1. HDU2717-Catch That Cow (BFS入门)

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2717 Catch That Cow Time Limit: 5000/2000 MS (Java/O ...

  2. CentOS中yum安装ffmpeg

    1.升级系统 sudo yum install epel-release -y sudo yum update -y sudo shutdown -r now 2.安装Nux Dextop Yum 源 ...

  3. 2017-2018-2 20165228 实验二《Java面向对象程序设计》实验报告

    2017-2018-2 20165228 实验二<Java面向对象程序设计>实验报告 相关知识点 三种代码 伪代码:注释,与具体编程语言无关 产品代码:由伪代码翻译而来的具体编程语言语法相 ...

  4. c语言求最大公约数和最小公倍数(转)

    最大公约数与最小公倍数的求解是很多初学C的人所面临的一道问题.当然这道问题并不难解答,也有很多人已经写过相关的博客,我在此书写此篇博客,一是为了让自己能够夯实基础,另外就是希望能够帮到和我一样的初学者 ...

  5. jQuery.Deferred exception: $.get is not a function TypeError: $.get is not a function

    /********************************************************************** * jQuery.Deferred exception: ...

  6. ZOJ - 4089 :Little Sub and Isomorphism Sequences (同构 set)

    Little Sub has a sequence . Now he has a problem for you. Two sequences of length and of length are ...

  7. Arcgis API for JS——打印控件乱码

    在通过Arcgis API for JS编写打印控件进行地图下载时,总发现地图字体乱码,如下图: 解决方法: 在装有ArcGIS Server,要调用服务的电脑或服务器上找到下图文件夹

  8. day29akka

    PS:AKKA之前要实现并发编程,通常要借用netty框架,现在如果又要高并发又要分布式就使用akka框架这个akka在客户端和服务端每一端都相当于一个actor,尤其是服务端需要一个总管进行管理 P ...

  9. MySQL DataType--数值类型

    =========================================================MySQL常见的整数类型有:TINYINT: 占用8位空间SMALLINT: 占用16 ...

  10. hostswap dcevm

    什么是dcevm dcevm(DynamicCode Evolution Virtual Machine)是java hostspot的补丁(严格上来说是修改),允许(并非无限制)在运行环境下修改加载 ...