Interview with MachStudio Pro

In the interview talk about MSP’s image quality, hardware req. and how the software is being used from arch viz, to high end VFX.div class=”feedflare”
a href=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?a=xjP9e68wyzQ:NgpitGHmxp8:yIl2AUoC8zA”img src=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?d=yIl2AUoC8zA” border=”0″/img/a a href=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?a=xjP9e68wyzQ:NgpitGHmxp8:7Q72WNTAKBA”img src=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?d=7Q72WNTAKBA” border=”0″/img/a a href=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?a=xjP9e68wyzQ:NgpitGHmxp8:V_sGLiPBpWU”img src=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?i=xjP9e68wyzQ:NgpitGHmxp8:V_sGLiPBpWU” border=”0″/img/a a href=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?a=xjP9e68wyzQ:NgpitGHmxp8:qj6IDK7rITs”img src=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?d=qj6IDK7rITs” border=”0″/img/a a href=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?a=xjP9e68wyzQ:NgpitGHmxp8:gIN9vFwOqvQ”img src=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?i=xjP9e68wyzQ:NgpitGHmxp8:gIN9vFwOqvQ” border=”0″/img/a
/divimg src=”http://feeds.feedburner.com/~r/Cgarena-GetAttentionInCG/~4/xjP9e68wyzQ” height=”1″ width=”1″/

The Secret Mission of the Terminator

Watch the Apple / Microsoft spoof short, ”The Secret Mission of the Terminator.” Never help the terminator again…div class=”feedflare”
a href=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?a=goLyoz8soLA:n078HmB4ELc:yIl2AUoC8zA”img src=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?d=yIl2AUoC8zA” border=”0″/img/a a href=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?a=goLyoz8soLA:n078HmB4ELc:7Q72WNTAKBA”img src=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?d=7Q72WNTAKBA” border=”0″/img/a a href=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?a=goLyoz8soLA:n078HmB4ELc:V_sGLiPBpWU”img src=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?i=goLyoz8soLA:n078HmB4ELc:V_sGLiPBpWU” border=”0″/img/a a href=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?a=goLyoz8soLA:n078HmB4ELc:qj6IDK7rITs”img src=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?d=qj6IDK7rITs” border=”0″/img/a a href=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?a=goLyoz8soLA:n078HmB4ELc:gIN9vFwOqvQ”img src=”http://feeds.feedburner.com/~ff/Cgarena-GetAttentionInCG?i=goLyoz8soLA:n078HmB4ELc:gIN9vFwOqvQ” border=”0″/img/a
/divimg src=”http://feeds.feedburner.com/~r/Cgarena-GetAttentionInCG/~4/goLyoz8soLA” height=”1″ width=”1″/

Escape Studios vs. VanArts

I am interested in learning VFX. I applied and got accepted into VanArts for their September term. However, after further research I came across Escape Studios. They seem to teach their professional course in just 18 weeks whereas VanArts takes a year.
I am confused as to which is better in terms of learning and job opportunities.
Would be really glad if anyone could help me out with this. Thanks

VFX Artist (Games)

Are you an exceptional VFX artist with a flair for the big projects? Fancy a break from the mould of your current job and work for the most innovative interactive (Games) studio in the UK?

We are looking for an exceptional candidate to work as a Visual Effects Artist within our studio. The candidate should have a deep knowledge and production experience of creating real time visual effects for games. This should be supported by a strong overall artistic ability in the area of 3D art production.

Their role will include the production of VFX and art assets to support existing and new IP’s in the Studio; working closely with the Art Director, technical artists, and programmers on delivering assets that fit the gameplay requirements.
Responsibilities:
– Prototyping and creating Visual Effects for real-time use in games
– Use commercial and proprietary in house tools to create highly polished particle effects and 3D art assets with minimum supervision
– Collaborate with the Art Director to produce VFX and other art assets that fit the project and franchise style
– Proactively recognise problems and troubleshoot solutions
– Work with Programming, Design, and Technical Art team to ensure VFX and art assets properly fit the game play requirements
– Deliver content on schedule and within any technical/budget limitations
– Mentor less experienced artists

Required Skills:
– Knowledge and experience of creating particle effects
– Ability to create both Photoreal and non-Photoreal Visual Effects.
– Strong understanding of timing & animation
– Strong overall artistic ability (composition, colour, 3D modelling, texturing etc.) and an understanding of general artistic aesthetics
– Clear technical understanding of all aspects of the art production pipeline
– Good knowledge of lighting principals and application to CG
– Experience with high end CG Effects system utilizing particle systems, dynamics, and procedural animation (e.g., Maya, Houdini, MAX, etc.) is a huge advantage
– Knowledge and experience of industry standard 2D package (Photoshop) for generation of particle specific textures
– Ability to model rapidly and accurately from concept art
– Shader writing knowledge is a benefit
– Rigging knowledge & experience also a benefit
– Ability to learn fast, take initiative with assigned tasks and follow through creative and technical troubleshooting
– Efficient, reliable, self motivated, passionate about Art and VFX
– Excellent organizational, communication, and interpersonal skills.
– Work well under deadlines and multi-tasks.
View Document

Skills
Maya
Maya MEL
Modelling
Photoshop (or equivalent)
Python Scripting
Rendering (Game Rendering)
Rendering (Maya)
Shader Language (Cg)
Texturing
Visual Effects

robert.clarkin@amiqus.com

3D FX Artist – (Games)

3D FX Artist
Position Overview
We are looking for an exceptionally skilled and motivated team-player with a proven track record (or serious raw talent). The right candidate should be able to demonstrate excellent creative, technical and visual skill. They will be an accomplished Artist with a passion for visual effects with the ability to produce high quality, efficient, game content including full screen and post process effects, spot effects, particle systems and atmospherics.

As well as the ‘industry standard’ software, they will be working with and help develop proprietary tools in both 2d and 3d environments.

Required:
Visual flare and talent
Experience with FX design and creation
Expert knowledge of Max
Expert knowledge of Photoshop & After Effects
Knowledge of working with physics middleware
Self motivated, good communicator, good attitude, team-player
Love of visual FX

Ideal:
Proven experience implementing game visual effects
Formal art training
All round Art ability
Love of games

robert.clarkin@amiqus.com

XSI – VFX – London

XSI – VFX
Amiqus currently has an emergency requirement for an XSI VFX specialist to work in Soho London. The role will be to work on several high profile commercials over the next couple of months and is an immediate start for the right candidate please get in touch if you are available. robert.clarkin@amiqus.com

Mao’s Last Dancer

Rising Sun Picture’s visual effects for Mao’s Last Dancer

Backdrop_21

Bruce Beresford’s Mao’s Last Dancer, the story of a poor
Chinese boy’s journey to a top American ballet troupe, features just
over 70 visual effects shots from Rising Sun Pictures, including
traditional greenscreen composites, a matte painted stage backdrop and
crowd replication. In this interview for fxguide, I talk about the seamless work with visual effects
supervisor Tim Crosbie.

Network Render?

I have 18 units of Dell Optiplex 380 (they are all identiccal and each equipped with a 2.93 GHz Cpu and 2GB RAM). I will/have a Dell Precision T3500 (3.2Ghz and 12GB RAM). When it comes to rendering scenes (using MentalRay or RenderMan) which will be faster:

a) Rendering on Dell Precision

b) Rendering on the network

thanks your for your help in advance..

camcorder options

hi I’m looking towards getting a high quality camcorder for VFX but dont know what to get, I’m looking for a good all rounder.
Something that shoots at HD 1920×1080 with no jerky footage and noise. Also want something thats good in low light and outdoor shots.
Budget around AU$1,500.00

Some say I should go for the Sony HDR-XR150E, but what are your opinions.

Thanks.

Submit nuke to Deadline script problem

When I submit nuke job to Deadline, all the normal submission process, the job can be submitted to the normal rendering work. However, after the completion of each submission, nuke menu will pop up an error:

Code:

---------------------------
Nuke
---------------------------
C:/Program Files/Nuke5.2v3/plugins/SubmitNukeToDeadline.tcl: plugin did not define SubmitNukeToDeadline
---------------------------
Traceback(most recent call last):C:/Program Files/Nuke5.2v3/plugins/SubmitNukeToDeadline.tcl:plugin did not define SubmitNukeToDeadline
RuntimeError:
---------------------------


I use Deadline 3.1 and nuke 5.2v3(64bit), win xp bit

he error has no practical impact, but the error pops up every time people do not feel at ease

How to get rid of the error!!

I do not know how this is going on
Any help appreciated

SubmitNukeToDeadline.tcl

Code:

###########################################################
# SubmitNukeToDeadline.tcl
# Ryan Russell (Prime Focus), 2006
#
# Integrated Nuke tcl script to submit jobs to Deadline.
###########################################################
###########################################################
# Helper Procedures
###########################################################
# Opposite of incr.
proc decr {varName {decrement 1}} {
 upvar 1 $varName var
 incr var [expr {-$decrement}]
}
# Checks if the value is a valid Integer.
proc IsInteger { value } {
 if { [regexp {^[0-9]+$} $value] > 0 } {
  return true
 }
 return false
}
# Checks if the value is a valid Boolean.
proc IsBoolean { value } {
 set value [string tolower $value]
 if { [string compare $value "0"] == 0 || [string compare $value "1"] == 0 || [string compare $value "true"] == 0 || [string compare $value "false"] == 0 } {
  return true
 }
 return false
}
# Checks if the given filename ends with a movie extension
proc IsMovie { path } {
 set ext [file extension $path]
 if {[string compare -nocase $ext ".mov"] == 0} {
  return true
 }
 return false
}
# Gets the chunk size that is required if submitting a movie job.
proc GetChunkSize { defaultValue } {
 set theNodes [nodes]
 foreach node $theNodes {
  if {[class $node] == "Write" && [knob $node.disable] != true } {
  if {[IsMovie [filename $node]]} {
    return 1000000
  }
  }
 }
 return $defaultValue
}
# Gets the chunk size that is required for a particular write node.
proc GetChunkSizeForWriteNode { writeNodeName defaultValue } {
 set theNodes [nodes]
 foreach node $theNodes {
  if {[class $node] == "Write" && [knob $node.name] == $writeNodeName } {
  if {[IsMovie [filename $node]]} {
    return 1000000
  }
  return $defaultValue
  }
 }
 return $defaultValue
}
# Checks if path is local (c, d, or e drive).
proc IsPathLocal { path } {
 if {[string compare -nocase -length 2 $path "c:"] == 0 || [string compare -nocase -length 2 $path "d:"] == 0 || [string compare -nocase -length 2 $path "e:"] == 0 } {
  return true
 }
 return false
}
# Checks if the filename is padded (ie: \\output\path\filename_%04.tga).
proc IsFilenamePadded { filename } {
 if {[regexp "\%(\[0-9\]+)d" $filename match count] == 1} {
  return true
 }
 return false
}
# Parses through the filename looking for the first padded pattern, replaces
# it with the correct number of #'s, and returns the new padded filename.
proc GetPaddedFilename { filename } {
 # Only the first pattern is replaced by Nuke.
 if {[regexp "\%(\[0-9\]+)d" $filename match count] == 1} {
  # Removes any leading zeros.
  incr count 0
 
  # Create the padding string.
  set padding ""
  while {$count > 0} {
  set padding "$padding#"
  decr count
  }
 
  # Replace the pattern with the padded string.
  regsub "\%\[0-9\]+d" $filename $padding filename
 }
 
 # Return the padded filename.
 return $filename
}
# Check all the paths and warn user if any are local or not padded.
proc CheckFilePaths { submitScript } {
 set theNodes [nodes]
 set warningMessages ""
 
 # Warn if there are no outputs.
 set outputCount 0
 foreach node $theNodes {
  if {[class $node] == "Write" && [knob $node.disable] != true } {
  incr outputCount
  }
 }
 if {$outputCount == 0} {
  set warning "THERE ARE NO ENABLED WRITE NODES !!"
  set warningMessages $warningMessages$warning
 }
 # Check all the output filenames if they are local or not padded (non-movie files only).
 foreach node $theNodes {
  if {[class $node] == "Write" && [knob $node.disable] != true } {
  if {[IsPathLocal [filename $node]]} {
    set warning "Output path \"[filename $node]\" is local.\n"
    set warningMessages $warningMessages$warning
  }
 
  if {![IsMovie [filename $node]] && ![IsFilenamePadded [filename $node]]} {
    set warning "Output path \"[filename $node]\" is not padded.\n"
    set warningMessages $warningMessages$warning
  }
  }
 }
 # Check if the script file is local and not being submitted to Deadline.
 if {! $submitScript} {
  if {[IsPathLocal [knob root.name]]} {
  set warning "Script path \"[knob root.name]\" is local and is not being submitted to Deadline.\n"
  set warningMessages $warningMessages$warning
  }
 }
 
 # If there are any warning messages, show them to the user.
 if {[string length $warningMessages] > 0 } {
  if {[catch {
  panel "Submission Warnings" {
    {Warnings: warningMessages n }
    {"Do you still wish to submit this job to Deadline?"}
  }
  } result]} {
  return false
  }
 }
 
 return true
}
# Gets a Deadline array and returns them it as a string
proc GetDeadlineArrayString { argument } {
 global env
 global WIN32
 
 set tempPath ""
 if {$WIN32} {
  set tempPath $env(TEMP)
 } else {
  set tempPath "/tmp"
 }
 
 set outputFilename "$tempPath/output.txt"
 set exitCodeFilename "$tempPath/exitCode.txt"
 # Query Deadline.
 #exec "deadlinecommandbg" "-outputFiles" $outputFilename $exitCodeFilename $argument
 if {[file exists "/Applications/Deadline/Resources/bin/deadlinecommandbg"] == 1} {
  exec "/Applications/Deadline/Resources/bin/deadlinecommandbg" "-outputFiles" $outputFilename $exitCodeFilename $argument
 } else {
  exec "deadlinecommandbg" "-outputFiles" $outputFilename $exitCodeFilename $argument
 }
 
 # Open the file and read in the results.
 set arrayString ""
 catch {set fileid [open $outputFilename r]}
 while {[gets $fileid line] >= 0} {
  set arrayString [concat $arrayString "\"$line\""]
 }
 close $fileid
 
 # Return the array string.
 return $arrayString
}
# Get the settings config filename.
proc GetSettingsFilename {} {
 global env
 global WIN32
 
 set tempPath ""
 if {$WIN32} {
  set tempPath $env(TEMP)
 } else {
  set tempPath "/tmp"
 }
 
 set outputFilename "$tempPath/output.txt"
 set exitCodeFilename "$tempPath/exitCode.txt"
 # Query Deadline.
 #exec "deadlinecommandbg" "-outputFiles" $outputFilename $exitCodeFilename "-getsettingsdirectory"
 if {[file exists "/Applications/Deadline/Resources/bin/deadlinecommandbg"] == 1} {
  exec "/Applications/Deadline/Resources/bin/deadlinecommandbg" "-outputFiles" $outputFilename $exitCodeFilename "-getsettingsdirectory"
 } else {
  exec "deadlinecommandbg" "-outputFiles" $outputFilename $exitCodeFilename "-getsettingsdirectory"
 }
 
 # Open the file and read the first line.
 catch {set fileid [open $outputFilename r]}
 gets $fileid settingsRoot
 close $fileid
 
 set settingsFilename [file join $settingsRoot "NukeDeadlineConfig.ini"]
 return $settingsFilename
}
###########################################################
# Main Script
###########################################################
# Some global variables.
global env
global nuke_version_major
global WIN32
set tempPath ""
if {$WIN32} {
 set tempPath $env(TEMP)
} else {
 set tempPath "/tmp"
}
 
# Save the file in case the user hasn't done it.
script_save [knob root.name]
# Filenames to use.
set outputFilename "$tempPath/output.txt"
set exitCodeFilename "$tempPath/exitCode.txt"
set submitInfoFile "$tempPath/nuke_submit_info.job"
set pluginInfoFile "$tempPath/nuke_plugin_info.job"
set deadlineTempTclFile "$tempPath/TempSubmitToDeadline.tcl"
set deadlineConfigFile [GetSettingsFilename]
# Get the nodes.
set theNodes [nodes]
# Get the Deadline arrays.
set groups [GetDeadlineArrayString "-groups"]
set pools [GetDeadlineArrayString "-pools"]
set onJobCompletes ""
set onJobCompletes [concat $onJobCompletes "\"Nothing\""]
set onJobCompletes [concat $onJobCompletes "\"Archive\""]
set onJobCompletes [concat $onJobCompletes "\"Delete\""]
set builds ""
set builds [concat $builds "\"None\""]
set builds [concat $builds "\"32bit\""]
set builds [concat $builds "\"64bit\""]
# Set the job name and frame range default values.
set jobName [file tail [knob root.name]]
set frames "[knob root.first_frame]-[knob root.last_frame]"
# Set the other default values.
set comment ""
set taskTimeout "0"
set threadCount 0
set ramUsage 0
# Set the default for these sticky settings.
set department ""
set group "none"
set pool "none"
set build "None"
set priority "50"
set machineLimit "0"
set chunkSize 1
set submitSuspended false
set onJobComplete "Nothing"
set submitScript 1
set separateJobs false
# Try to read in the sticky settings.
catch {
 set fileid [open $deadlineConfigFile r]
 
 # First read in the sticky settings.
 gets $fileid initDepartment
 gets $fileid initGroup
 gets $fileid initPool
 gets $fileid initPriority
 gets $fileid initMachineLimit
 gets $fileid initChunkSize
 gets $fileid initSubmitSuspended
 gets $fileid initSubmitScript
 gets $fileid initLimitGroup
 gets $fileid initSeparateJobs
 close $fileid
 
 # Now set them if no error occurred while reading.
 set department $initDepartment
 set group $initGroup
 set pool $initPool
 set limitGroup $initLimitGroup
 
 if {[IsInteger $initPriority]} {
  set priority $initPriority
 }
 if {[IsInteger $initMachineLimit]} {
  set machineLimit $initMachineLimit
 }
 if {[IsInteger $initChunkSize]} {
  set chunkSize $initChunkSize
 }
 if {[IsBoolean $initSubmitSuspended]} {
  set submitSuspended $initSubmitSuspended
 }
 if {[IsBoolean $initSubmitScript]} {
  set submitScript $initSubmitScript
 }
 if {[IsBoolean $initSeparateJobs]} {
  set separateJobs $initSeparateJobs
 }
}
set errors true
while { $errors } {
 set errors false
 
 # Dynamically create the actual submission dialog. This was the only
 # way I could figure out to set the pools and group combo boxes.
 catch {set fileid [open $deadlineTempTclFile w]}
 puts $fileid "panel -w500 \"Submit Nuke To Deadline\" {"
 puts $fileid "  { \"Job Name\" jobName }"
 puts $fileid "  { \"Comment\" comment }"
 puts $fileid "  { \"Department\" department }"
 puts $fileid "  { \"Pool\" pool e { $pools } }"
 puts $fileid "  { \"Group\" group e { $groups } }"
 puts $fileid "  { \"Priority (0 to 100)\" priority x}"
 puts $fileid "  { \"Machine Limit (0 for no limit)\" machineLimit x}"
 puts $fileid "  { \"Task Timeout (0 for no timeout)\" taskTimeout x}"
 puts $fileid "  { \"Limit Groups (separate with commas)\" limitGroup }"
 puts $fileid "  { \"On Job Complete\" onJobComplete e { $onJobCompletes } }"
 puts $fileid "  { \"Submit As Suspended\" submitSuspended b }"
 puts $fileid "  { \"Frame List\" frames }"
 puts $fileid "  { \"Task Chunk Size (1 or greater)\" chunkSize x}"
 puts $fileid "  { \"Render Threads (0 to use default)\" threadCount x}"
 puts $fileid "  { \"Max RAM Usage (0 to use default)\" ramUsage x}"
 puts $fileid "  { \"Build\" build e { $builds } }"
 puts $fileid "  { \"Submit Each Write Node As A Separate Job\" separateJobs b }"
 puts $fileid "  { \"Submit Nuke Scene File\" submitScript b }"
 puts $fileid "}"
 close $fileid
 
 # Source the submission dialog script, and return if there is an error
 # or if the user cancels the dialog.
 if {[ catch {
  source $deadlineTempTclFile
 } ]} {
  return
 }
 
 # Check priority value.
 if {![IsInteger $priority]} {
  message "Priority value $priority is not a valid integer"
  set priority 50
  set errors true
 }
 if { $priority < 0 || $priority > 100 } {
  message "Priority value must be between 0 and 100 inclusive"
  set priority 50
  set errors true
 }
 
 # Check machine limit value.
 if {![IsInteger $machineLimit]} {
  message "Machine Limit value $machineLimit is not a valid integer"
  set machineLimit 0
  set errors true
 }
 
 # Check task timeout value.
 if {![IsInteger $taskTimeout]} {
  message "Task Timeout value $taskTimeout is not a valid integer"
  set taskTimeout 0
  set errors true
 }
 
 # Check task chunk size value.
 if {![IsInteger $chunkSize]} {
  message "Task Chunk Size value $chunkSize is not a valid integer"
  set chunkSize 1
  set errors true
 }
 if { $chunkSize < 1 } {
  message "Task Chunk Size must be greater than or equal to 1"
  set chunkSize 1
  set errors true
 }
 
 # Check render threads value.
 if {![IsInteger $threadCount]} {
  message "Render Threads value $threadCount is not a valid integer"
  set threadCount 0
  set errors true
 }
 
 # Check ram usage value.
 if {![IsInteger $ramUsage]} {
  message "Max RAM Usage value $ramUsage is not a valid integer"
  set ramUsage 0
  set errors true
 }
}
# Write all the sticky settings to the config file.
catch {set fileid [open $deadlineConfigFile w]}
puts $fileid "$department"
puts $fileid "$group"
puts $fileid "$pool"
puts $fileid "$priority"
puts $fileid "$machineLimit"
puts $fileid "$chunkSize"
puts $fileid "$submitSuspended"
puts $fileid "$submitScript"
puts $fileid "$limitGroup"
puts $fileid "$separateJobs"
close $fileid
# Check file paths.
if {![CheckFilePaths $submitScript]} {
 return
}
# Check if we should be submitting a separate job for each write node.
set resultsString ""
foreach node $theNodes {
 # Check if we should enter the loop for this node.
 set enterLoop false
 if {!$separateJobs} {
  set enterLoop true
 } elseif {[class $node] == "Write" && [knob $node.disable] != true} {
  set enterLoop true
 }
 
 if {$enterLoop} {
  # Get correct chunk size and job name.
  set tempJobName $jobName
  set tempChunkSize $chunkSize
  if {$separateJobs} {
  set writeNodeName [knob $node.name]
  set tempChunkSize [GetChunkSizeForWriteNode $writeNodeName $chunkSize]
  set tempJobName [concat $jobName " - $writeNodeName"]
  }
 
  # Create the submission info file.
  catch {set fileid [open $submitInfoFile w]}
  puts $fileid "Plugin=Nuke"
  puts $fileid "Name=$tempJobName"
  puts $fileid "Comment=$comment"
  puts $fileid "Department=$department"
  puts $fileid "Group=$group"
  puts $fileid "Pool=$pool"
  puts $fileid "Priority=$priority"
  puts $fileid "MachineLimit=$machineLimit"
  puts $fileid "TaskTimeoutMinutes=$taskTimeout"
  puts $fileid "OnJobComplete=$onJobComplete"
  puts $fileid "Frames=$frames"
  puts $fileid "ChunkSize=$tempChunkSize"
  puts $fileid "LimitGroups=$limitGroup"
 
  # Check if the job should be submitted as suspended.
  if {$submitSuspended} {
  puts $fileid "InitialStatus=Suspended"
  }
 
  if {!$separateJobs} {
  # Add all the padded output filenames - and create the output directory.
  set index 0
  foreach tempNode $theNodes {
    if {[class $tempNode] == "Write" && [knob $tempNode.disable] != true } {
    file mkdir [file dirname [filename $tempNode]]
    set outputfile [GetPaddedFilename [filename $tempNode]]
    puts $fileid "OutputFilename$index=$outputfile"
    incr index
    }
  }
  } else {
  file mkdir [file dirname [filename $node]]
  set outputfile [GetPaddedFilename [filename $node]]
  puts $fileid "OutputFilename0=$outputfile"
  }
 
  close $fileid
 
  # Create the plugin info file.
  catch {set fileid [open $pluginInfoFile w]}
  puts $fileid "Version=$nuke_version_major"
  puts $fileid "Build=$build"
  puts $fileid "Threads=$threadCount"
  puts $fileid "RamUse=$ramUsage"
  if {$separateJobs} {
  set writeNodeName [knob $node.name]
  puts $fileid "WriteNode=$writeNodeName"
  }
  if {!$submitScript} {
  puts $fileid "SceneFile=[knob root.name]"
  }
  close $fileid
 
  # Submit the job to Deadline.
  catch {
  if {$submitScript} {
    if {[file exists "/Applications/Deadline/Resources/bin/deadlinecommandbg"] == 1} {
    exec "/Applications/Deadline/Resources/bin/deadlinecommandbg" "-outputFiles" $outputFilename $exitCodeFilename $submitInfoFile $pluginInfoFile [knob root.name]
    } else {
    exec "deadlinecommandbg" "-outputFiles" $outputFilename $exitCodeFilename $submitInfoFile $pluginInfoFile [knob root.name]
    }
  } else {
    if {[file exists "/Applications/Deadline/Resources/bin/deadlinecommandbg"] == 1} {
    exec "/Applications/Deadline/Resources/bin/deadlinecommandbg" "-outputFiles" $outputFilename $exitCodeFilename $submitInfoFile $pluginInfoFile
    } else {
    exec "deadlinecommandbg" "-outputFiles" $outputFilename $exitCodeFilename $submitInfoFile $pluginInfoFile
    }
  }
  }
 
  # Append the results.
  catch {set fileid [open $outputFilename r]}
  set tempResultsString [read $fileid]
  close $fileid
  set resultsString [concat $resultsString "$tempResultsString\n\n"]
 
  # If we're only submitting one job, then break here.
  if {!$separateJobs} {
  break
  }
 }
}
# Show the results to the user.
message $resultsString