zoukankan      html  css  js  c++  java
  • Hiero_FnNukeShotExporter的解析与修改

    研究对象: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工程的想法是背道而驰的,所以只要对这个方法进行修改,使其能对同一个工程重复追加写入即可。具体修改方法很简单,就不说了。
  • 相关阅读:
    UNIX网络编程之旅配置unp.h头文件环境[ 转]
    C++著名程序库
    开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo
    网络库介绍
    置顶问题
    最近做的一个项目
    Storm 遇到问题?
    海量算法视频下载
    Quartz.NET作业调度框架详解
    c#中的委托、事件、Func、Predicate、Observer设计模式以及其他
  • 原文地址:https://www.cnblogs.com/hksac/p/4868023.html
Copyright © 2011-2022 走看看