DL - rebrand to OpenPype - added Harmony plugin

This commit is contained in:
Petr Kalis 2021-04-01 17:28:42 +02:00
parent be22491cdb
commit fe06513ef9
4 changed files with 761 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,532 @@
[SceneFile]
Type=filename
Label=Scene Filename
Category=Global Settings
CategoryOrder=0
Index=0
Description=The scene filename as it exists on the network.
Required=false
DisableIfBlank=true
[Environment]
Type=filename
Label=Scene Environment
Category=Global Settings
CategoryOrder=0
Index=1
Description=The Environment for the scene.
Required=false
DisableIfBlank=true
[Job]
Type=filename
Label=Scene Job
Category=Global Settings
CategoryOrder=0
Index=2
Description=The Job that the scene belongs to.
Required=false
DisableIfBlank=true
[SceneName]
Type=filename
Label=Scene Name
Category=Global Settings
CategoryOrder=0
Index=3
Description=The name of the scene to render
Required=false
DisableIfBlank=true
[SceneVersion]
Type=filename
Label=Scene Version
Category=Global Settings
CategoryOrder=0
Index=4
Description=The version of the scene to render.
Required=false
DisableIfBlank=true
[Version]
Type=enum
Values=10;11;12
Label=Harmony Version
Category=Global Settings
CategoryOrder=0
Index=5
Description=The version of Harmony to use.
Required=false
DisableIfBlank=true
[IsDatabase]
Type=Boolean
Label=Is Database Scene
Category=Global Settings
CategoryOrder=0
Index=6
Description=Whether or not the scene is in the database or not
Required=false
DisableIfBlank=true
[Camera]
Type=string
Label=Camera
Category=Render Settings
CategoryOrder=1
Index=0
Description=Specifies the camera to use for rendering images. If Blank, the scene will be rendered with the current Camera.
Required=false
DisableIfBlank=true
[UsingResPreset]
Type=Boolean
Label=Use Resolution Preset
Category=Render Settings
CategoryOrder=1
Index=1
Description=Whether or not you are using a resolution preset.
Required=false
DisableIfBlank=true
[ResolutionName]
Type=enum
Values=HDTV_1080p24;HDTV_1080p25;HDTV_720p24;4K_UHD;8K_UHD;DCI_2K;DCI_4K;film-2K;film-4K;film-1.33_H;film-1.66_H;film-1.66_V;Cineon;NTSC;PAL;2160p;1440p;1080p;720p;480p;360p;240p;low;Web_Video;Game_512;Game_512_Ortho;WebCC_Preview;Custom
Label=Resolution Preset
Category=Render Settings
CategoryOrder=1
Index=2
Description=The resolution preset to use.
Required=true
Default=HDTV_1080p24
[PresetName]
Type=string
Label=Preset Name
Category=Render Settings
CategoryOrder=1
Index=3
Description=Specify the custom resolution name.
Required=true
Default=
[ResolutionX]
Type=integer
Label=Resolution X
Minimum=0
Maximum=1000000
Category=Render Settings
CategoryOrder=1
Index=4
Description=Specifies the width of the rendered images. If 0, then the current resolution and Field of view will be used.
Required=true
Default=1920
[ResolutionY]
Type=integer
Label=Resolution Y
Minimum=0
Maximum=1000000
Category=Render Settings
CategoryOrder=1
Index=5
Description=Specifies the height of the rendered images. If 0, then the current resolution and Field of view will be used.
Required=true
Default=1080
[FieldOfView]
Type=float
Label=Field Of View
Minimum=0
Maximum=89
DecimalPlaces=2
Category=Render Settings
CategoryOrder=1
Index=6
Description=Specifies the field of view of the rendered images. If 0, then the current resolution and Field of view will be used.
Required=true
Default=41.11
[Output0Node]
Type=string
Label=Render Node 0 Name
Category=Output Settings
CategoryOrder=2
Index=0
Description=The name of the render node.
Required=false
DisableIfBlank=true
[Output0Type]
Type=enum
Values=Image;Movie
Label=Render Node 0 Type
Category=Output Settings
CategoryOrder=2
Index=1
Description=The type of output that the render node is producing.
Required=false
DisableIfBlank=true
[Output0Path]
Type=string
Label=Render Node 0 Path
Category=Output Settings
CategoryOrder=2
Index=2
Description=The output path and file name of the output files.
Required=false
DisableIfBlank=true
[Output0LeadingZero]
Type=integer
Label=Render Node 0 Leading Zeroes
Category=Output Settings
CategoryOrder=2
Minimum=0
Maximum=5
Index=3
Description=The number of leading zeroes for a 1 digit frame number. (1 less then the full padded length)
Required=false
DisableIfBlank=true
[Output0Format]
Type=string
Label=Render Node 0 Format
Category=Output Settings
CategoryOrder=2
Index=4
Description=The format for the rendered output images.
Required=false
DisableIfBlank=true
[Output0StartFrame]
Type=integer
Label=Render Node 0 Start Frame
Category=Output Settings
CategoryOrder=2
Minimum=1
Index=5
Description=The frame that will correspond to frame one when numbering. If this value is not 1 then the monitor's job output features will not work properly.
Required=false
DisableIfBlank=true
[Output1Node]
Type=string
Label=Render Node 1 Name
Category=Output Settings
CategoryOrder=2
Index=6
Description=The name of the render node.
Required=false
DisableIfBlank=true
[Output1Type]
Type=enum
Values=Image;Movie
Label=Render Node 1 Type
Category=Output Settings
CategoryOrder=2
Index=7
Description=The type of output that the render node is producing.
Required=false
DisableIfBlank=true
[Output1Path]
Type=string
Label=Render Node 1 Path
Category=Output Settings
CategoryOrder=2
Index=8
Description=The output path and file name of the output files.
Required=false
DisableIfBlank=true
[Output1LeadingZero]
Type=integer
Label=Render Node 1 Leading Zeroes
Category=Output Settings
CategoryOrder=2
Minimum=0
Maximum=5
Index=9
Description=The number of leading zeroes for a 1 digit frame number. (1 less then the full padded length)
Required=false
DisableIfBlank=true
[Output1Format]
Type=string
Label=Render Node 1 Format
Category=Output Settings
CategoryOrder=2
Index=10
Description=The format for the rendered output images.
Required=false
DisableIfBlank=true
[Output1StartFrame]
Type=integer
Label=Render Node 1 Start Frame
Category=Output Settings
CategoryOrder=2
Minimum=1
Index=11
Description=The frame that will correspond to frame one when numbering. If this value is not 1 then the monitor's job output features will not work properly.
Required=false
DisableIfBlank=true
[Output2Node]
Type=string
Label=Render Node 2 Name
Category=Output Settings
CategoryOrder=2
Index=12
Description=The name of the render node.
Required=false
DisableIfBlank=true
[Output2Type]
Type=enum
Values=Image;Movie
Label=Render Node 2 Type
Category=Output Settings
CategoryOrder=2
Index=13
Description=The type of output that the render node is producing.
Required=false
DisableIfBlank=true
[Output2Path]
Type=string
Label=Render Node 2 Path
Category=Output Settings
CategoryOrder=2
Index=14
Description=The output path and file name of the output files.
Required=false
DisableIfBlank=true
[Output2LeadingZero]
Type=integer
Label=Render Node 2 Leading Zeroes
Category=Output Settings
CategoryOrder=2
Minimum=0
Maximum=5
Index=15
Description=The number of leading zeroes for a 1 digit frame number. (1 less then the full padded length)
Required=false
DisableIfBlank=true
[Output2Format]
Type=string
Label=Render Node 2 Format
Category=Output Settings
CategoryOrder=2
Index=16
Description=The format for the rendered output images.
Required=false
DisableIfBlank=true
[Output2StartFrame]
Type=integer
Label=Render Node 2 Start Frame
Category=Output Settings
CategoryOrder=2
Minimum=1
Index=17
Description=The frame that will correspond to frame one when numbering. If this value is not 1 then the monitor's job output features will not work properly.
Required=false
DisableIfBlank=true
[Output3Node]
Type=string
Label=Render Node 3 Name
Category=Output Settings
CategoryOrder=2
Index=18
Description=The name of the render node.
Required=false
DisableIfBlank=true
[Output3Type]
Type=enum
Values=Image;Movie
Label=Render Node 3 Type
Category=Output Settings
CategoryOrder=2
Index=19
Description=The type of output that the render node is producing.
Required=false
DisableIfBlank=true
[Output3Path]
Type=string
Label=Render Node 3 Path
Category=Output Settings
CategoryOrder=2
Index=20
Description=The output path and file name of the output files.
Required=false
DisableIfBlank=true
[Output3LeadingZero]
Type=integer
Label=Render Node 3 Leading Zeroes
Category=Output Settings
CategoryOrder=2
Minimum=0
Maximum=5
Index=21
Description=The number of leading zeroes for a 1 digit frame number. (1 less then the full padded length)
Required=false
DisableIfBlank=true
[Output3Format]
Type=string
Label=Render Node 3 Format
Category=Output Settings
CategoryOrder=2
Index=22
Description=The format for the rendered output images.
Required=false
DisableIfBlank=true
[Output3StartFrame]
Type=integer
Label=Render Node 3 Start Frame
Category=Output Settings
CategoryOrder=2
Minimum=1
Index=23
Description=The frame that will correspond to frame one when numbering. If this value is not 1 then the monitor's job output features will not work properly.
Required=false
DisableIfBlank=true
[Output4Node]
Type=string
Label=Render Node 4 Name
Category=Output Settings
CategoryOrder=2
Index=24
Description=The name of the render node.
Required=false
DisableIfBlank=true
[Output4Type]
Type=enum
Values=Image;Movie
Label=Render Node 4 Type
Category=Output Settings
CategoryOrder=2
Index=25
Description=The type of output that the render node is producing.
Required=false
DisableIfBlank=true
[Output4Path]
Type=string
Label=Render Node 4 Path
Category=Output Settings
CategoryOrder=2
Index=26
Description=The output path and file name of the output files.
Required=false
DisableIfBlank=true
[Output4LeadingZero]
Type=integer
Label=Render Node 4 Leading Zeroes
Category=Output Settings
CategoryOrder=2
Minimum=0
Maximum=5
Index=27
Description=The number of leading zeroes for a 1 digit frame number. (1 less then the full padded length)
Required=false
DisableIfBlank=true
[Output4Format]
Type=string
Label=Render Node 4 Format
Category=Output Settings
CategoryOrder=2
Index=28
Description=The format for the rendered output images.
Required=false
DisableIfBlank=true
[Output4StartFrame]
Type=integer
Label=Render Node 4 Start Frame
Category=Output Settings
CategoryOrder=2
Minimum=1
Index=29
Description=The frame that will correspond to frame one when numbering. If this value is not 1 then the monitor's job output features will not work properly.
Required=false
DisableIfBlank=true
[Output5Node]
Type=string
Label=Render Node 5 Name
Category=Output Settings
CategoryOrder=2
Index=30
Description=The name of the render node.
Required=false
DisableIfBlank=true
[Output5Type]
Type=enum
Values=Image;Movie
Label=Render Node 5 Type
Category=Output Settings
CategoryOrder=2
Index=31
Description=The type of output that the render node is producing.
Required=false
DisableIfBlank=true
[Output5Path]
Type=string
Label=Render Node 5 Path
Category=Output Settings
CategoryOrder=2
Index=32
Description=The output path and file name of the output files.
Required=false
DisableIfBlank=true
[Output5LeadingZero]
Type=integer
Label=Render Node 5 Leading Zeroes
Category=Output Settings
CategoryOrder=2
Minimum=0
Maximum=5
Index=33
Description=The number of leading zeroes for a 1 digit frame number. (1 less then the full padded length)
Required=false
DisableIfBlank=true
[Output5Format]
Type=string
Label=Render Node 5 Format
Category=Output Settings
CategoryOrder=2
Index=34
Description=The format for the rendered output images.
Required=false
DisableIfBlank=true
[Output5StartFrame]
Type=integer
Label=Render Node 5 Start Frame
Category=Output Settings
CategoryOrder=2
Minimum=1
Index=35
Description=The frame that will correspond to frame one when numbering. If this value is not 1 then the monitor's job output features will not work properly.
Required=false
DisableIfBlank=true

View file

@ -0,0 +1,80 @@
[About]
Type=label
Label=About
Category=About Plugin
CategoryOrder=-1
Index=0
Default=Harmony Render Plugin for Deadline
Description=Not configurable
[ConcurrentTasks]
Type=label
Label=ConcurrentTasks
Category=About Plugin
CategoryOrder=-1
Index=0
Default=True
Description=Not configurable
[Harmony_RenderExecutable_10]
Type=multilinemultifilename
Category=Render Executables
CategoryOrder=0
Index=0
Label=Harmony 10 Render Executable
Description=The path to the Harmony Render executable file used for rendering. Enter alternative paths on separate lines.
Default=C:\Program Files (x86)\Toon Boom Animation\Toon Boom Harmony 10.0\win64\bin\Stage.exe
[Harmony_RenderExecutable_11]
Type=multilinemultifilename
Category=Render Executables
CategoryOrder=0
Index=1
Label=Harmony 11 Render Executable
Description=The path to the Harmony Render executable file used for rendering. Enter alternative paths on separate lines.
Default=C:\Program Files (x86)\Toon Boom Animation\Toon Boom Harmony 11.0\win64\bin\Stage.exe
[Harmony_RenderExecutable_12]
Type=multilinemultifilename
Category=Render Executables
CategoryOrder=0
Index=2
Label=Harmony 12 Render Executable
Description=The path to the Harmony Render executable file used for rendering. Enter alternative paths on separate lines.
Default=C:\Program Files (x86)\Toon Boom Animation\Toon Boom Harmony 12.0 Premium\win64\bin\HarmonyPremium.exe;/Applications/Toon Boom Harmony 12.0 Premium/Harmony Premium.app/Contents/MacOS/Harmony Premium;/usr/local/ToonBoomAnimation/harmonyPremium_12/lnx86_64/bin/HarmonyPremium
[Harmony_RenderExecutable_14]
Type=multilinemultifilename
Category=Render Executables
CategoryOrder=0
Index=3
Label=Harmony 14 Render Executable
Description=The path to the Harmony Render executable file used for rendering. Enter alternative paths on separate lines.
Default=C:\Program Files (x86)\Toon Boom Animation\Toon Boom Harmony 14.0 Premium\win64\bin\HarmonyPremium.exe;/Applications/Toon Boom Harmony 14.0 Premium/Harmony Premium.app/Contents/MacOS/Harmony Premium;/usr/local/ToonBoomAnimation/harmonyPremium_14/lnx86_64/bin/HarmonyPremium
[Harmony_RenderExecutable_15]
Type=multilinemultifilename
Category=Render Executables
CategoryOrder=0
Index=4
Label=Harmony 15 Render Executable
Description=The path to the Harmony Render executable file used for rendering. Enter alternative paths on separate lines.
Default=C:\Program Files (x86)\Toon Boom Animation\Toon Boom Harmony 15.0 Premium\win64\bin\HarmonyPremium.exe;/Applications/Toon Boom Harmony 15.0 Premium/Harmony Premium.app/Contents/MacOS/Harmony Premium;/usr/local/ToonBoomAnimation/harmonyPremium_15.0/lnx86_64/bin/HarmonyPremium
[Harmony_RenderExecutable_17]
Type=multilinemultifilename
Category=Render Executables
CategoryOrder=0
Index=4
Label=Harmony 17 Render Executable
Description=The path to the Harmony Render executable file used for rendering. Enter alternative paths on separate lines.
Default=c:\Program Files (x86)\Toon Boom Animation\Toon Boom Harmony 17 Premium\win64\bin\HarmonyPremium.exe;/Applications/Toon Boom Harmony 17 Premium/Harmony Premium.app/Contents/MacOS/Harmony Premium;/usr/local/ToonBoomAnimation/harmonyPremium_17/lnx86_64/bin/HarmonyPremium
[Harmony_RenderExecutable_20]
Type=multilinemultifilename
Category=Render Executables
CategoryOrder=0
Index=4
Label=Harmony 20 Render Executable
Description=The path to the Harmony Render executable file used for rendering. Enter alternative paths on separate lines.
Default=c:\Program Files (x86)\Toon Boom Animation\Toon Boom Harmony 20 Premium\win64\bin\HarmonyPremium.exe;/Applications/Toon Boom Harmony 20 Premium/Harmony Premium.app/Contents/MacOS/Harmony Premium;/usr/local/ToonBoomAnimation/harmonyPremium_20/lnx86_64/bin/HarmonyPremium

View file

@ -0,0 +1,149 @@
from System import *
from System.Diagnostics import *
from System.IO import *
from System.Text import *
from Deadline.Plugins import *
from Deadline.Scripting import *
def GetDeadlinePlugin():
return HarmonyOpenPypePlugin()
def CleanupDeadlinePlugin( deadlinePlugin ):
deadlinePlugin.Cleanup()
class HarmonyOpenPypePlugin( DeadlinePlugin ):
def __init__( self ):
self.InitializeProcessCallback += self.InitializeProcess
self.RenderExecutableCallback += self.RenderExecutable
self.RenderArgumentCallback += self.RenderArgument
self.CheckExitCodeCallback += self.CheckExitCode
def Cleanup( self ):
print("Cleanup")
for stdoutHandler in self.StdoutHandlers:
del stdoutHandler.HandleCallback
del self.InitializeProcessCallback
del self.RenderExecutableCallback
del self.RenderArgumentCallback
def CheckExitCode( self, exitCode ):
print("check code")
if exitCode != 0:
if exitCode == 100:
self.LogInfo( "Renderer reported an error with error code 100. This will be ignored, since the option to ignore it is specified in the Job Properties." )
else:
self.FailRender( "Renderer returned non-zero error code %d. Check the renderer's output." % exitCode )
def InitializeProcess( self ):
self.PluginType = PluginType.Simple
self.StdoutHandling = True
self.PopupHandling = True
self.AddStdoutHandlerCallback( "Rendered frame ([0-9]+)" ).HandleCallback += self.HandleStdoutProgress
def HandleStdoutProgress( self ):
startFrame = self.GetStartFrame()
endFrame = self.GetEndFrame()
if( endFrame - startFrame + 1 != 0 ):
self.SetProgress( 100 * ( int(self.GetRegexMatch(1)) - startFrame + 1 ) / ( endFrame - startFrame + 1 ) )
def RenderExecutable( self ):
version = int( self.GetPluginInfoEntry( "Version" ) )
exe = ""
exeList = self.GetConfigEntry( "Harmony_RenderExecutable_" + str(version) )
exe = FileUtils.SearchFileList( exeList )
if( exe == "" ):
self.FailRender( "Harmony render executable was not found in the configured separated list \"" + exeList + "\". The path to the render executable can be configured from the Plugin Configuration in the Deadline Monitor." )
return exe
def RenderArgument( self ):
renderArguments = "-batch"
if self.GetBooleanPluginInfoEntryWithDefault( "UsingResPreset", False ):
resName = self.GetPluginInfoEntryWithDefault( "ResolutionName", "HDTV_1080p24" )
if resName == "Custom":
renderArguments += " -res " + self.GetPluginInfoEntryWithDefault( "PresetName", "HDTV_1080p24" )
else:
renderArguments += " -res " + resName
else:
resolutionX = self.GetIntegerPluginInfoEntryWithDefault( "ResolutionX", -1 )
resolutionY = self.GetIntegerPluginInfoEntryWithDefault( "ResolutionY", -1 )
fov = self.GetFloatPluginInfoEntryWithDefault( "FieldOfView", -1 )
if resolutionX > 0 and resolutionY > 0 and fov > 0:
renderArguments += " -res " + str( resolutionX ) + " " + str( resolutionY ) + " " + str( fov )
camera = self.GetPluginInfoEntryWithDefault( "Camera", "" )
if not camera == "":
renderArguments += " -camera " + camera
startFrame = str( self.GetStartFrame() )
endFrame = str( self.GetEndFrame() )
renderArguments += " -frames " + startFrame + " " + endFrame
if not self.GetBooleanPluginInfoEntryWithDefault( "IsDatabase", False ):
sceneFilename = self.GetPluginInfoEntryWithDefault( "SceneFile", self.GetDataFilename() )
sceneFilename = RepositoryUtils.CheckPathMapping( sceneFilename )
renderArguments += " \"" + sceneFilename + "\""
else:
environment = self.GetPluginInfoEntryWithDefault( "Environment", "" )
renderArguments += " -env " + environment
job = self.GetPluginInfoEntryWithDefault( "Job", "" )
renderArguments += " -job " + job
scene = self.GetPluginInfoEntryWithDefault( "SceneName", "" )
renderArguments += " -scene " + scene
version = self.GetPluginInfoEntryWithDefault( "SceneVersion", "" )
renderArguments += " -version " + version
#tempSceneDirectory = self.CreateTempDirectory( "thread" + str(self.GetThreadNumber()) )
#preRenderScript =
rendernodeNum = 0
scriptBuilder = StringBuilder()
while True:
nodeName = self.GetPluginInfoEntryWithDefault( "Output" + str( rendernodeNum ) + "Node", "" )
if nodeName == "":
break
nodeType = self.GetPluginInfoEntryWithDefault( "Output" + str( rendernodeNum ) + "Type", "Image" )
if nodeType == "Image":
nodePath = self.GetPluginInfoEntryWithDefault( "Output" + str( rendernodeNum ) + "Path", "" )
nodeLeadingZero = self.GetPluginInfoEntryWithDefault( "Output" + str( rendernodeNum ) + "LeadingZero", "" )
nodeFormat = self.GetPluginInfoEntryWithDefault( "Output" + str( rendernodeNum ) + "Format", "" )
nodeStartFrame = self.GetPluginInfoEntryWithDefault( "Output" + str( rendernodeNum ) + "StartFrame", "" )
if not nodePath == "":
scriptBuilder.AppendLine("node.setTextAttr( \"" + nodeName + "\", \"drawingName\", 1, \"" + nodePath + "\" );")
if not nodeLeadingZero == "":
scriptBuilder.AppendLine("node.setTextAttr( \"" + nodeName + "\", \"leadingZeros\", 1, \"" + nodeLeadingZero + "\" );")
if not nodeFormat == "":
scriptBuilder.AppendLine("node.setTextAttr( \"" + nodeName + "\", \"drawingType\", 1, \"" + nodeFormat + "\" );")
if not nodeStartFrame == "":
scriptBuilder.AppendLine("node.setTextAttr( \"" + nodeName + "\", \"start\", 1, \"" + nodeStartFrame + "\" );")
if nodeType == "Movie":
nodePath = self.GetPluginInfoEntryWithDefault( "Output" + str( rendernodeNum ) + "Path", "" )
if not nodePath == "":
scriptBuilder.AppendLine("node.setTextAttr( \"" + nodeName + "\", \"moviePath\", 1, \"" + nodePath + "\" );")
rendernodeNum += 1
tempDirectory = self.CreateTempDirectory( "thread" + str(self.GetThreadNumber()) )
preRenderScriptName = Path.Combine( tempDirectory, "preRenderScript.txt" )
File.WriteAllText( preRenderScriptName, scriptBuilder.ToString() )
preRenderInlineScript = self.GetPluginInfoEntryWithDefault( "PreRenderInlineScript", "" )
if preRenderInlineScript:
renderArguments += " -preRenderInlineScript \"" + preRenderInlineScript +"\""
renderArguments += " -preRenderScript \"" + preRenderScriptName +"\""
return renderArguments