feat: add conda recipes for 3ds Max 2025 and Chaos Corona#173
Conversation
Signed-off-by: Johannes Oehmen <mail@oehmen.digital>
Signed-off-by: Johannes Oehmen <mail@oehmen.digital>
53602c4 to
3fd8036
Compare
| - POSIX shells cannot export variable names that start with a digit, so `3DSMAX_EXECUTABLE` cannot be set by the `.sh` activation script. The Windows `.bat` sets it, but bash activation relies on the ADSK-prefixed variables instead. | ||
| - The adaptor’s `executable_handler.py` needs to be hotpatched in a Conda environment before the run to fall back to `ADSK_3DSMAX_EXECUTABLE` / `ADSK_3DSMAX_BATCH_EXE` when `3DSMAX_EXECUTABLE` is absent. Keep this in mind if you update or replace the handler. |
There was a problem hiding this comment.
Please see the reported issue here: aws-deadline/deadline-cloud-for-3ds-max#190
There was a problem hiding this comment.
Yup, responded. We can add a second env variable to support conda.
The reason we have 3dsmax HostConfig installation to begin with was so we can get admin access to SMF. We started with a HostConfig script over conda because of the script above. Customers regardless have to open up the SMF instance.
Kudos and thanks for doing this.
There was a problem hiding this comment.
Adaptor change is tracked in deadline-cloud-for-3ds-max#190 and will land separately. In the meantime this recipe exposes both ADSK_3DSMAX_EXECUTABLE (GUI: 3dsmax.exe) and ADSK_3DSMAX_BATCH_EXE (batch: 3dsmaxbatch.exe), and keeps the legacy 3DSMAX_EXECUTABLE pointed at the batch exe so existing Cloud-Rights-compliant jobs keep working. Updated in d14eac1.
|
Thank you for your contributions, the team and I will take a look. |
| mkdir -p "$INSTALL_DIR" | ||
| cmd <<EOF | ||
| setlocal | ||
| rem Use robocopy without ACL/owner copying to avoid access denied; accept codes 0-7 as success. |
There was a problem hiding this comment.
This comment is interesting, any reason why?
There was a problem hiding this comment.
Robocopy defaults to copying ACLs/owner info, which often fails in conda-build/CI because permissions don’t map cleanly. /COPY:DAT /DCOPY:DAT avoids that so the copy is reliable, and robocopy uses exit codes 0–7 for “success with minor differences,” so we treat those as OK
There was a problem hiding this comment.
Thanks - kept the existing semantics (skip ACL/owner copy, accept exit codes < 8). Expanded the inline comment so the rationale is visible alongside the code in d14eac1.
| cmd <<EOF | ||
| setlocal | ||
| rem Use robocopy without ACL/owner copying to avoid access denied; accept codes 0-7 as success. | ||
| robocopy "$(cygpath -w "$SRC_ROOT")" "$(cygpath -w "$INSTALL_DIR")" /E /COPY:DAT /DCOPY:DAT /R:1 /W:1 /NFL /NDL >nul |
There was a problem hiding this comment.
Does the builder need to install robocopy?
There was a problem hiding this comment.
No. robocopy ships with Windows (in System32) and is available by default in Windows environments, including conda-build on Windows.
There was a problem hiding this comment.
No install step required - robocopy ships with Windows in System32 and is on PATH by default in conda-build on Windows. Added that note inline in d14eac1.
| export ADSK_3DSMAX_LOCATION="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION" | ||
| export ADSK_3DSMAX_PYTHON="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python/python.exe" | ||
| export ADSK_3DSMAX_BATCH_EXE="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/3dsmaxbatch.exe" | ||
| export ADSK_3DSMAX_EXECUTABLE="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/3dsmaxbatch.exe" |
There was a problem hiding this comment.
Should this be 3dsmax.exe?
There was a problem hiding this comment.
No, it uses the the 3dsmaxbatch.exe which is the non-gui variant.
https://help.autodesk.com/view/3DSMAX/2025/ENU/?guid=GUID-0968FF0A-5ADD-454D-B8F6-1983E76A4AF9
There was a problem hiding this comment.
Yeah I understand, some customers have actual GUI licenses, so they share the GUI licenses with deadline and render with 3dsmax.exe
There was a problem hiding this comment.
Updated in d14eac1: ADSK_3DSMAX_EXECUTABLE now points at 3dsmax.exe (GUI) and the new ADSK_3DSMAX_BATCH_EXE points at 3dsmaxbatch.exe. Customers with GUI seats covering their render workload can use the GUI exe; the safe Cloud-Rights default (1 GUI : 10 batch) stays on the legacy 3DSMAX_EXECUTABLE -> 3dsmaxbatch.exe. Adaptor selection between the two will land via deadline-cloud-for-3ds-max#190.
| set "ADSK_3DSMAX_LOCATION=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION" | ||
| set "ADSK_3DSMAX_PYTHON=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python\\python.exe" | ||
| set "ADSK_3DSMAX_BATCH_EXE=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\3dsmaxbatch.exe" | ||
| set "ADSK_3DSMAX_EXECUTABLE=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\3dsmaxbatch.exe" |
There was a problem hiding this comment.
No, it uses the the 3dsmaxbatch.exe which is the non-gui variant.
https://help.autodesk.com/view/3DSMAX/2025/ENU/?guid=GUID-0968FF0A-5ADD-454D-B8F6-1983E76A4AF9
There was a problem hiding this comment.
Same change as the L56 thread - the .bat now sets ADSK_3DSMAX_EXECUTABLE to 3dsmax.exe and ADSK_3DSMAX_BATCH_EXE to 3dsmaxbatch.exe. Legacy 3DSMAX_EXECUTABLE keeps pointing at the batch exe for safe Cloud-Rights defaults. Updated in d14eac1.
| 1. Install or update the AWS CLI v2 from https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html. | ||
| 2. Install or update the Session Manager plugin from https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html. | ||
| 3. Run the following command, using AWS credentials that have suitable permissions, to start the SSM port forwarding. Replace INSTANCE_ID with the one you launched. | ||
| 1. `aws ssm start-session --document-name AWS-StartPortForwardingSession --parameters "localPortNumber=33389,portNumber=3389" --target INSTANCE_ID` |
There was a problem hiding this comment.
Local port can also be 3389 to keep things simple and the same.
| 1. Computer: `localhost:33389` | ||
| 2. User name: `Administrator` | ||
| 5. Enter the password you set for Administrator after you created the instance. You should now have a remote desktop session to your instance. | ||
| 3. Install 3ds Max 2025 on the instance. |
There was a problem hiding this comment.
Or any other instance actually
There was a problem hiding this comment.
Added a note that any current Windows Server AMI with sufficient vCPUs/RAM works - d14eac1.
| 3. Install 3ds Max 2025 on the instance. | ||
| 1. Download the 3ds Max 2025 installer for Windows from Autodesk (for example via Autodesk Access). | ||
| 2. Run the installer on the EC2 instance and complete installation using the default settings. | ||
| 3. Optionally install the `deadline-cloud-for-3ds-max` Python package inside 3ds Max if you want the Deadline Cloud integration available on the workstation you use for archiving. |
There was a problem hiding this comment.
Installing it with 3dsmax and then zipping into a conda is fine, but you will not get the benefit of run time installation that we provide since we release the adapter into our conda channel.
There was a problem hiding this comment.
Good point. The deadline-cloud-for-3ds-max install in step 3.3 is now marked optional and the README explicitly notes that baking it into the archive pins the adaptor at archive-creation time and skips the runtime upgrade path the conda channel provides. For production fleets, prefer letting the channel deliver the adaptor at job-init time. d14eac1.
| 5. Upload the zip to your private S3 bucket. You can use a PowerShell command like | ||
| `Write-S3Object -BucketName MY_BUCKET_NAME -Key Autodesk_3dsMax_2025_Windows_installation.zip -File Autodesk_3dsMax_2025_Windows_installation.zip`. | ||
| 6. Terminate the EC2 instance. | ||
| 7. Download the zip file to the `conda_recipes/archive_files` directory in your git clone of the |
There was a problem hiding this comment.
Have you tried rattler build? We are migrating all of our recipes.
There was a problem hiding this comment.
Good call. Essentially I re-used a lot of the methodology of the maya-2025 recipe which used conda-build for the Win-build I'll check and test it.
There was a problem hiding this comment.
Thanks! Rattler should work on Windows.
There was a problem hiding this comment.
Tracking rattler-build migration as a follow-up to keep this PR scoped. Mentioned that explicitly in the README under the new "Build tool" section in d14eac1. Will open a separate branch/PR with the rattler translation once we have testing capacity.
|
|
||
| Run that PowerShell script during fleet/bootstrap setup to ensure the required runtimes are available on the worker. | ||
|
|
||
| PowerShell snippet (for convenience if the repo isn’t available): |
There was a problem hiding this comment.
Question - this installation does not install adsklicense service. While I know and understand Autodesk cloud rights, I think we have to past a disclaimer here. Its an important part of providing the sample and usage legitimately.
There was a problem hiding this comment.
Right. If you have an example for it other than mentioning it in the recipe/meta.yaml I'd be happy for your input. See
There was a problem hiding this comment.
Yup - we have a standard messaging regarding cloud rates on our user guide to link to the auto desk documentation:
https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Subscription-Benefits-FAQ-Cloud-Rights.html
And we had our blog here:
https://aws.amazon.com/blogs/media/how-to-use-3ds-max-with-service-managed-fleets-on-aws-deadline-cloud/
Note: Autodesk 3ds Max has its own licensing requirements separate from AWS. Confirm you have the appropriate licenses before proceeding. See additional details on [Autodesk Cloud Rights for 3ds Max](https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Subscription-Benefits-FAQ-Cloud-Rights.html).
There was a problem hiding this comment.
Added the standard Cloud Rights disclaimer at the top of the README using your wording, linking to the Autodesk FAQ. d14eac1.
|
|
||
| PowerShell snippet (for convenience if the repo isn’t available): | ||
|
|
||
| ```powershell |
There was a problem hiding this comment.
This is a host config script, maybe move this section to 3dsmax_conda_host_config.ps1?
Something is odd too, we have done internal Conda tests and I remember we had to add some Windows Registries (auto desk) related for this to work properly. I'm surprised it is not in the sample.
There was a problem hiding this comment.
It definitely makes sense to put this into a separate file to make the Readme lighter.
I'd be curious which Registry keys you had to add. If it's anything Version (2025/2026) specific, it would only make sense to set those in the conda environment itself.
There was a problem hiding this comment.
I don't have the old prototypes handy, let me search for it. It was some time ago when we encountered challenges with 3dsmax + Conda.
There was a problem hiding this comment.
Removed the inline host-config block entirely in d14eac1. Per the Autodesk 3ds Max 2025 SDK requirements, 3ds Max 2025 needs .NET Framework 4.8 - which Microsoft confirms is included by default on current Windows Server versions, including Windows Server 2022 used by Deadline Cloud SMF workers. The earlier .NET 8 SDK snippet was unnecessary. If you can dig up the registry-key prototypes you mentioned, happy to fold them into a separate host-config script.
oehmends
left a comment
There was a problem hiding this comment.
Happy to amend the Readme and rattler-build. Let me know if there are further questions!
| 5. Upload the zip to your private S3 bucket. You can use a PowerShell command like | ||
| `Write-S3Object -BucketName MY_BUCKET_NAME -Key Autodesk_3dsMax_2025_Windows_installation.zip -File Autodesk_3dsMax_2025_Windows_installation.zip`. | ||
| 6. Terminate the EC2 instance. | ||
| 7. Download the zip file to the `conda_recipes/archive_files` directory in your git clone of the |
There was a problem hiding this comment.
Good call. Essentially I re-used a lot of the methodology of the maya-2025 recipe which used conda-build for the Win-build I'll check and test it.
|
|
||
| Run that PowerShell script during fleet/bootstrap setup to ensure the required runtimes are available on the worker. | ||
|
|
||
| PowerShell snippet (for convenience if the repo isn’t available): |
There was a problem hiding this comment.
Right. If you have an example for it other than mentioning it in the recipe/meta.yaml I'd be happy for your input. See
|
|
||
| PowerShell snippet (for convenience if the repo isn’t available): | ||
|
|
||
| ```powershell |
There was a problem hiding this comment.
It definitely makes sense to put this into a separate file to make the Readme lighter.
I'd be curious which Registry keys you had to add. If it's anything Version (2025/2026) specific, it would only make sense to set those in the conda environment itself.
| mkdir -p "$INSTALL_DIR" | ||
| cmd <<EOF | ||
| setlocal | ||
| rem Use robocopy without ACL/owner copying to avoid access denied; accept codes 0-7 as success. |
There was a problem hiding this comment.
Robocopy defaults to copying ACLs/owner info, which often fails in conda-build/CI because permissions don’t map cleanly. /COPY:DAT /DCOPY:DAT avoids that so the copy is reliable, and robocopy uses exit codes 0–7 for “success with minor differences,” so we treat those as OK
| cmd <<EOF | ||
| setlocal | ||
| rem Use robocopy without ACL/owner copying to avoid access denied; accept codes 0-7 as success. | ||
| robocopy "$(cygpath -w "$SRC_ROOT")" "$(cygpath -w "$INSTALL_DIR")" /E /COPY:DAT /DCOPY:DAT /R:1 /W:1 /NFL /NDL >nul |
There was a problem hiding this comment.
No. robocopy ships with Windows (in System32) and is available by default in Windows environments, including conda-build on Windows.
| export ADSK_3DSMAX_LOCATION="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION" | ||
| export ADSK_3DSMAX_PYTHON="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/Python/python.exe" | ||
| export ADSK_3DSMAX_BATCH_EXE="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/3dsmaxbatch.exe" | ||
| export ADSK_3DSMAX_EXECUTABLE="\$CONDA_PREFIX/Autodesk/3ds Max $MAX_VERSION/3dsmaxbatch.exe" |
There was a problem hiding this comment.
No, it uses the the 3dsmaxbatch.exe which is the non-gui variant.
https://help.autodesk.com/view/3DSMAX/2025/ENU/?guid=GUID-0968FF0A-5ADD-454D-B8F6-1983E76A4AF9
| set "ADSK_3DSMAX_LOCATION=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION" | ||
| set "ADSK_3DSMAX_PYTHON=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\Python\\python.exe" | ||
| set "ADSK_3DSMAX_BATCH_EXE=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\3dsmaxbatch.exe" | ||
| set "ADSK_3DSMAX_EXECUTABLE=%CONDA_PREFIX%\\Autodesk\\3ds Max $MAX_VERSION\\3dsmaxbatch.exe" |
There was a problem hiding this comment.
No, it uses the the 3dsmaxbatch.exe which is the non-gui variant.
https://help.autodesk.com/view/3DSMAX/2025/ENU/?guid=GUID-0968FF0A-5ADD-454D-B8F6-1983E76A4AF9
…edback Apply review feedback from PR aws-deadline#173: - Split GUI vs batch executables: ADSK_3DSMAX_EXECUTABLE -> 3dsmax.exe, ADSK_3DSMAX_BATCH_EXE -> 3dsmaxbatch.exe. The legacy 3DSMAX_EXECUTABLE stays mapped to 3dsmaxbatch.exe as the safe Cloud Rights default until deadline-cloud-for-3ds-max#190 lands. - Remove the obsolete .NET 8 SDK host config snippet. 3ds Max 2025 needs .NET Framework 4.8 which ships with Windows Server 2022 by default. - Add Autodesk Cloud Rights disclaimer linking to the FAQ. - Add Chaos EULA note to the corona recipe README. - SSM port forward uses 3389 on both ends per Leon`s suggestion. - Clarify that any current Windows Server AMI with sufficient resources works for archive creation. - Note that baking deadline-cloud-for-3ds-max into the archive skips the conda-channel runtime upgrade path. - Document rattler-build migration as a follow-up. - Fix corona version mismatch: README and meta.yaml description now consistently say 13.2. - Add inline comment on robocopy/Windows availability and exit-code 0-7 semantics in build_win.sh.
|
@leongdl Pushed d14eac1 addressing the open review threads. Highlights: Executable env vars (your L56 / L70 question)
README
Host config / .NET runtime (your L62 / L64 question)
Corona recipe
Branch is now up to date with |
…edback Apply review feedback from PR aws-deadline#173: - Split GUI vs batch executables: ADSK_3DSMAX_EXECUTABLE -> 3dsmax.exe, ADSK_3DSMAX_BATCH_EXE -> 3dsmaxbatch.exe. The legacy 3DSMAX_EXECUTABLE stays mapped to 3dsmaxbatch.exe as the safe Cloud Rights default until deadline-cloud-for-3ds-max#190 lands. - Remove the obsolete .NET 8 SDK host config snippet. 3ds Max 2025 needs .NET Framework 4.8 which ships with Windows Server 2022 by default. - Add Autodesk Cloud Rights disclaimer linking to the FAQ. - Add Chaos EULA note to the corona recipe README. - SSM port forward uses 3389 on both ends per Leon`s suggestion. - Clarify that any current Windows Server AMI with sufficient resources works for archive creation. - Note that baking deadline-cloud-for-3ds-max into the archive skips the conda-channel runtime upgrade path. - Document rattler-build migration as a follow-up. - Fix corona version mismatch: README and meta.yaml description now consistently say 13.2. - Add inline comment on robocopy/Windows availability and exit-code 0-7 semantics in build_win.sh. Signed-off-by: Johannes Oehmen <mail@oehmen.digital>
d14eac1 to
f404d1c
Compare
What was the problem/requirement? (What/Why)
Rendering 3ds Max Corona on AWS Deadline Cloud workers relied on host configuration scripts, leading to long startup times (~15-20 minutes). We also needed packaged environments for additional versions/renderers (3ds Max 2025 and Corona) to simplify deployment.
What was the solution? (How)
Added conda-ready environment recipes for 3ds Max 2025 and Corona renderer so workers can initialize quickly without host configuration scripts.
What is the impact of this change?
How was this change tested?
Output see log file: log_output_3dsmax-corona_conda.log

Was this change documented?
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.