Skip to content

feat/conda recipe for 3ds Max and Chaos Corona #173

Open
oehmends wants to merge 2 commits intoaws-deadline:mainlinefrom
oehmends:feat/conda-recipe-3dsmax-corona
Open

feat/conda recipe for 3ds Max and Chaos Corona #173
oehmends wants to merge 2 commits intoaws-deadline:mainlinefrom
oehmends:feat/conda-recipe-3dsmax-corona

Conversation

@oehmends
Copy link

@oehmends oehmends commented Jan 18, 2026

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?

  • Reduced worker startup time from ~15 minutes to ~X minutes
  • Expanded supported environments (3ds Max 2025 + Corona)
  • Simplified and standardized setup for Deadline Cloud workers

How was this change tested?

  • Built the conda recipes
  • Registered/used the environments in Deadline Cloud
  • Submitted sample renders and verified startup + completion

Output see log file: log_output_3dsmax-corona_conda.log
Bildschirmfoto 2026-01-18 um 13 38 28

Was this change documented?

  • Updated sample README(s)

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

@oehmends oehmends requested a review from a team as a code owner January 18, 2026 12:31
Signed-off-by: Johannes Oehmen <mail@oehmen.digital>
Signed-off-by: Johannes Oehmen <mail@oehmen.digital>
Comment on lines +92 to +93
- 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.
Copy link
Author

@oehmends oehmends Jan 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please see the reported issue here: aws-deadline/deadline-cloud-for-3ds-max#190

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@leongdl
Copy link
Contributor

leongdl commented Jan 20, 2026

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment is interesting, any reason why?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the builder need to install robocopy?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be 3dsmax.exe?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I understand, some customers have actual GUI licenses, so they share the GUI licenses with deadline and render with 3dsmax.exe

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"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3dsmax.exe?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

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`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or any other instance actually

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have you tried rattler build? We are migrating all of our recipes.

https://github.com/prefix-dev/rattler-build

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Rattler should work on Windows.


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):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).


PowerShell snippet (for convenience if the repo isn’t available):

```powershell
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Author

@oehmends oehmends left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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):
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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"
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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"
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants