• 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()
  • 相关阅读:
    第四阶段学习总结
    第三阶段学习总结
    第二阶段学习总结
    第一阶段内容的学习总结
    第四单元及OO课程总结
    关于工具的碎碎念
    第三单元博客总结
    第二单元博客总结
    第一单元作业总结
    实验五 单元测试
  • 原文地址:https://www.cnblogs.com/hksac/p/5123369.html
Copyright © 2020-2023  润新知