zoukankan      html  css  js  c++  java
  • Maya中提交Nuke工程到deadline中的方法

          在之前的一篇文中介绍了在maya中生成nuke工程脚本的方法,后来部门负责人希望更简单一些,能在那个功能面板里提交deadline农场渲染更好,这样就不用打开nuke手动提交了,省去了在两个软件直接来回切换的冗余工作。

          于是开始结合deadline提交原理分析这个需求。首先行业内大部分农场软件都是UI封装一堆命令行的方式,那么我们提交任务也完全可以跳过提交任务的设置界面,直接用subprocess.Popen()来运行提交任务的命令行即可。

          仔细读了SubmitNukeToDeadline.py及DeadlineNukeClient.py,剥离出一行最基本的代码:

      subprocess.Popen(["C:\Program Files\Thinkbox\Deadline7\bin\deadlinecommand.exe",
        "D:/nuke_submit_info.job",
        "D:/nuke_plugin_info.job"])
    

          subprocess.Popen()函数中有三个参数,第一个是本机deadline客户端执行文件路径,第二个提交信息的参数文件路径,第三个是软件信息文件的路径。也就是说我们只需要构建后面两个文件,就可以在任意软件环境利用subprocess.Popen()提交Nuke任务到deadline渲染农场中了。

          放一个构建这两个参数文件的函数吧:

    def submit_script_to_deadline():
      #create plugin file
      plugin_InfoFile = "D:/nuke_plugin_info.job"
      
      plugin_fileHandle = open( plugin_InfoFile, "w" )
    
      plugin_fileHandle.write("SceneFile=%s
    "%(projpath))
      plugin_fileHandle.write("Version=8.0
    
      Threads=0
    
      RamUse=0
    
      BatchMode=False
    
      BatchModeIsMovie=False
    
      NukeX=True
    
      UseGpu=False
    
      ProxyMode=False
    
      EnforceRenderOrder=False
    
      ContinueOnError=False
    
      Views=
    
      StackSize=0
    
      ")
    
      plugin_fileHandle.close()
    
      #create submit file
      submit_InfoFile = "D:/nuke_submit_info.job"
    
      submit_fileHandle = open( submit_InfoFile, "w" )
    
      submit_fileHandle.write("Plugin=Nuke
    ")
      projreg = re.compile('S+\\(w+.nk)')
      matchgroup_2 = projreg.match(projpath)
      projectname = matchgroup_2.group(1)
      submit_fileHandle.write("Name=%s
    "%(projectname))
      submit_fileHandle.write("Comment=
    
      Department=
    
      Pool=none
    
      SecondaryPool= 
    
      Group=none
    
      Priority=50
    
      MachineLimit=0
    
      TaskTimeoutMinutes=0
    
      EnableAutoTimeout=False
    
      ConcurrentTasks=1
    
      LimitConcurrentTasksToNumberOfCpus=True
    
      LimitGroups=
    
      JobDependencies=
    
      OnJobComplete=Nothing
    
      ")
      submit_fileHandle.write("Frames=%s-%s
    "%(startframe,endframe))
      submit_fileHandle.write("ChunkSize=10
    
      Whitelist=
    
      OutputFilename0=%s"%(writepath))
      submit_fileHandle.close()
  • 相关阅读:
    Fragments (Android官方文档中文版)
    android文件存储的4种方式
    【翻译】C# 使用Image Guid 验证图片类型
    【转载】C# 在线程同步中使用信号量
    【翻译】SQL SERVER 2008 发送DataBase Mail
    【原创】C# Linq to XML
    【转】Web Service身份验证
    【原创】C# HttpWebRequest 发送SOAP XML
    【原创】包含CDATA C#操作XML(无命名空间),添加/删除/编辑节点
    MSSqlServer函数Len()、DataLength()
  • 原文地址:https://www.cnblogs.com/hksac/p/5123369.html
Copyright © 2011-2022 走看看