Max2024 + Vray7 DBR not finding Vrayspawner2024.exe

Hi everyone,

I’m creating a new concise thread for this issue as original thread/question got buried here:

Issue:
Max2024 + Vray7 DBR job on any render node returns this deadline log error:

Error: Error: V-Ray DBR: V-Ray Spawner executable does not exist: C:\Program Files\Autodesk\3ds Max 2024\vrayspawner2024.exe
at Deadline.Plugins.PluginWrapper.RenderTasks(Task task, String& outMessage, AbortLevel& abortLevel)

  • Deadline version: 10.3.0.10
  • Max2021 Vray5 DBR works perfectly fine

I realise Chaos group changed the installed path from

C:\Program Files\Autodesk\3ds Max 20xx\vrayspawner20xx.exe
to:
C:\ProgramData\Autodesk\ApplicationPlugins\VRay3dsMax20xx\bin\vrayspawner20xx.exe

Adding firewall exclusions didn’t help:

…\bin\vrayspawner2024.exe
…\3ds Max 2024\3dmax.exe

Tried suggestion by Freiraum_FX_GmbH. In repository I went to:

DeadlineRepository10\plugins\VraySpawner\VraySpawner.param

Last entry for 3dsMax was Max2020 so I added:

[VRaySpawnerExecutable_Max2021]
Type=multilinemultifilename
Label=3ds Max 2021 Spawner Executable
Category=V-Ray Spawner Executables for 3ds Max
CategoryOrder=0
CategoryIndex=8
Default=C:\Program Files\Autodesk\3ds Max 2021\vrayspawner2021.exe
Description=The path to the V-Ray Spawner executable file for 3ds Max 2021. Enter alternative paths on separate lines.

[VRaySpawnerExecutable_Max2024]
Type=multilinemultifilename
Label=3ds Max 2024 Spawner Executable
Category=V-Ray Spawner Executables for 3ds Max
CategoryOrder=0
CategoryIndex=9
Default=C:\ProgramData\Autodesk\ApplicationPlugins\VRay3dsMax2024\bin\vrayspawner2024.exe
Description=The path to the V-Ray Spawner executable file for 3ds Max 2024. Enter alternative paths on separate lines.

Problem persists even after restarting the repository PC.

I added the same entries to the VraySpawner.param from Justin_B from a 2023 thread. Path to file:

DeadlineRepository10\custom\plugins\VraySpawner\VraySpawner.param

Still nothing works.
Next, I tried clearing out the dir:

DeadlineRepository10\custom\plugins\VraySpawner

and I refreshed the same modification from Justin_B directly into:

DeadlineRepository10\plugins\VraySpawner

Still nothing! :frowning:

Now I’m looking at the error message more closely:
"...Deadline.Plugins.PluginWrapper..."

There’s no “Wrapper” in plugins but 3dsMax is a wrapper of vray (of sorts)
So I look at:
DeadlineRepository10\plugins\3dsmax\3dsmax.py

Within this python file I find one reference to the above Deadline log error:
"V-Ray Spawner executable does not exist: "

The code:

self.Plugin.LogInfo(self.Plugin.Prefix + "3ds Max executable: %s" % maxRenderExecutable)
            vraySpawnerExecutable = PathUtils.ChangeFilename(maxRenderExecutable, "vrayspawner" + str(version) + ".exe")
            if not os.path.isfile(vraySpawnerExecutable):
                self.Plugin.FailRender(
                    self.Plugin.Prefix + "V-Ray Spawner executable does not exist: " + vraySpawnerExecutable)

Looks like it’s hard coded to build the Vrayspawner path based on the maxRenderExecutable path.
Can anyone suggest if this is where the fix needs to be applied?
I’m not a python specialist, and not quite sure how to work with “PathUtils”!

Thanks!
Graham

Possible solution found:

3dsCmd.py seems to need the modification.
Not 3dsmax.py.

line 1506:

vraySpawnerExecutable = PathUtils.ChangeFilename( maxRenderExecutable, “vrayspawner” + str(version) + “.exe” )

Replace this line with this code:
(Disclaimer: The below code is only a suggested fix with no liability to anyone using it!)

vraySpawnerExecutable = “” #Declare var
if int(str(version)) >= 2022:
# Construct the path dynamically for 2022, 2023, 2024, etc.
vraySpawnerExecutable = r"C:\ProgramData\Autodesk\ApplicationPlugins\VRay3dsMax%s\bin\vrayspawner%s.exe"% (str(version), str(version))
else:
vraySpawnerExecutable = PathUtils.ChangeFilename( maxRenderExecutable, “vrayspawner” + str(version) + “.exe” )

I guess the same modification could go to 3dsmax.py, but I’m not clear when that file gets used by Deadline.

Thanks for this!

I was the author of the original post you referenced - your fix here is much cleaner and easier to implement. I just upgraded our repo to 10.4, and added this fix to both the 3dsmax.py and 3dscmd.py, and it’s working well.

The 3dscmd.py is loaded when a job is submitted from SMTD without the “Use 3dsCmd plugin” box checked. AFAIK, that plugin is deprecated for our use case because all DBR jobs are loaded by Max running in server mode anyway.

And I could be totally misunderstanding the use cases here, so don’t take my word for it. It’s just the workflow that we use.

Anyway, thanks for writing the fix!