研究对象: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. Spring Boot 揭秘与实战(五) 服务器篇 - 内嵌的服务器 Tomcat剖析

    文章目录 1. 内嵌的 Tomcat,一个Jar包运行 2. 如何定制内嵌 Tomcat3. War 包部署的使用细节 2.1. 设置内嵌Tomcat的端口 2.2. 设置内嵌Tomcat的最大线程数 ...

  2. MySQL常见建表选项及约束

    阅读目录---MySQL常见的建表选项及约束: 1.create table选项 1.指定列选项:default.comment 2.指定表选项:engine.auto_increment.comme ...

  3. BT原理分析

    BT全名為BitTorrent,是一個p2p軟件,你在下載download的同時,也在為其他用戶提供上傳upload,因為大家是「互相幫助」,所以不會隨著用戶數的增加而降低下載速度. 其實跟ED也十分 ...

  4. Unity 3D观察者设计模式-C#委托和事件的运用

    C#观察者设计模式 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新! ...

  5. CF449 (Div. 1简单题解)

    A .Jzzhu and Chocolate pro:现在给定一个大小为N*M的巧克力,让你横着或者竖着切K刀,都是切的整数大小,而且不能切在相同的地方,求最大化其中最小的块. (N,M,K<1 ...

  6. thinkphp error:no database select

    配置正确,项目运行时确出现,no database selected . 解决方法: 需要清除 /App/Runtime  runtime~.php文件

  7. springboot+kotlin+springcloud+java+grade+maven混编?

    springboot + maven + java vs springboot + gradle + kotlin 快速搭建:https://start.spring.io/ springclould ...

  8. 欧拉函数  已经优化到o(n)

    欧拉函数 ψ(x)=x*(1-1/pi)  pi为x的质数因子 特殊性质(图片内容就是图片后面的文字) 欧拉函数是积性函数——若m,n互质, ψ(m*n)=ψ(m)*ψ(n): 当n为奇数时,   ψ ...

  9. java知识 特殊符号转换

    ■情况 想把代码中的出现  “  ’等特殊符号时,在他们的前面,转换时自动加 \    最后转换成json 决定用ObjectMapper这个类,先准备一个Map,之后,map作为一个参数,调用Obj ...

  10. 从简单的mongodb example 的观察

    https://github.com/no7dw/mongodb-example 这是最基础的连接查询.(branch master) var MongoClient = require('mongo ...