Request: Cinema 4D R23 Submission Plugin

Hello

Is it possible to get a submission plugin for C4D R23 ?

Tried to copy the one from R21, at it didn’t work.

1 Like

try copying the S/R22 version from 10.1.9.2

don’t have r23 yet but it’s more likely to work

Also would like to get some sort of “official” R23 submission plugin or confirmation from devs that it should work good.
I will test the S22 submission script and report back if it works.

Hey guys,

Have tried the R22 plugins from Deadline v10.1.9.2 in R23 and getting the following error -

Traceback (most recent call last):
  File "C:\Program Files\Maxon Cinema 4D R23\plugins\DeadlineC4DClient.pyp", line 80, in <module>
main()
  File "C:\Program Files\Maxon Cinema 4D R23\plugins\DeadlineC4DClient.pyp", line 57, in main
if path.startswith( "Error:" ):
TypeError:startswith first arg must be bytes or a tuple of bytes, not str

Any quick fixes for this?

Thanks very much

Hi Will,

Got the same issue, I only changed the following 2 files
C:\DeadlineRepository10\scripts\Submission\Cinema4DSubmission.py
(added ‘23’ onto line 27)

Added this to
C:\DeadlineRepository10\plugins\Cinema4D\Cinema4D.param
(and the batch plugin)

[C4D_23_RenderExecutable]
Label=C4D 23 Executable
Category=Render Executables
CategoryOrder=0
Index=14
Type=multilinemultifilename
Default=C:\Program Files\Maxon Cinema 4D R23\Commandline.exe;/Applications/MAXON/CINEMA 4D R23/Commandline.app/Contents/MacOS/Commandline;C:\Program Files\Maxon\CINEMA 4D R22\CINEMA 4D.exe;/Applications/MAXON/CINEMA 4D R22/CINEMA 4D.app/Contents/MacOS/CINEMA 4D
Description=The path to the Cinema 4D executable file used for rendering. Enter alternative paths on separate lines.

The PYP file has this around the error

def main():
    # Get the repository path
    path = GetRepositoryPath( "submission/Cinema4D/Main" ).strip()
    if path.startswith( "Error:" ):
        print( path )
    elif path != "":
        path = path.replace( "\\", "/" )

I’m not sure why this line breaks it…

if path.startswith( “Error:” ):

I think this is a Python 3/2 thing

If I modify the code to read as so… (changing path. to str(path).)

def main():
    # Get the repository path
    path = GetRepositoryPath( "submission/Cinema4D/Main" ).strip()
    if str(path).startswith( "Error:" ):
        print( path )
    elif path != "":
        path = str(path).replace( "\\", "/" )

Then it fails further down

Appending "b'////scala//DeadlineRepository10//submission/Cinema4D/Main'" to system path to import SubmitC4DToDeadline module
Traceback (most recent call last):
  File "C:\Program Files\Maxon Cinema 4D R23\plugins\DeadlineC4DClient.pyp", line 66, in main
    import SubmitC4DToDeadline
ModuleNotFoundError: No module named 'SubmitC4DToDeadline'

The SubmitC4DToDeadline.py script could not be found in the Deadline Repository. Please make sure that the Deadline Client has been installed on this machine, that the Deadline Client bin folder is set in the DEADLINE_PATH environment variable, and that the Deadline Client has been configured to point to a valid Repository.
>>> 

So I figure I can hardcode the repo location on line 55 (note triple slash start)

elif path != "":
    path = str("\\\scala\DeadlineRepository10\submission\Cinema4D\Main" )

but then I get this error

Appending "\\scala\DeadlineRepository10\submission\Cinema4D\Main" to system path to import SubmitC4DToDeadline module
Could not load ConfigParser module, sticky settings will not be loaded/saved
>>> 

But I do get the submission form at the bottom of the ‘Extensions’ menu
image
I only have a trial license so no CLR, may try the export option though

Hey, any news regarding the submission in R23?

Yeah, any news on this? We’re waiting on the updates too. I’ve gone through and tried updating all the submission plugins to Python 3. I can get the job onto the farm with the correct job and plugin parameters. However, we’re getting errors on the farm, and my guess is it has to do with the Cinema4DBatch plugins as I’m seeing this error output in the log:

Error: Cinema 4D startup: Did not receive expected token from Cinema4d (got "") - an unexpected error may have occurred during initialization
   at Deadline.Plugins.PluginWrapper.StartJob(String& outMessage, AbortLevel& abortLevel)
1 Like

Something you can try to get away from some of the python issues is to submit the job with “Use Batch Plugin” disabled. This will run the job from just command line flags, not running any Deadline code through C4D.

1 Like

Whoa, that worked. So what does the batch plugin do?
Thanks.

The batch plugin starts C4D and then communicates with it over a socket so we can leave it running between tasks. This saves time over starting and stopping C4D between tasks, so your total job time will be longer.

But this requires some Deadline code to be run by C4D’s Python. And R23 has moved to Python 3 and Deadline hasn’t - hence the issues.

The guts of it are in /plugins/Cinema4DBatch.py if you’re interested.

Ok, thanks for info. That’s what I thought after looking at the documentation. I did try updating the DeadlineConnect.pyp file but couldn’t get it right away. Good to know that I was on the right track though so maybe I’ll give it another go later. At least for now, I’ve got it working after updating some Python 2 to 3 stuff on the submission plugin and disabling use batch. I think this workflow will hold us over until you release an official update.

Thanks so much.

would you mind sharing what you modified?

The biggest issue comes from mixing up bytes and strings with Python 2 and 3. FYI, I’m no Python expert but here’s what I did to work around the issue.

Inside SubmitC4DToDeadline.py

configparser module is now lowercase.

try:
    import configparser
except ImportError:
    print( "Could not load ConfigParser module, sticky settings will not be loaded/saved" )

So all later references to it also need to be lowercase.
config = configparser.ConfigParser()

Now here’s where a lot of bytes to strings fixes need to be made…

Inside updatePipelineToolStatusLabel function, add str():
if str(statusMessage).startswith( "Error" ):

Inside ConcatenatePipelineSettingsToJob function, remove decode():
jobInfoPath, "--batch-name", batchName ]

Inside WriteInfoFile function, remove b from wb:
with open( filename, "w" ) as fileHandle:

Inside WriteStickySettings function, make sure all values written are strings by adding str():
For example -
config.set( "Sticky", "ExportJob", str(self.GetBool( self.dialogIDs[ "ExportJobID" ] ) ) )
That entire chunk of code for writing stickies needs to be all strings for GetBool, GetLong, etc.

In SubmitJob function, convert this line to a string using str():
if str(line).startswith( "JobID=" ):

In CallDeadlineCommand function, I added the following try decode() section:

if tmpdir:
    try:
        shutil.rmtree(tmpdir)
    except:
        print( 'Failed to remove temp directory: "%s"' % tmpdir )

try:
    output = output.decode()
except (UnicodeDecodeError, AttributeError):
    pass

return output.strip()

And then the last thing was what Justin B mentioned. In the submission dialog, disable the Use Batch Plugin checkbox which you can do in the code as well.

In InitValues function, change this:
initUseBatch = False

Inside DeadlineC4DClient.pyp

In GetRepository function, add this try just before the return:

try:
    path = path.decode()
except (UnicodeDecodeError, AttributeError):
    pass

return path.strip()

And I think that was it. Again, I’m no Python expert so some parts might not be optimal but I essentially tweaked all these lines as the errors came up in the C4D console until it finally worked.

Hope this helps you and I hope Thinkbox can release an official update soon so we can use batch again.

1 Like

Thank you all for your temporary solutions and tips on how to submit jobs with C4D R23. So far the only working method is to manually submit jobs via the Deadline submission interface and without using Batch Mode.
Dear Thinkbox, is there any development in progress for a Python3, R23 plugin? Thank you for your support!

3 Likes

Same here, would like to hear out if there is some ETA or plan for R23/PY3 deadline plugin.
Id be glad to test some early version if possible.
Got the farm already set up with R23 cmd nodes.

1 Like

Now that Deadline is Amazon owned there seems to be a tight lid on the releases schedules etc.

Given that it’s been ages since the plugins have been updated I’d imagine there’ll be a big release of 10.2 or 11 that will have all the new toys and maybe even Python3.

I’ve got my fingers crossed it’ll come free with Amazon Prime, and all Prime members of course get their render delivered before everybody else :wink:

I was wrong 10.1.11.5 released without R23 support

https://docs.thinkboxsoftware.com/products/deadline/10.1/1_User%20Manual/manual/release-notes.html

This is insane, we pay so much for licenses but the support when it comes to new C4D releases is awful. I have this same problem every time a new C4D release comes out. Often we have to wait several months for this to be fixed and it’s such an easy fix! I don’t understand!

2 Likes

image

Jup R23 support would be nice right about now

2 Likes